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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1b0
mov esi, esp
lea edx, [ebp + 8]
mov eax, dword [0x646040]
xor eax, ebp
mov dword [esi + 0x1a8], eax
mov eax, dword [edx]
mov dword [esi + 0x30], eax
mov eax, dword [edx + 4]
movzx eax, byte [eax + 9]
and eax, 0x7f
mov bl, 1
mov dword [esi + 0xc], ebx
cmp eax, 1
mov dword [esi + 0x14], ecx
jne 0x507340
mov eax, dword [ecx + 8]
mov ebx, 2
lock xadd dword [eax], ebx
test bl, 1
jne 0x5074d3
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x140], xmm0
movdqa xmmword [esi + 0x190], xmm0
movdqa xmmword [esi + 0x180], xmm0
movdqa xmmword [esi + 0x170], xmm0
movdqa xmmword [esi + 0x160], xmm0
movdqa xmmword [esi + 0x150], xmm0
xor eax, eax
mov byte [esi + 0x140], al
mov byte [esi + 0x198], al
mov dword [esi + 0x4c], 0x102
mov byte [esi + 0x50], al
mov edi, dword [edx + 4]
mov dword [esi + 0x70], edi
add edi, 0x10
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x507430
cmp byte [esi + 0xc], 0
je 0x5074f4
lea edx, [ebp + 8]
mov ebx, dword [edx + 4]
mov eax, dword [ebx]
mov edi, dword [eax + 0x20]
cmp edi, 0x54a970
jne 0x5072c6
xor eax, eax
dec eax
mov dword [esi + 0xd4], eax
mov dword [esi + 0xd0], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xc0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
movdqa xmmword [esi + 0xa0], xmm0
movdqa xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0x80], xmm0
mov eax, dword [ebx + 0x30]
lea edi, [ebx + 0x38]
cmp eax, dword [ebx + 0x34]
je 0x50773c
lea ecx, [ebx + 0x28]
mov dword [esi + 8], ecx
mov ecx, dword [ebx + 0x3c]
cmp ecx, dword [ebx + 0x40]
jne 0x5076f3
cmp dword [ebx + 0x2c], eax
jb 0x507651
mov ecx, dword [ebx + 0x28]
imul eax, eax, 0x58
movups xmm0, xmmword [ecx + eax]
movaps xmmword [esi + 0x80], xmm0
movups xmm0, xmmword [ecx + eax + 0x10]
movdqu xmm1, xmmword [ecx + eax + 0x20]
movaps xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0xa0], xmm1
movups xmm0, xmmword [ecx + eax + 0x30]
movaps xmmword [esi + 0xb0], xmm0
movdqu xmm0, xmmword [ecx + eax + 0x39]
movdqu xmmword [esi + 0xb9], xmm0
mov edx, dword [ecx + eax + 0x50]
mov dword [esi + 0xd0], edx
mov dword [ecx + eax + 0x50], 0
mov ecx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x30]
lea edx, [eax + 1]
cmp ecx, edx
jb 0x507654
cmp ecx, eax
jb 0x507657
cmp eax, 0x7fffffff
je 0x50765a
mov ecx, dword [esi + 8]
mov ecx, dword [ecx]
imul eax, eax, 0x58
mov edi, dword [ecx + eax + 0x50]
test edi, edi
jne 0x5073a3
mov eax, dword [ebx + 0x2c]
mov edx, dword [ebx + 0x30]
inc edx
xor ecx, ecx
cmp edx, eax
cmove edx, ecx
mov dword [ebx + 0x30], edx
cmp eax, 5
jae 0x5073c0
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x3c]
mov edx, dword [ebx + 0x40]
cmp eax, dword [ebx + 0x34]
jne 0x507277
cmp ecx, edx
lea edx, [ebp + 8]
jne 0x50755a
movaps xmm0, xmmword [esi + 0x80]
movaps xmm1, xmmword [esi + 0x90]
movaps xmmword [esi + 0xe0], xmm0
movaps xmmword [esi + 0xf0], xmm1
movaps xmm0, xmmword [esi + 0xa0]
movaps xmmword [esi + 0x100], xmm0
movaps xmm0, xmmword [esi + 0xb0]
movaps xmmword [esi + 0x110], xmm0
movdqu xmm0, xmmword [esi + 0xb9]
movdqu xmmword [esi + 0x119], xmm0
mov eax, dword [esi + 0xd0]
mov dword [esi + 0x130], eax
mov dword [esi + 0xd0], 0
mov byte [esi + 0x138], 1
mov al, 1
mov cl, byte [esi + 0x198]
cmp cl, al
je 0x507679
test cl, cl
mov ebx, dword [esi + 0x14]
jne 0x50769e
movaps xmm0, xmmword [esi + 0xe0]
movaps xmm1, xmmword [esi + 0xf0]
movaps xmmword [esi + 0x140], xmm0
movaps xmmword [esi + 0x150], xmm1
movaps xmm0, xmmword [esi + 0x100]
movaps xmmword [esi + 0x160], xmm0
movaps xmm0, xmmword [esi + 0x110]
movaps xmmword [esi + 0x170], xmm0
movdqu xmm0, xmmword [esi + 0x119]
movdqu xmmword [esi + 0x179], xmm0
mov eax, dword [esi + 0x130]
mov dword [esi + 0x190], eax
mov dword [esi + 0x130], 0
mov byte [esi + 0x198], 1
cmp byte [esi + 0x138], 1
jne 0x5069f2
mov edi, dword [esi + 0x130]
test edi, edi
jne 0x507363
cmp byte [esi + 0xc], 0
je 0x506a06
mov edi, dword [esi + 0xd0]
test edi, edi
jne 0x507383
mov eax, dword [esi + 0x70]
mov ecx, dword [eax + 8]
mov dword [esi + 0x4c], ecx
mov cl, byte [eax + 0xc]
mov byte [esi + 0x50], cl
test eax, eax
je 0x506a26
add eax, 0x10
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea edx, [ebp + 8]
cmp byte [esi + 0x198], 1
jne 0x506f54
mov eax, dword [esi + 0x158]
or eax, dword [esi + 0x15c]
jne 0x507401
mov dword [esi + 0x2c], esp
push eax
sub esp, 0x5c
mov ecx, esp
cmp byte [esi + 0x198], 0
je 0x50764c
mov edi, dword [edx + 4]
movaps xmm0, xmmword [esi + 0x140]
movups xmmword [ecx], xmm0
movaps xmm0, xmmword [esi + 0x150]
movaps xmm1, xmmword [esi + 0x160]
movups xmmword [ecx + 0x10], xmm0
movups xmmword [ecx + 0x20], xmm1
movaps xmm0, xmmword [esi + 0x170]
movups xmmword [ecx + 0x30], xmm0
movdqu xmm0, xmmword [esi + 0x179]
movdqu xmmword [ecx + 0x39], xmm0
mov eax, dword [esi + 0x190]
mov dword [ecx + 0x50], eax
mov dword [esi + 0x190], 0
mov dword [ecx + 0x58], edi
lea eax, [esi + 0x4c]
mov dword [esi + 8], ecx
mov dword [ecx + 0x5c], eax
mov ecx, dword [ebx]
mov ebx, dword [ecx + 4]
cmp ebx, 0x55f5b0
jne 0x506d49
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x70], xmm0
mov ecx, dword [edi]
mov ebx, dword [ecx]
cmp ebx, 0x563a10
jne 0x506ced
xor edx, edx
cmp dword [edi + 0x1c], 2
mov ecx, dword [edi + 0x24]
mov ebx, 0
cmove ebx, ecx
cmove ecx, edx
mov edx, dword [edi + 0x20]
mov dword [esi + 0x70], edx
add edi, 0x5c
mov dword [esi + 0x74], edi
mov dword [esi + 0x78], ebx
mov dword [esi + 0x7c], ecx
mov ecx, dword [esi + 8]
mov dword [esi + 0x18], eax
mov dl, byte [eax + 1]
mov byte [esi + 0x28], dl
test dl, 0x7f
je 0x506d2b
mov eax, dword [ecx + 0x58]
mov dword [esi + 0x10], eax
mov eax, dword [eax + 0x1c]
mov dword [esi + 0x24], eax
mov ecx, dword [0x64984c]
mov ebx, dword fs:[0x2c]
mov ecx, dword [ebx + ecx*4]
lea eax, [ecx + 0x154]
lea edx, [ecx + 0x150]
mov ecx, dword [esi + 0x70]
mov dword [esi + 0x20], ecx
mov ecx, dword [eax]
mov dword [esi + 0x44], ecx
mov ecx, dword [edx]
cmp ecx, 0xffffffff
je 0x50743c
mov dword [esi + 0x40], ecx
mov ecx, dword [0x64984c]
mov edi, dword fs:[0x2c]
mov ecx, dword [edi + ecx*4]
mov bl, byte [ecx + 0x158]
mov byte [esi + 0x1e], bl
mov bl, byte [ecx + 0x159]
mov byte [esi + 0x1f], bl
xor edi, edi
inc edi
lock xadd dword [0x659cec], edi
cmp dword [esi + 0x24], 2
mov dword [eax], edi
sete byte [ecx + 0x158]
mov edi, dword [esi + 0x20]
mov dword [edx], edi
xor ebx, ebx
mov byte [ecx + 0x159], bl
mov edi, dword [esi + 0x18]
mov bl, byte [edi]
mov bh, byte [ecx + 0x144]
mov byte [esi + 0x1d], bh
mov dword [esi + 0x3c], ecx
mov byte [ecx + 0x144], bl
xor ecx, ecx
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x60], xmm0
mov byte [esi + 0x60], cl
mov byte [esi + 0x6c], cl
mov ebx, dword [esi + 0x74]
test ebx, ebx
jne 0x506be0
lea ebx, [esi + 0x60]
mov dword [ebx], ecx
mov dword [ebx + 4], ecx
mov dword [ebx + 8], ecx
mov byte [ebx + 0xc], 1
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], eax
mov edx, dword [0x64984c]
mov edi, dword fs:[0x2c]
mov ecx, dword [edi + edx*4]
mov eax, dword [ecx + 0x140]
mov dword [esi + 0x38], eax
mov dword [esi + 0x34], ecx
mov dword [ecx + 0x140], ebx
xor edx, edx
dec edx
mov dword [esi + 0x54], edx
mov dword [esi + 0x5c], edx
mov dword [esi + 0x58], edx
xor ebx, ebx
mov byte [esi + 0x54], bl
mov byte [esi + 0x5c], bl
movdqa xmmword [esi + 0xe0], xmm0
mov dword [esi + 0xf0], edx
mov byte [esi + 0xe0], bl
mov byte [esi + 0xf0], bl
mov edx, dword [esi + 0x7c]
test edx, edx
jne 0x506e16
mov edx, dword [esi + 0x78]
test edx, edx
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
je 0x506e6b
xor ecx, ecx
inc ecx
mov eax, ecx
lock xadd dword [edx + 4], eax
cmp eax, 0x7fffffff
je 0x507754
mov dword [esi + 0xe0], edx
mov eax, dword [0x64984c]
mov edi, dword fs:[0x2c]
mov edi, dword [edi + eax*4]
mov eax, dword [edi + 0x98]
mov dword [esi + 0xe4], eax
lock xadd dword [edx + 4], ecx
cmp ecx, 0x7fffffff
je 0x507757
lea eax, [esi + 0xf0]
mov ecx, dword [eax - 0xc]
mov dword [esi + 0x10], ecx
lea ebx, [esi + 0xe8]
mov dword [ebx], edx
mov edx, dword [0x64984c]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + edx*4]
mov edx, dword [ecx + 0x9c]
mov dword [ebx + 4], edx
mov dword [ecx + 0x9c], ebx
lea ecx, [edi + 0x98]
lea edx, [esi + 0xe0]
mov dword [ecx], edx
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x507796
mov ecx, dword [esi + 0x14]
jmp 0x506e5c
cmp ebx, 0x563d30
jne 0x506d10
xor ecx, ecx
inc ecx
lock xadd dword [0x659ce8], ecx
mov dword [esi + 0x70], ecx
xor ecx, ecx
mov dword [esi + 0x74], ecx
mov dword [esi + 0x78], ecx
jmp 0x506b02
mov ecx, ebx
call dword [0x6401dc]
lea eax, [esi + 0x70]
mov ecx, edi
push eax
call ebx
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x5c]
jmp 0x506b08
mov ecx, dword [0x64984c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
inc dword [ecx + 0x14c]
mov ecx, dword [esi + 8]
jmp 0x506b1a
mov ecx, ebx
call dword [0x6401dc]
mov edi, dword [esi + 0x14]
mov ecx, edi
call ebx
mov ebx, edi
lea edx, [ebp + 8]
jmp 0x506f51
test edx, edx
mov ebx, dword [esi + 8]
jne 0x506e8c
lea edi, [esi + 0x70]
mov edx, ebx
push edi
push dword [esi + 0x10]
push eax
call fcn.00403cc0
jmp 0x506e89
mov eax, dword [0x64984c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esi + 0xe4]
mov edi, dword [esi + 0xe8]
mov dword [eax + 0x98], ecx
mov ecx, dword [esi + 0xec]
mov dword [eax + 0x9c], ecx
test edi, edi
je 0x506dbc
lock dec dword [edi + 4]
je 0x5077b2
mov edi, dword [esi + 0xe0]
test edi, edi
mov ecx, dword [esi + 8]
je 0x506eb0
lock dec dword [edi + 4]
jne 0x506eb0
jmp 0x5077cd
mov eax, dword [0x64984c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esi + 8]
dec dword [eax + 0x14c]
jmp 0x506f46
cmp edx, 2
jne 0x506d62
lea edi, [esi + 0x70]
mov ebx, dword [esi + 8]
mov edx, ebx
push edi
push dword [esi + 0x10]
push eax
call fcn.00507cb0
jmp 0x506e89
xor eax, eax
inc eax
lock xadd dword [edx + 4], eax
cmp eax, 0x7fffffff
mov ecx, dword [esi + 0x14]
je 0x507676
lea eax, [esi + 0x5c]
mov dword [eax - 8], edx
mov edi, dword [0x64984c]
mov edx, dword fs:[0x2c]
mov edx, dword [edx + edi*4]
mov ebx, dword [edx + 0x9c]
mov dword [eax - 4], ebx
lea edi, [esi + 0x54]
mov dword [edx + 0x9c], edi
test ebx, ebx
jne 0x5076e7
mov byte [eax], 1
mov eax, dword [esi + 8]
mov edx, dword [eax + 0x58]
mov dword [esi + 0x10], edx
mov eax, dword [eax + 0x5c]
movzx edx, byte [eax + 1]
and edx, 0x7f
cmp edx, 1
jne 0x506df9
lea edi, [esi + 0x70]
mov ebx, dword [esi + 8]
mov edx, ebx
push edi
push dword [esi + 0x10]
push eax
call fcn.00507ad0
add esp, 0xc
mov edi, dword [ebx + 0x50]
mov dword [ebx + 0x50], 0
test edi, edi
mov ecx, ebx
jne 0x50744c
cmp byte [esi + 0xf0], 1
lea edx, [ebp + 8]
je 0x506d81
mov eax, dword [esi + 0x34]
lea ebx, [eax + 0x140]
cmp byte [esi + 0x5c], 1
jne 0x506eef
mov edi, dword [esi + 0x54]
mov eax, dword [esi + 0x58]
mov ecx, dword [0x64984c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
lea edx, [ebp + 8]
mov dword [ecx + 0x9c], eax
mov ecx, dword [esi + 8]
test edi, edi
je 0x506eef
lock dec dword [edi + 4]
je 0x507770
mov eax, dword [esi + 0x38]
mov dword [ebx], eax
cmp byte [esi + 0x6c], 1
jne 0x506f05
mov edi, dword [esi + 0x60]
test edi, edi
jne 0x507478
mov eax, dword [esi + 0x24]
mov edi, dword [esi + 0x44]
mov dword [eax], edi
mov eax, dword [esi + 0x20]
mov edi, dword [esi + 0x40]
mov dword [eax], edi
mov edi, dword [esi + 0x3c]
lea eax, [edi + 0x144]
mov bl, byte [esi + 0x1d]
mov byte [eax], bl
lea eax, [edi + 0x158]
mov bl, byte [esi + 0x1e]
mov byte [eax], bl
lea eax, [edi + 0x159]
mov bl, byte [esi + 0x1f]
mov byte [eax], bl
test byte [esi + 0x28], 0x7f
mov ebx, dword [esi + 0x14]
je 0x506ddc
mov edi, dword [ecx + 0x50]
test edi, edi
jne 0x507062
mov esp, dword [esi + 0x2c]
cmp byte [esi + 0xc], 0
je 0x506f7b
mov eax, dword [edx + 4]
mov al, byte [eax + 9]
and al, 0x7f
cmp al, 1
jne 0x506f7b
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
je 0x507523
mov edi, dword [edx + 4]
mov eax, dword [edi]
mov ebx, dword [eax + 0x24]
cmp ebx, 0x5638d0
jne 0x50709d
mov ebx, edi
add ebx, 0x10
je 0x506fa5
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5074c7
mov byte [edi + 0x58], 0
mov eax, dword [edi + 0x30]
mov cl, 1
cmp eax, dword [edi + 0x34]
jne 0x506fd2
mov eax, dword [edi + 0x3c]
cmp eax, dword [edi + 0x40]
jne 0x506fd2
mov byte [edi + 0x59], 0
mov edi, dword [edi + 0x24]
test edi, edi
je 0x506fd0
lock dec dword [edi + 4]
je 0x50716b
xor ecx, ecx
mov edi, ecx
test ebx, ebx
je 0x506fdf
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, edi
test al, al
jne 0x50714d
xor eax, eax
mov ecx, dword [esi + 0x30]
mov dword [ecx], eax
mov dword [ecx + 4], eax
lea edx, [ebp + 8]
cmp byte [esi + 0x198], 1
jne 0x507009
mov edi, dword [esi + 0x190]
test edi, edi
jne 0x507049
mov edi, dword [edx + 4]
test edi, edi
jne 0x50719e
mov dword [edx + 4], 0
test edi, edi
jne 0x5071bf
mov ecx, dword [edx + 4]
test ecx, ecx
jne 0x50765d
mov edi, dword [edx]
mov ecx, dword [esi + 0x1a8]
xor ecx, ebp
call fcn.00567335
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
lock dec dword [edi]
jne 0x507009
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
lea edx, [ebp + 8]
add esp, 4
jmp 0x507009
lock dec dword [edi]
jne 0x506f51
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
lea edx, [ebp + 8]
add esp, 4
jmp 0x506f51
mov ecx, ebx
call dword [0x6401dc]
mov ecx, edi
push 0
call ebx
test al, al
je 0x506fe9
jmp 0x50714d
cmp ebx, 0x563f20
jne 0x507082
lea ebx, [edi + 0x20]
push ebx
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x50746c
mov dword [esi + 0xc], ebx
mov ebx, 0xfffffffe
lock xadd dword [edi + 0x24], ebx
xor eax, eax
xchg dword [edi + 0x28], eax
test eax, eax
jne 0x507185
test bl, 1
jne 0x5076d9
mov ecx, dword [edi + 0x40]
test ecx, ecx
je 0x5076d0
xor eax, eax
inc eax
lock xadd dword [ecx], eax
test eax, eax
jle 0x5076d3
mov dword [esi + 0x14], ecx
cmp eax, 0x7fffffff
je 0x5076d6
shr ebx, 1
movzx eax, bl
mov dword [esi + 8], eax
lea ebx, [eax - 1]
mov eax, dword [edi + 0x40]
mov ecx, dword [eax + 4]
call dword [0x6401dc]
push ebx
mov edi, dword [esi + 0x14]
push edi
call ecx
mov ecx, edi
add esp, 8
mov edi, eax
lock dec dword [ecx]
je 0x50775a
cmp edi, 0x20
mov ebx, 0x20
cmovb ebx, edi
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp ebx, dword [esi + 8]
jb 0x506fe9
lea edx, [ebp + 8]
mov eax, dword [edx + 4]
mov edi, dword [esi + 0x30]
mov dword [edi], eax
xor eax, eax
mov dword [edx + 4], eax
mov ecx, dword [edx + 8]
mov dword [edx + 8], eax
mov dword [edi + 4], ecx
jmp 0x506ff6
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dword [esi + 0xc], ecx
call dword [0x6401dc]
mov ecx, edi
push 1
call dword [esi + 0xc]
jmp 0x506fd0
cmp byte [edi + 0x38], 0
je 0x50784d
lea eax, [edi + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_WakeConditionVariable]
jmp 0x5070d1
mov ebx, dword [edx + 8]
test ebx, ebx
je 0x507014
mov dword [edx + 4], 0
mov al, byte [edi + 9]
and al, 0x7f
cmp al, 2
je 0x5071da
lock dec dword [ebx + 0xc]
je 0x5071f0
lock dec dword [edi + 4]
jne 0x507023
mov ecx, edi
push 1
call fcn.00504eb0
lea edx, [ebp + 8]
jmp 0x507023
mov eax, dword [ebx + 8]
mov ecx, 0xfffffffe
lock xadd dword [eax], ecx
cmp ecx, 3
jne 0x5071b9
jmp 0x5075eb
lea eax, [ebx + 0x14]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x50792d
lea eax, [ebx + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x50793b
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x14], eax
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x10], eax
pxor xmm0, xmm0
mov eax, dword [ebx + 0x2c]
mov ecx, dword [ebx + 0x30]
mov dword [esi + 8], ecx
movdqu xmmword [ebx + 0x24], xmm0
mov ebx, eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esi + 8]
cmp ebx, eax
jne 0x50785c
push 0
push dword [esi + 0x14]
push 0x637600
call fcn.0050e100
add esp, 0xc
lea edx, [ebp + 8]
jmp 0x50701b
cmp ecx, edx
jne 0x5077eb
cmp dword [ebx + 0x2c], eax
lea edx, [ebp + 8]
jb 0x507751
mov ecx, dword [ebx + 0x28]
imul eax, eax, 0x58
movq xmm0, qword [ecx + eax + 0x10]
movq qword [ebx + 0x48], xmm0
pxor xmm0, xmm0
movq qword [ebx + 0x50], xmm0
jmp 0x5068f6
xor ecx, ecx
inc ecx
lock xadd dword [eax], ecx
test ecx, ecx
jle 0x507793
cmp ecx, 0x7fffffff
jne 0x5072d5
jmp 0x507790
cmp edi, 0x563ec0
jne 0x507321
mov eax, dword [ebx + 0x48]
test eax, eax
jne 0x5072aa
movups xmm0, xmmword [ebx + 0x50]
movaps xmmword [esi + 0x80], xmm0
movups xmm0, xmmword [ebx + 0x60]
movdqu xmm1, xmmword [ebx + 0x70]
movaps xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0xa0], xmm1
movups xmm0, xmmword [ebx + 0x80]
movaps xmmword [esi + 0xb0], xmm0
movdqu xmm0, xmmword [ebx + 0x89]
movdqu xmmword [esi + 0xb9], xmm0
mov dword [esi + 0xd0], eax
jmp 0x5068f6
mov ecx, edi
call dword [0x6401dc]
lea eax, [esi + 0x70]
lea edx, [esi + 0x80]
mov ecx, ebx
push eax
push edx
call edi
lea edx, [ebp + 8]
jmp 0x5068f6
cmp eax, 2
je 0x506746
test eax, eax
jne 0x5077a5
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test al, 1
sete al
mov dword [esi + 0xc], eax
jmp 0x506746
lock dec dword [edi]
jne 0x5069f2
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
lea edx, [ebp + 8]
add esp, 4
jmp 0x5069f2
lock dec dword [edi]
jne 0x506a06
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
lea edx, [ebp + 8]
add esp, 4
jmp 0x506a06
lock dec dword [edi]
jne 0x5068bf
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
add esp, 4
jmp 0x5068bf
mov edi, dword [ebx + 0x34]
cmp edx, edi
cmova ecx, eax
sub ecx, edx
add ecx, edi
dec eax
mov edx, eax
sub edx, ecx
cmp edx, ecx
jb 0x5068d9
mov edi, ecx
shr edi, 2
add edi, ecx
cmp edi, 4
mov edx, 3
cmovae edx, edi
cmp edx, eax
jae 0x5068d9
mov ecx, dword [esi + 8]
push edx
call fcn.004246c0
jmp 0x5068d9
mov eax, dword [ebx + 8]
mov eax, dword [eax]
test al, 1
je 0x506a45
lea ecx, [esi + 0x190]
mov eax, dword [ecx]
mov dword [ecx], 0
mov dword [esi + 0x48], eax
push eax
call fcn.00591330
lea edx, [ebp + 8]
add esp, 4
jmp 0x506a45
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5067aa
xor ecx, ecx
inc ecx
lock xadd dword [0x659ce8], ecx
jmp 0x506b58
lock dec dword [edi]
jne 0x506ea0
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
mov ecx, dword [esi + 8]
add esp, 4
jmp 0x506ea0
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5070b7
mov edx, dword [esi + 0x64]
mov eax, edi
cmp edx, edi
je 0x5074b0
mov ebx, edx
add ebx, 0xfffffff4
je 0x507846
mov ecx, dword [edx - 4]
test ecx, ecx
je 0x5074a7
add edx, 0xfffffff8
mov dword [esi + 0x10], edx
call dword [0x6401dc]
push dword [esi + 0x10]
call ecx
add esp, 4
mov edx, ebx
cmp ebx, edi
jne 0x507483
mov eax, dword [esi + 0x60]
mov dword [esi + 0x64], edi
push eax
call fcn.00564050
add esp, 4
lea edx, [ebp + 8]
mov ecx, dword [esi + 8]
jmp 0x506f05
push ebx
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x506fa5
mov eax, dword [ecx + 8]
mov edi, 0xfffffffe
lock xadd dword [eax], edi
cmp edi, 3
je 0x507619
mov dword [esi + 0xc], 0
jmp 0x506746
lea eax, [ebp + 8]
mov ebx, dword [eax + 4]
mov eax, dword [ebx]
mov edi, dword [eax + 0x2c]
mov ecx, edi
call dword [0x6401dc]
lea eax, [esi + 0x70]
lea edx, [esi + 0xe0]
mov ecx, ebx
push eax
push edx
mov ebx, edx
call edi
lea edx, [ebp + 8]
mov al, byte [ebx + 0x58]
jmp 0x50695d
lea edi, [ebx + 0x34]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x507949
mov ecx, dword [ebx + 0x38]
call fcn.00509410
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea edx, [ebp + 8]
jmp 0x506f7b
mov eax, dword [ecx + 0x18]
mov dword [esi + 0x10], eax
mov edx, dword [ecx + 0x1c]
mov dword [esi + 8], edx
jmp 0x5075b4
cmp dword [ecx + 0x28], 0
jne 0x50754c
mov edx, dword [ecx + 0x24]
mov edi, dword [ecx + 0x20]
mov dword [esi + 0x10], edi
add edi, 1
mov dword [esi + 8], edx
adc edx, 0x80000000
cmp edi, 2
mov edi, dword [ecx + 0x18]
sbb edx, 0
mov eax, dword [ecx + 0x1c]
jb 0x5079c2
add edi, dword [esi + 0x10]
mov dword [esi + 0x18], edi
adc eax, dword [esi + 8]
seto byte [esi + 8]
mov edx, eax
sar edx, 0x1f
cmp byte [esi + 8], 0
lea edi, [edx - 0x80000000]
cmove edx, dword [esi + 0x18]
mov dword [esi + 0x10], edx
cmp byte [esi + 8], 0
cmove edi, eax
mov dword [esi + 8], edi
movss xmm0, dword [esi + 0x10]
movss xmm1, dword [esi + 8]
unpcklps xmm0, xmm1
movlps qword [ebx + 0x48], xmm0
cmp dword [ecx + 0x28], 1
je 0x507955
mov eax, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x1c]
movd xmm0, eax
movd xmm1, ecx
punpckldq xmm0, xmm1
movq qword [ebx + 0x50], xmm0
jmp 0x507338
lea eax, [ebx + 0x34]
mov dword [esi + 0xc], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x507a05
mov ecx, dword [ebx + 0x38]
call fcn.00509410
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lea edx, [ebp + 8]
jmp 0x5071b9
lea edi, [ecx + 0x34]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x507a31
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x38]
call fcn.00509410
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esi + 0xc], 0
lea edx, [ebp + 8]
jmp 0x506746
call fcn.005912b0
int3
int3
int3
int3
lock dec dword [ecx + 4]
jne 0x50702e
push 1
call fcn.00504eb0
lea edx, [ebp + 8]
jmp 0x50702e
int3
test cl, cl
mov ebx, dword [esi + 0x14]
je 0x5069db
lea eax, [esi + 0xe0]
lea ecx, [esi + 0x140]
push eax
call fcn.00563850
lea edx, [ebp + 8]
jmp 0x5069db
mov edi, dword [esi + 0x190]
test edi, edi
jne 0x5076ba
mov byte [esi + 0x198], 0
lea edx, [ebp + 8]
mov ebx, dword [esi + 0x14]
jmp 0x5069db
lock dec dword [edi]
jne 0x5076a8
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
add esp, 4
jmp 0x5076a8
int3
int3
int3
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x506fe9
cmp dword [ebx], 0
je 0x506e5c
int3
lea eax, [esi + 0xe0]
push eax
call fcn.004ff2f0
mov eax, dword [ebx + 0x30]
cmp dword [ebx + 0x2c], eax
jb 0x507a13
mov ecx, dword [esi + 8]
mov ecx, dword [ecx]
imul eax, eax, 0x58
mov edx, dword [esi + 0xe0]
cmp edx, dword [ecx + eax + 0x10]
mov edx, dword [esi + 0xe4]
sbb edx, dword [ecx + eax + 0x14]
jl 0x50773c
lea eax, [esi + 0x80]
mov ecx, ebx
push eax
call fcn.005d1c10
jmp 0x5068d9
lea eax, [esi + 0x80]
mov ecx, edi
push 0
push eax
call fcn.005d24b0
jmp 0x5068d9
int3
int3
int3
mov ebx, ecx
mov ecx, dword [ecx + 8]
call dword [0x6401dc]
push ebx
call ecx
add esp, 4
jmp 0x507130
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dword [esi + 0x10], ecx
call dword [0x6401dc]
mov ecx, edi
push 1
call dword [esi + 0x10]
mov ecx, dword [esi + 8]
lea edx, [ebp + 8]
jmp 0x506eef
int3
int3
cmp dword [ecx], 0
mov ecx, dword [esi + 0x14]
je 0x506e5c
int3
call fcn.005938f0
lea edx, [ebp + 8]
jmp 0x5074e8
mov eax, dword [edi]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x6401dc]
mov ecx, edi
push 1
call ebx
lea edx, [ebp + 8]
jmp 0x506dbc
mov eax, dword [edi]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x6401dc]
mov ecx, edi
push 1
call ebx
mov ecx, dword [esi + 8]
lea edx, [ebp + 8]
jmp 0x506eb0
lea eax, [esi + 0xe0]
push eax
call fcn.004ff2f0
mov eax, dword [ebx + 0x30]
cmp dword [ebx + 0x2c], eax
jb 0x507a16
mov ecx, dword [ebx + 0x28]
imul edx, eax, 0x58
mov eax, dword [ecx + edx + 0x10]
mov ecx, dword [ecx + edx + 0x14]
mov edi, dword [esi + 0xe0]
mov dword [esi + 8], edi
mov edx, dword [esi + 0xe4]
cmp edi, eax
mov edi, edx
sbb edi, ecx
cmovl eax, dword [esi + 8]
cmovl ecx, edx
movd xmm0, ecx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [ebx + 0x48], xmm1
lea edx, [ebp + 8]
jmp 0x50729c
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
jmp 0x507852
push str....._third_partylibc_srcincludeoptional:790:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x624e92
call fcn.005912b0
mov dword [esi + 0xc], ebx
cmp dword [esi + 0x10], ebx
jb 0x507a19
mov eax, dword [esi + 0x14]
mov eax, dword [eax + ebx*4]
mov dword [esi + 0x18], eax
test eax, eax
je 0x507a1c
mov eax, dword [esi + 0x14]
mov dword [eax + ebx*4], 0
mov eax, dword [esi + 0x18]
mov ecx, dword [eax + 4]
call dword [0x6401dc]
push dword [esi + 0x18]
call ecx
add esp, 4
mov eax, dword [esi + 0x18]
lock dec dword [eax]
jne 0x5078b3
mov eax, dword [esi + 0x18]
mov ecx, dword [eax + 8]
call dword [0x6401dc]
push dword [esi + 0x18]
call ecx
add esp, 4
inc ebx
cmp ebx, dword [esi + 0x10]
mov eax, 0
cmove ebx, eax
cmp ebx, dword [esi + 8]
jne 0x50785f
mov eax, dword [esi + 0xc]
cmp dword [esi + 8], eax
jbe 0x507a3d
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 8]
jb 0x507a1f
mov eax, dword [esi + 0xc]
cmp eax, dword [esi + 8]
jg 0x507a22
mov eax, dword [esi + 8]
shl eax, 2
mov ecx, dword [esi + 0xc]
shl ecx, 2
mov dword [esi + 8], eax
jmp 0x507919
mov ecx, dword [ebx + 8]
call dword [0x6401dc]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0xc]
add ecx, 4
mov eax, dword [esi + 8]
cmp eax, ecx
je 0x50725d
mov dword [esi + 0xc], ecx
mov eax, dword [esi + 0x14]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x507908
lock dec dword [ebx]
je 0x5078f9
jmp 0x507908
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x507205
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x507229
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x507535
mov eax, dword [ecx + 0x24]
mov edx, dword [ecx + 0x20]
mov dword [esi + 8], edx
add edx, 1
mov edi, eax
adc edi, 0x80000000
cmp edx, 2
sbb edi, 0
mov edi, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
jae 0x50799b
xor edi, dword [esi + 8]
xor edx, eax
or edx, edi
je 0x507a25
mov ecx, 0x80000000
xor edx, edx
inc edx
shr eax, 0x1f
not eax
add eax, edx
adc ecx, 0xffffffff
jmp 0x5075d5
sub edi, dword [esi + 8]
sbb edx, eax
seto cl
mov byte [esi + 8], cl
mov eax, edx
sar eax, 0x1f
test cl, cl
lea ecx, [eax - 0x80000000]
cmove eax, edi
cmp byte [esi + 8], 0
cmove ecx, edx
jmp 0x5075d5
mov edx, edi
mov dword [esi + 0x18], edi
xor edi, edi
inc edi
add edx, edi
mov edi, eax
adc edi, 0x80000000
mov dword [esi + 0x2c], edi
mov dword [esi + 0x28], 0
xor edi, edi
inc edi
cmp edi, edx
mov edx, dword [esi + 0x28]
sbb edx, dword [esi + 0x2c]
setb dl
mov edi, dword [esi + 0x18]
xor edi, dword [esi + 0x10]
xor eax, dword [esi + 8]
or eax, edi
sete dh
or dh, dl
jne 0x5075b4
int3
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x507600
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x50762b
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jb 0x507a28
jl 0x507a2b
je 0x507a80
shl dword [esi + 0x10], 2
shl dword [esi + 0xc], 2
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
mov ebx, dword [eax + ecx]
test ebx, ebx
je 0x507a72
lock dec dword [ebx]
jne 0x507a72
mov ecx, dword [ebx + 8]
call dword [0x6401dc]
push ebx
call ecx
add esp, 4
mov ecx, dword [esi + 0xc]
add ecx, 4
mov dword [esi + 0xc], ecx
cmp dword [esi + 0x10], ecx
jne 0x507a51
cmp dword [esi + 8], 0
js 0x507a2e
mov eax, dword [esi + 8]
je 0x50725d
shl eax, 2
xor ebx, ebx
mov dword [esi + 8], eax
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + ebx]
test ecx, ecx
je 0x507abc
mov eax, ecx
lock dec dword [ecx]
jne 0x507abc
mov dword [esi + 0xc], eax
mov ecx, dword [eax + 8]
call dword [0x6401dc]
push dword [esi + 0xc]
call ecx
add esp, 4
add ebx, 4
mov eax, dword [esi + 8]
cmp eax, ebx
jne 0x507a94
jmp 0x50725d