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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x7c
test ecx, ecx
je 0x4a6bc9
lea eax, [ecx + 8]
mov edi, edx
mov ebx, ecx
mov dword [esp + 0x1c], eax
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x4a6b27
xor edx, edx
movzx eax, byte [ebx + 0xc]
test al, al
jne 0x4a6b3d
cmp dword [ebx + 0x30], 0x3b9aca00
mov dword [esp], ebx
je 0x4a67dc
mov dword [esp + 0x58], edi
mov edi, edx
call fcn.00711110
mov ebp, dword [ebx + 0x28]
mov ebx, dword [ebx + 0x2c]
mov esi, edx
cmp eax, ebp
sbb edx, ebx
mov edx, edi
mov edi, dword [esp + 0x58]
jb 0x4a69db
xor eax, ebp
xor esi, ebx
or esi, eax
jne 0x4a67d2
mov eax, dword [esp]
cmp ecx, dword [eax + 0x30]
jb 0x4a69db
mov ebx, dword [esp]
mov dword [ebx + 0x30], 0x3b9aca00
cmp dword [ebx + 0x10], 0
je 0x4a69db
mov ebx, dword [esp]
add dword [ebx + 0x14], edi
cmp dword [ebx + 0x20], 0x3b9aca00
jne 0x4a6baf
mov ecx, dword [ebx + 0x38]
mov ebp, edx
mov edx, 1
xor eax, eax
lock cmpxchg dword [ecx + 8], edx
test eax, eax
je 0x4a6a0c
cmp eax, 4
jne 0x4a6841
lea ecx, [esp + 0x20]
lea edx, [esp + 4]
mov word [esp + 4], 0xb01
call fcn.00475730
movzx eax, byte [esp + 0x20]
cmp eax, 4
je 0x4a6a3d
cmp al, 3
jne 0x4a6bd1
mov dl, 3
mov al, 9
movsd xmm0, qword [esp + 0x38]
mov esi, dword [esp + 0x40]
mov byte [esp + 0x20], dl
mov byte [esp + 0x21], al
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edi
movsd qword [esp + 0x70], xmm0
mov dword [esp + 0x78], esi
movsd qword [esp + 0x2c], xmm0
mov dword [esp + 0x34], esi
mov eax, dword [0x94bccc]
cmp eax, 2
jae 0x4a6999
movzx eax, byte [0x94a7c8]
test al, al
je 0x4a6999
movzx eax, al
cmp eax, 1
je 0x4a68b7
cmp eax, 2
je 0x4a68fb
mov ecx, 0x94a7c0
call fcn.007d3740
test al, al
je 0x4a6999
movzx eax, al
cmp eax, 2
je 0x4a68fb
mov eax, dword [0x94a7c0]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x4a6999
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x4a68eb
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 0x4a6999
mov ecx, dword [0x94a7c0]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4a6cb1
mov esi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
mov dword [esp + 4], 0x837388
mov dword [esp + 8], 1
mov dword [esp + 0x14], 0
lea eax, [ecx + 0x1c]
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], edx
lea edx, [esp + 0x20]
movlps qword [esp + 0x4c], xmm0
mov dword [esp + 0x54], 0
mov dword [esp + 0x5c], edx
lea edx, [esp + 0x5c]
mov dword [esp + 0x60], 0x4822f0
mov dword [esp + 0xc], edx
lea edx, [esp + 0x44]
mov dword [esp + 0x10], 1
mov dword [esp + 0x64], edx
lea edx, [esp + 4]
mov dword [esp + 0x68], edx
lea edx, [esp + 0x64]
mov dword [esp + 0x6c], 0x836938
mov dword [esp + 0x38], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x3c], 1
mov dword [esp + 0x40], eax
call fcn.007587f0
movzx eax, byte [esp + 0x20]
mov edx, ebp
lea ecx, [eax - 2]
cmp ecx, 2
jb 0x4a6baf
test eax, eax
je 0x4a6baf
cmp eax, 1
jne 0x4a6b67
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x34]
push dword [esp + 0x30]
push dword [esp + 0x30]
push eax
call dword [ecx + 0xc]
mov edx, ebp
add esp, 0xc
jmp 0x4a6baf
test dl, dl
jne 0x4a6bbf
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
je 0x4a6bbf
call fcn.007d1b30
test al, al
jne 0x4a6bbf
mov eax, dword [esp]
mov byte [eax + 0xc], 1
jmp 0x4a6bbf
mov eax, dword [ecx + 0x14]
nop
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x14], edx
jne 0x4a6a10
test eax, eax
jne 0x4a6a3d
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 0x10]
mov dword [ecx + 0xc], 0
lock and dword [ecx + 0x14], 0xfffffffd
test eax, eax
je 0x4a6a3d
push edx
call dword [eax + 4]
add esp, 4
call fcn.00711110
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x20], ecx
mov edx, ebp
mov eax, dword [0x94bccc]
test eax, eax
jne 0x4a6baf
movzx eax, byte [0x94a7d4]
test al, al
je 0x4a6baf
movzx ecx, al
cmp ecx, 1
je 0x4a6a7c
cmp ecx, 2
jne 0x4a6c98
mov al, 2
mov ecx, dword [0x94a7cc]
movzx edx, al
call fcn.007580e0
mov edx, ebp
test al, al
je 0x4a6baf
mov ecx, dword [0x94a7cc]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4a6cc5
mov esi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp + 4], 0x83735c
mov dword [esp + 8], 1
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0x93d1f8
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edx
lea edx, [esp + 0x20]
movlps qword [esp + 0x28], xmm0
mov dword [esp + 0x30], 0
mov dword [esp + 0x38], edx
lea edx, [esp + 4]
mov dword [esp + 0x3c], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x40], 0x836938
mov dword [esp + 0x44], edx
lea edx, [esp + 0x44]
mov dword [esp + 0x48], 1
mov dword [esp + 0x4c], eax
call fcn.007587f0
jmp 0x4a6bad
call fcn.007d1b30
mov edx, eax
xor dl, 1
movzx eax, byte [ebx + 0xc]
test al, al
je 0x4a678f
mov eax, dword [esp + 0x1c]
mov ecx, 0x93b384
mov dword [esp + 4], eax
mov byte [esp + 8], dl
lea eax, [esp + 4]
mov edx, 0x2b
push 0x837234
push 0x835fb8
push eax
call fcn.007c1f60
cmp byte [esp + 0x24], 3
jne 0x4a6baf
mov esi, dword [esp + 0x28]
mov edi, dword [esi]
mov ebx, dword [esi + 4]
push edi
call dword [ebx]
add esp, 4
cmp dword [ebx + 4], 0
je 0x4a6b9b
cmp dword [ebx + 8], 9
jb 0x4a6b8c
mov edi, dword [edi - 4]
push edi
push 0
push dword [0x94bf18]
call dword [sym.imp.kernel32.dll_HeapFree]
push esi
push 0
push dword [0x94bf18]
call dword [sym.imp.kernel32.dll_HeapFree]
mov ebx, dword [esp]
mov edx, ebp
test dl, dl
jne 0x4a6bbf
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x4a6c27
push dword [esp + 0x1c]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
add esp, 0x7c
pop esi
pop edi
pop ebx
pop ebp
ret
movsd xmm1, qword [esp + 0x29]
mov byte [esp + 4], al
movsd xmm0, qword [esp + 0x21]
test eax, eax
movsd qword [esp + 0xd], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esp + 5], xmm0
movsd qword [esp + 0x14], xmm1
je 0x4a6c36
cmp eax, 1
jne 0x4a6c47
mov eax, dword [esp + 0x18]
movsd xmm0, qword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dl, 1
mov dword [esp + 0x4c], eax
movzx eax, byte [esp + 5]
movsd qword [esp + 0x44], xmm0
jmp 0x4a6c7f
call fcn.007d1b30
test al, al
jne 0x4a6bbf
mov byte [ebx + 0xc], 1
jmp 0x4a6bbf
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
movzx eax, byte [esp + 5]
xor edx, edx
jmp 0x4a6c7f
movzx eax, byte [esp + 5]
cmp dword [esp + 8], 0x80000000
jne 0x4a6c61
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
jmp 0x4a6c79
lea esi, [esp + 8]
movzx edx, al
lea ecx, [esp + 0x44]
push esi
call fcn.00482210
add esp, 4
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
mov dl, 4
mov esi, dword [esp + 0x4c]
movsd xmm0, qword [esp + 0x44]
mov dword [esp + 0x40], esi
movsd qword [esp + 0x38], xmm0
jmp 0x4a6845
mov ecx, 0x94a7cc
call fcn.007d3740
mov edx, ebp
test al, al
jne 0x4a6a7c
jmp 0x4a6baf
mov ecx, 0x8a6758
mov edx, 0x22
push 0x837364
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x837340
call fcn.007c2000
int3