Function at 0x101a1860
Capabilities:
Check if file exists
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x3c
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [ebp - 0x10], eax
test ebx, ebx
je 0x101a1d38
test esi, esi
je 0x101a1e27
cmp esi, 0x7fe00001
jb 0x101a18a5
xor edi, edi
test dl, 1
jne 0x101a1d22
push esi
call fcn.101e3c80
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x44], 0xffffffff
mov eax, ebx
and eax, 0xffe00000
mov edx, ebx
shr edx, 9
and edx, 0xfe0
lea edi, [eax + edx]
add edi, 0x1000
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
movzx eax, byte [eax + edx + 0x101e]
mov edx, eax
shl eax, 5
mov dword [ebp - 0x2c], edi
sub edi, eax
neg edx
mov dword [ebp - 0x24], edx
mov eax, edi
and eax, 0xfffff000
mov eax, dword [eax]
mov dword [ebp - 0x30], eax
lea esi, [eax + 8]
mov dword [ebp - 0x40], 1
mov dword [ebp - 0x38], 0
push esi
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a194a
mov ecx, dword [ebp - 0x40]
mov eax, ecx
test ecx, ecx
jle 0x101a1926
pause
add eax, 0xffffffff
jne 0x101a1918
mov eax, dword [ebp - 0x38]
add eax, ecx
jmp 0x101a1929
mov eax, dword [ebp - 0x38]
add ecx, ecx
cmp ecx, 0x40
mov edx, 0x40
cmovge ecx, edx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x38], eax
cmp eax, 0x3e8
jl 0x101a1904
push esi
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov edx, dword [ebp - 0x24]
shl edx, 5
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx + edx + 0x11], 0
jne 0x101a2019
mov eax, dword [ecx + edx + 8]
add eax, 0xc
mov eax, dword [eax]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x24], edx
mov eax, dword [ecx + edx + 8]
cmp byte [eax + 0x10], 0
je 0x101a2021
push esi
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov ebx, dword [ebp + 0x10]
bsr eax, ebx
xor eax, 0xffffffe0
mov cl, byte [eax + 0x10264201]
mov esi, ebx
shr esi, cl
and esi, 7
mov edx, dword [eax*4 + str.SharedMemory.MapBlockedForSecurity]
and edx, ebx
lea esi, [esi + eax*8]
add esi, 0x108
cmp edx, 1
sbb esi, 0xffffffff
movzx esi, word [esi + esi + 0x10263fcc]
shl esi, 5
mov ebx, dword [ebp - 0x30]
cmp byte [ebx + esi + 0x20], 0
mov dword [ebp - 0x48], edi
je 0x101a204d
mov esi, dword [ebx + esi + 0x1c]
mov edi, dword [ebp - 0x2c]
movzx ebx, byte [edi + 0x1e]
shl ebx, 5
neg ebx
mov ebx, dword [edi + ebx + 8]
cmp esi, dword [ebx + 0xc]
jne 0x101a1a0a
mov eax, dword [ebp - 0x24]
add eax, edi
add eax, 0x11
cmp byte [eax], 0
mov ecx, dword [ebp + 0xc]
je 0x101a1b78
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp - 0x48]
mov dword [edx + 0x20], eax
mov dword [ebp - 0x24], ecx
jmp 0x101a1d1f
mov esi, dword [ebp + 0x10]
shr esi, cl
and esi, 7
lea eax, [esi + eax*8]
add eax, 0x108
cmp edx, 1
sbb eax, 0xffffffff
movzx edi, word [eax + eax + 0x10263fcc]
mov eax, dword [ebp + 8]
test al, 4
jne 0x101a1ad9
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x18], 0xffffffff
mov ecx, dword [ebp - 0x28]
cmp byte [ecx], 2
jne 0x101a1a53
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a2441
cmp byte [ecx + 2], 0
je 0x101a2453
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a229b
cmp ebx, 2
jb 0x101a22ab
add dword [ebx + 0x310], 1
adc dword [ebx + 0x314], 0
cmp di, 0x31
jae 0x101a22eb
cmp dword [ebx + edi*8], 0
je 0x101a23d9
add dword [ebx + 0x318], 1
adc dword [ebx + 0x31c], 0
mov edx, dword [ebx + edi*8]
mov eax, dword [edx]
test eax, eax
je 0x101a1b80
mov ecx, eax
not ecx
cmp dword [edx + 4], ecx
jne 0x101a2b55
bswap eax
prefetcht0 byte [eax]
jmp 0x101a1b82
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x18], 0xffffffff
mov ecx, dword [ebp - 0x28]
cmp byte [ecx], 2
jne 0x101a1af9
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a24c3
cmp byte [ecx + 2], 0
je 0x101a24d5
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a22bf
cmp ebx, 2
jb 0x101a22cf
add dword [ebx + 0x310], 1
adc dword [ebx + 0x314], 0
cmp di, 0x31
jae 0x101a2362
cmp dword [ebx + edi*8], 0
je 0x101a240d
add dword [ebx + 0x318], 1
adc dword [ebx + 0x31c], 0
mov edx, dword [ebx + edi*8]
mov eax, dword [edx]
test eax, eax
je 0x101a1bb0
mov ecx, eax
not ecx
cmp dword [edx + 4], ecx
jne 0x101a2b55
bswap eax
prefetcht0 byte [eax]
jmp 0x101a1bb2
mov dword [ebp - 0x24], ecx
jmp 0x101a1d1f
bswap eax
add byte [ebx + edi*8 + 4], 0xff
mov dword [ebx + edi*8], eax
movzx eax, word [ebx + edi*8 + 6]
mov dword [ebp - 0x18], eax
sub dword [ebx + 0x308], eax
test edx, edx
mov ebx, dword [ebp + 8]
je 0x101a2307
mov edi, dword [ebp - 0x18]
test bl, 2
je 0x101a1bdf
jmp 0x101a257e
bswap eax
add byte [ebx + edi*8 + 4], 0xff
mov dword [ebx + edi*8], eax
movzx eax, word [ebx + edi*8 + 6]
mov dword [ebp - 0x18], eax
sub dword [ebx + 0x308], eax
test edx, edx
je 0x101a237e
mov edi, dword [ebp - 0x18]
mov ebx, dword [ebp + 8]
test bl, 2
jne 0x101a257e
mov ecx, dword [ebp + 0x10]
test edx, edx
je 0x101a1d0f
mov eax, dword [ebp - 0x44]
cmp eax, ecx
cmova eax, ecx
push eax
mov eax, dword [ebp + 0xc]
mov esi, eax
push eax
mov dword [ebp - 0x24], edx
push edx
call fcn.10208400
add esp, 0xc
prefetcht0 byte [esi]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x3c]
movzx eax, byte [eax + ecx + 0x101e]
mov ecx, eax
neg ecx
mov dword [ebp - 0x30], ecx
shl eax, 5
mov edx, dword [ebp - 0x2c]
mov esi, edx
sub esi, eax
prefetcht0 byte [esi]
mov eax, esi
and eax, 0xfffff000
mov edi, dword [eax]
cmp byte [edi], 2
je 0x101a20b7
mov dword [ebp - 0x3c], esi
cmp byte [edi + 2], 0
mov ecx, edi
je 0x101a21c2
mov eax, dword [ebp - 0x30]
shl eax, 5
mov edi, dword [edx + eax + 8]
lea edx, [ecx + 0x10]
cmp edx, edi
ja 0x101a21c2
lea eax, [ecx + 0x1110]
cmp eax, edi
jb 0x101a21c2
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x28], ecx
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a21a8
cmp ebx, 2
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x34]
jb 0x101a21c2
sub edi, eax
sar edi, 5
add dword [ebx + 0x338], 1
adc dword [ebx + 0x33c], 0
cmp edi, 0x30
ja 0x101a21b4
mov eax, dword [ebx + edi*8]
bswap eax
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
not eax
mov dword [ecx + 4], eax
mov dword [ebx + edi*8], ecx
add byte [ebx + edi*8 + 4], 1
movzx eax, word [ebx + edi*8 + 6]
add dword [ebx + 0x308], eax
add dword [ebx + 0x340], 1
adc dword [ebx + 0x344], 0
mov al, byte [ebx + edi*8 + 5]
cmp byte [ebx + edi*8 + 4], al
ja 0x101a2285
mov al, byte [ebx + 0x30c]
test al, 1
je 0x101a1d1f
mov ecx, ebx
call fcn.101a2dd0
jmp 0x101a1d1f
mov dword [ebp - 0x24], 0
test bl, 1
je 0x101a2a06
mov edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10205d16
mov eax, edi
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
test dl, 4
mov dword [ebp - 0x28], ecx
mov eax, 0x20
mov ecx, 0x20
jne 0x101a1f47
test esi, esi
je 0x101a1d58
bsr ecx, esi
xor ecx, 0x1f
sub eax, ecx
mov cl, byte [eax + 0x102641e0]
mov edx, esi
shr edx, cl
and edx, 7
mov ecx, dword [eax*4 + 0x10264204]
and ecx, esi
lea eax, [edx + eax*8]
cmp ecx, 1
sbb eax, 0xffffffff
movzx edi, word [eax + eax + 0x10263fcc]
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x18], 0xffffffff
mov ecx, dword [ebp - 0x28]
cmp byte [ecx], 2
jne 0x101a1da1
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a2a0c
cmp byte [ecx + 2], 0
je 0x101a2a1e
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a2835
cmp ebx, 2
jb 0x101a2845
add dword [ebx + 0x310], 1
adc dword [ebx + 0x314], 0
cmp di, 0x31
jae 0x101a288a
cmp dword [ebx + edi*8], 0
je 0x101a299e
add dword [ebx + 0x318], 1
adc dword [ebx + 0x31c], 0
mov esi, dword [ebx + edi*8]
mov eax, dword [esi]
test eax, eax
je 0x101a2061
mov ecx, eax
not ecx
cmp dword [esi + 4], ecx
jne 0x101a2b55
bswap eax
prefetcht0 byte [eax]
jmp 0x101a2063
prefetcht0 byte [ebx]
mov edi, ebx
and edi, 0xffe00000
mov eax, ebx
shr eax, 9
and eax, 0xfe0
lea ecx, [edi + eax]
add ecx, 0x1000
movzx eax, byte [edi + eax + 0x101e]
mov edx, eax
neg edx
mov dword [ebp - 0x2c], edx
shl eax, 5
mov dword [ebp - 0x24], ecx
sub ecx, eax
prefetcht0 byte [ecx]
mov dword [ebp - 0x34], ecx
mov eax, ecx
and eax, 0xfffff000
mov ebx, dword [eax]
cmp byte [ebx], 2
je 0x101a25b8
cmp byte [ebx + 2], 0
je 0x101a2734
mov eax, dword [ebp - 0x2c]
shl eax, 5
mov ecx, dword [ebp - 0x24]
mov esi, dword [ecx + eax + 8]
lea ecx, [ebx + 0x10]
cmp ecx, esi
ja 0x101a2734
lea eax, [ebx + 0x1110]
cmp eax, esi
jb 0x101a2734
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x30], ebx
mov edi, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov ebx, eax
push edi
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov edi, eax
test ebx, ebx
jne 0x101a26ad
cmp edi, 2
mov ebx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x28]
jb 0x101a2734
sub esi, eax
sar esi, 5
add dword [edi + 0x338], 1
adc dword [edi + 0x33c], 0
cmp esi, 0x30
mov ecx, dword [ebp + 0xc]
ja 0x101a2726
mov eax, dword [edi + esi*8]
bswap eax
mov dword [ecx], eax
not eax
mov dword [ecx + 4], eax
mov dword [edi + esi*8], ecx
add byte [edi + esi*8 + 4], 1
movzx eax, word [edi + esi*8 + 6]
add dword [edi + 0x308], eax
add dword [edi + 0x340], 1
adc dword [edi + 0x344], 0
mov al, byte [edi + esi*8 + 5]
cmp byte [edi + esi*8 + 4], al
ja 0x101a2801
mov al, byte [edi + 0x30c]
test al, 1
jne 0x101a2817
xor edi, edi
jmp 0x101a1d22
test esi, esi
je 0x101a1f51
bsr ecx, esi
xor ecx, 0x1f
sub eax, ecx
mov cl, byte [eax + 0x102641e0]
mov edx, esi
shr edx, cl
and edx, 7
mov ecx, dword [eax*4 + 0x10264204]
and ecx, esi
lea eax, [edx + eax*8]
cmp ecx, 1
sbb eax, 0xffffffff
movzx edi, word [eax + eax + 0x10263fcc]
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x18], 0xffffffff
mov ecx, dword [ebp - 0x28]
cmp byte [ecx], 2
jne 0x101a1f9a
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a2ab9
cmp byte [ecx + 2], 0
je 0x101a2acb
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a285e
cmp ebx, 2
jb 0x101a286e
add dword [ebx + 0x310], 1
adc dword [ebx + 0x314], 0
cmp di, 0x31
jae 0x101a2911
cmp dword [ebx + edi*8], 0
je 0x101a29d2
add dword [ebx + 0x318], 1
adc dword [ebx + 0x31c], 0
mov esi, dword [ebx + edi*8]
mov eax, dword [esi]
test eax, eax
je 0x101a2082
mov ecx, eax
not ecx
cmp dword [esi + 4], ecx
jne 0x101a2b55
bswap eax
prefetcht0 byte [eax]
jmp 0x101a2084
lea eax, [edi + 0x20]
jmp 0x101a1965
mov ecx, dword [ebp - 0x30]
mov edx, edi
push dword [ebp + 0x10]
call fcn.101a2c60
add esp, 4
mov byte [ebp - 0x38], al
push esi
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
cmp byte [ebp - 0x38], 0
je 0x101a1982
mov dword [ebp - 0x24], ebx
jmp 0x101a1d1f
mov esi, dword [ebp + 0x10]
add esi, 0xfff
and esi, 0xfffff000
jmp 0x101a19d0
bswap eax
add byte [ebx + edi*8 + 4], 0xff
mov dword [ebx + edi*8], eax
movzx eax, word [ebx + edi*8 + 6]
mov dword [ebp - 0x18], eax
sub dword [ebx + 0x308], eax
test esi, esi
jne 0x101a20a2
jmp 0x101a28a6
bswap eax
add byte [ebx + edi*8 + 4], 0xff
mov dword [ebx + edi*8], eax
movzx eax, word [ebx + edi*8 + 6]
mov dword [ebp - 0x18], eax
sub dword [ebx + 0x308], eax
test esi, esi
je 0x101a292d
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp + 8]
test al, 2
jne 0x101a259d
mov edi, esi
jmp 0x101a1d22
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a2b76
mov ecx, dword [ebp - 0x30]
shl ecx, 5
mov eax, dword [edx + ecx + 8]
lea edx, [edi + 0x10]
cmp edx, eax
mov edx, dword [ebp - 0x2c]
ja 0x101a1c3c
lea edx, [edi + 0x1110]
cmp edx, eax
mov edx, dword [ebp - 0x2c]
jb 0x101a1c3c
cmp byte [edx + ecx + 0x11], 0
jne 0x101a2b83
lea ecx, [eax + 0xc]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx]
mov dword [ebp - 0x30], eax
mov eax, dword [0x102b3228]
and eax, 1
shl eax, 0xf
mov ecx, dword [ebp - 0x34]
lea esi, [eax + ecx]
lea edi, [eax + ecx]
add edi, 0x4000
mov eax, dword [ebp + 0xc]
mov ebx, eax
shr ebx, 8
and ebx, 0x1fff
mov ecx, eax
shr cl, 3
mov edx, 1
shl edx, cl
mov eax, dword [esi + ebx*4 + 0x4000]
mov ecx, eax
or ecx, edx
lock cmpxchg dword [edi + ebx*4], ecx
jne 0x101a2141
test eax, edx
jne 0x101a2b71
mov eax, dword [ebp - 0x2c]
mov edi, eax
lock xadd dword [0x102b3220], edi
add edi, eax
mov esi, dword [0x102b3224]
cmp byte [0x102b323d], 1
jne 0x101a2182
push dword [ebp - 0x30]
push 0
push dword [ebp + 0xc]
call fcn.10208980
add esp, 0xc
cmp edi, esi
jbe 0x101a1d1f
mov al, byte [0x102b323c]
test al, al
jne 0x101a1d1f
mov ecx, 0x102b3220
push 1
call fcn.101a1290
jmp 0x101a1d1f
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
jmp 0x101a1c93
add dword [ebx + 0x348], 1
adc dword [ebx + 0x34c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
add ecx, 8
mov esi, 1
xor edi, edi
mov ebx, ecx
push ecx
mov eax, dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
call eax
test al, al
jne 0x101a2215
mov eax, esi
test esi, esi
jle 0x101a21f7
pause
add eax, 0xffffffff
jne 0x101a21ee
add edi, esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp edi, 0x3e8
mov ecx, ebx
jl 0x101a21da
push ecx
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov esi, dword [ebp - 0x3c]
mov eax, dword [esi]
mov ecx, dword [ebp + 0xc]
cmp eax, ecx
mov edx, dword [ebp - 0x2c]
je 0x101a2c43
bswap eax
mov dword [ecx], eax
not eax
mov dword [ecx + 4], eax
mov dword [esi], ecx
mov ecx, dword [ebp - 0x30]
shl ecx, 5
movzx eax, word [edx + ecx + 0xc]
add eax, 0xffffffff
mov word [edx + ecx + 0xc], ax
test ax, ax
jle 0x101a2825
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], esi
push ebx
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
test esi, esi
je 0x101a1d1f
lea ecx, [ebp - 0x18]
call fcn.101aaf80
jmp 0x101a1d1f
lea edx, [ebx + edi*8]
movzx eax, al
shr eax, 1
mov ecx, ebx
push eax
push edx
call fcn.101a35a0
jmp 0x101a1cfc
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
cmp ebx, 2
jae 0x101a1a85
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
push eax
push edi
call fcn.101a1710
mov edx, eax
jmp 0x101a1b98
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
cmp ebx, 2
jae 0x101a1b2b
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
push eax
push edi
call fcn.101a1710
mov edx, eax
test edx, edx
jne 0x101a1bd0
jmp 0x101a237e
add dword [ebx + 0x330], 1
adc dword [ebx + 0x334], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
shl edi, 5
mov eax, dword [ebp - 0x28]
lea ebx, [eax + edi]
add ebx, 0x10
add eax, 8
mov esi, 1
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], eax
push eax
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a252b
mov eax, esi
test esi, esi
jle 0x101a2344
pause
add eax, 0xffffffff
jne 0x101a233a
add dword [ebp - 0x30], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x30], 0x3e8
mov eax, dword [ebp - 0x24]
jl 0x101a2325
jmp 0x101a2524
add dword [ebx + 0x330], 1
adc dword [ebx + 0x334], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
shl edi, 5
mov eax, dword [ebp - 0x28]
lea ebx, [eax + edi]
add ebx, 0x10
add eax, 8
mov esi, 1
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], eax
push eax
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a252b
mov eax, esi
test esi, esi
jle 0x101a23bb
pause
add eax, 0xffffffff
jne 0x101a23b1
add dword [ebp - 0x30], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x30], 0x3e8
mov eax, dword [ebp - 0x24]
jl 0x101a239c
jmp 0x101a2524
add dword [ebx + 0x328], 1
adc dword [ebx + 0x32c], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
mov ecx, ebx
push edi
call fcn.101a3420
mov edx, dword [ebx + edi*8]
test edx, edx
jne 0x101a1ab8
jmp 0x101a2307
add dword [ebx + 0x328], 1
adc dword [ebx + 0x32c], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
mov ecx, ebx
push edi
call fcn.101a3420
mov edx, dword [ebx + edi*8]
test edx, edx
jne 0x101a1b5e
jmp 0x101a237e
call fcn.101a12f0
mov ecx, dword [ebp - 0x28]
cmp byte [ecx + 2], 0
jne 0x101a1a5d
mov eax, edi
shl eax, 5
lea ebx, [ecx + eax]
add ebx, 0x10
lea eax, [ecx + 8]
mov esi, 1
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], eax
push eax
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a24ab
mov eax, esi
test esi, esi
jle 0x101a248b
pause
add eax, 0xffffffff
jne 0x101a2481
add dword [ebp - 0x30], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x30], 0x3e8
mov eax, dword [ebp - 0x24]
jl 0x101a2470
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
mov edx, dword [ebp - 0x28]
je 0x101a26b9
mov byte [ebp - 0x20], 0
shl edi, 5
jmp 0x101a253e
call fcn.101a12f0
mov ecx, dword [ebp - 0x28]
cmp byte [ecx + 2], 0
jne 0x101a1b03
shl edi, 5
lea ebx, [ecx + edi]
add ebx, 0x10
lea eax, [ecx + 8]
mov esi, 1
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], eax
push eax
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a252b
mov eax, esi
test esi, esi
jle 0x101a250b
pause
add eax, 0xffffffff
jne 0x101a2501
add dword [ebp - 0x30], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x30], 0x3e8
mov eax, dword [ebp - 0x24]
jl 0x101a24f0
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
mov edx, dword [ebp - 0x28]
je 0x101a26b9
mov byte [ebp - 0x20], 0
mov edi, dword [edx + edi + 0x1c]
mov esi, ecx
mov ecx, dword [ecx]
test ecx, ecx
je 0x101a255e
mov edx, ecx
not edx
cmp dword [esi + 4], edx
jne 0x101a2b55
bswap ecx
prefetcht0 byte [ecx]
jmp 0x101a2560
bswap ecx
mov ebx, dword [ebp + 8]
mov dword [eax], ecx
add word [eax + 0xc], 1
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov edx, esi
test bl, 2
je 0x101a1bdf
cmp byte [ebp - 0x20], 0
jne 0x101a1bdf
push edi
push 0
push edx
mov esi, edx
call fcn.10208980
mov edx, esi
add esp, 0xc
jmp 0x101a1bdf
cmp byte [ebp - 0x20], 0
jne 0x101a20b0
push edi
push 0
push esi
call fcn.10208980
add esp, 0xc
jmp 0x101a20b0
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a2c06
mov ecx, dword [ebp - 0x2c]
shl ecx, 5
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + ecx + 8]
lea edx, [ebx + 0x10]
cmp edx, eax
ja 0x101a1e74
lea edx, [ebx + 0x1110]
cmp edx, eax
jb 0x101a1e74
mov edx, dword [ebp - 0x24]
cmp byte [edx + ecx + 0x11], 0
jne 0x101a2c10
lea ecx, [eax + 0xc]
mov dword [ebp - 0x34], ecx
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x34]
mov eax, dword [eax]
mov dword [ebp - 0x2c], eax
mov eax, dword [0x102b3228]
and eax, 1
shl eax, 0xf
lea esi, [eax + edi]
add edi, eax
add edi, 0x4000
mov eax, dword [ebp + 0xc]
mov ebx, eax
shr ebx, 8
and ebx, 0x1fff
mov ecx, eax
shr cl, 3
mov edx, 1
shl edx, cl
mov eax, dword [esi + ebx*4 + 0x4000]
mov ecx, eax
or ecx, edx
lock cmpxchg dword [edi + ebx*4], ecx
jne 0x101a2644
test eax, edx
jne 0x101a2b71
mov eax, dword [ebp - 0x24]
mov edi, eax
lock xadd dword [0x102b3220], edi
add edi, eax
mov esi, dword [0x102b3224]
cmp byte [0x102b323d], 1
jne 0x101a2685
push dword [ebp - 0x2c]
push 0
push dword [ebp + 0xc]
call fcn.10208980
add esp, 0xc
cmp edi, esi
jbe 0x101a1f40
mov al, byte [0x102b323c]
test al, al
jne 0x101a1f40
mov ecx, 0x102b3220
push 1
call fcn.101a1290
xor edi, edi
jmp 0x101a1d22
push ebx
call dword [sym.imp.kernel32.dll_SetLastError]
jmp 0x101a1ec9
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
push 0x4000
push dword [ebp + 0x10]
push dword [ebp + 8]
push edx
call fcn.1002bc80
test eax, eax
je 0x101a2c19
mov esi, eax
mov edx, eax
mov ecx, esi
and ecx, 0xffe00000
shr edx, 9
and edx, 0xfe0
lea eax, [ecx + edx]
add eax, 0x1000
movzx edx, byte [ecx + edx + 0x101e]
mov ecx, edx
neg ecx
shl edx, 5
mov edi, eax
sub edi, edx
cmp byte [edi + 0x11], 0
jne 0x101a2c2c
shl ecx, 5
mov eax, dword [eax + ecx + 8]
add eax, 0xc
mov edi, dword [eax]
mov ebx, dword [ebp + 8]
jmp 0x101a256a
add dword [edi + 0x348], 1
adc dword [edi + 0x34c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
add ebx, 8
mov edi, ebx
mov esi, 1
mov dword [ebp - 0x30], 0
mov ebx, dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
push edi
call ebx
test al, al
jne 0x101a278d
mov eax, esi
test esi, esi
jle 0x101a2770
pause
add eax, 0xffffffff
jne 0x101a2766
add dword [ebp - 0x30], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x30], 0x3e8
jl 0x101a2759
push edi
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebp - 0x34]
mov eax, dword [eax]
cmp eax, dword [ebp + 0xc]
je 0x101a2c56
bswap eax
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
not eax
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x34]
mov dword [eax], ecx
mov edx, dword [ebp - 0x2c]
shl edx, 5
mov ecx, dword [ebp - 0x24]
movzx eax, word [ecx + edx + 0xc]
add eax, 0xffffffff
mov word [ecx + edx + 0xc], ax
test ax, ax
jle 0x101a2b8d
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], esi
push edi
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
test esi, esi
je 0x101a1f40
lea ecx, [ebp - 0x18]
call fcn.101aaf80
jmp 0x101a1f40
lea edx, [edi + esi*8]
movzx eax, al
shr eax, 1
mov ecx, edi
push eax
push edx
call fcn.101a35a0
jmp 0x101a1f32
mov ecx, edi
call fcn.101a2dd0
xor edi, edi
jmp 0x101a1d22
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.101aad90
jmp 0x101a225d
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
cmp ebx, 2
jae 0x101a1dd3
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
push eax
push edi
call fcn.101a1710
mov esi, eax
test esi, esi
jne 0x101a20a2
jmp 0x101a28a6
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
cmp ebx, 2
jae 0x101a1fcc
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
push eax
push edi
call fcn.101a1710
mov esi, eax
test esi, esi
jne 0x101a20a2
jmp 0x101a292d
add dword [ebx + 0x330], 1
adc dword [ebx + 0x334], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
shl edi, 5
mov eax, dword [ebp - 0x28]
lea ebx, [eax + edi]
add ebx, 0x10
add eax, 8
mov dword [ebp - 0x24], eax
mov esi, 1
mov dword [ebp - 0x2c], 0
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a2900
mov eax, esi
test esi, esi
jle 0x101a28e1
pause
add eax, 0xffffffff
jne 0x101a28d7
add dword [ebp - 0x2c], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x2c], 0x3e8
jl 0x101a28c4
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
jne 0x101a2993
jmp 0x101a2a86
add dword [ebx + 0x330], 1
adc dword [ebx + 0x334], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
shl edi, 5
mov eax, dword [ebp - 0x28]
lea ebx, [eax + edi]
add ebx, 0x10
add eax, 8
mov dword [ebp - 0x24], eax
mov esi, 1
mov dword [ebp - 0x2c], 0
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a2987
mov eax, esi
test esi, esi
jle 0x101a2968
pause
add eax, 0xffffffff
jne 0x101a295e
add dword [ebp - 0x2c], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x2c], 0x3e8
jl 0x101a294b
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
je 0x101a2b9e
mov esi, ecx
mov byte [ebp - 0x20], 0
jmp 0x101a2b38
add dword [ebx + 0x328], 1
adc dword [ebx + 0x32c], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
mov ecx, ebx
push edi
call fcn.101a3420
mov esi, dword [ebx + edi*8]
test esi, esi
jne 0x101a1e06
jmp 0x101a28a6
add dword [ebx + 0x328], 1
adc dword [ebx + 0x32c], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
mov ecx, ebx
push edi
call fcn.101a3420
mov esi, dword [ebx + edi*8]
test esi, esi
jne 0x101a1fff
jmp 0x101a292d
push ecx
call fcn.101e3c80
call fcn.101a12f0
mov ecx, dword [ebp - 0x28]
cmp byte [ecx + 2], 0
jne 0x101a1dab
mov eax, edi
shl eax, 5
mov ecx, dword [ebp - 0x28]
lea ebx, [ecx + eax]
add ebx, 0x10
lea eax, [ecx + 8]
mov dword [ebp - 0x24], eax
mov esi, 1
mov dword [ebp - 0x2c], 0
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a2a7a
mov eax, esi
test esi, esi
jle 0x101a2a5b
pause
add eax, 0xffffffff
jne 0x101a2a51
add dword [ebp - 0x2c], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x2c], 0x3e8
jl 0x101a2a3e
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
jne 0x101a2b2f
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
push 0x4000
push dword [ebp + 0x10]
push dword [ebp + 8]
push dword [ebp - 0x28]
call fcn.1002bc80
test eax, eax
jne 0x101a2bbf
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
xor esi, esi
mov edi, esi
jmp 0x101a1d22
call fcn.101a12f0
mov ecx, dword [ebp - 0x28]
cmp byte [ecx + 2], 0
jne 0x101a1fa4
mov eax, edi
shl eax, 5
mov ecx, dword [ebp - 0x28]
lea ebx, [ecx + eax]
add ebx, 0x10
lea eax, [ecx + 8]
mov dword [ebp - 0x24], eax
mov esi, 1
mov dword [ebp - 0x2c], 0
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x101a2b27
mov eax, esi
test esi, esi
jle 0x101a2b08
pause
add eax, 0xffffffff
jne 0x101a2afe
add dword [ebp - 0x2c], esi
add esi, esi
cmp esi, 0x40
mov eax, 0x40
cmovge esi, eax
cmp dword [ebp - 0x2c], 0x3e8
jl 0x101a2aeb
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [ebx]
mov ecx, dword [eax]
test ecx, ecx
je 0x101a2b9e
mov esi, ecx
mov byte [ebp - 0x20], 0
shl edi, 5
mov ecx, dword [ebp - 0x28]
mov edi, dword [ecx + edi + 0x1c]
mov ecx, dword [esi]
test ecx, ecx
je 0x101a2b5a
mov edx, ecx
not edx
cmp dword [esi + 4], edx
jne 0x101a2b55
bswap ecx
prefetcht0 byte [ecx]
jmp 0x101a2b5c
call fcn.1002c4d0
bswap ecx
mov dword [eax], ecx
add word [eax + 0xc], 1
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
jmp 0x101a20a5
call fcn.101a37b0
call fcn.101a12f0
mov edx, dword [ebp - 0x2c]
jmp 0x101a20c4
mov ecx, esi
add ecx, 0x20
jmp 0x101a20fb
lea eax, [ebp - 0x20]
mov ecx, dword [ebp - 0x34]
push eax
call fcn.101aad90
jmp 0x101a27d9
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
push 0x4000
push dword [ebp + 0x10]
push dword [ebp + 8]
push dword [ebp - 0x28]
call fcn.1002bc80
test eax, eax
je 0x101a2c46
mov esi, eax
mov edx, eax
mov ecx, esi
and ecx, 0xffe00000
shr edx, 9
and edx, 0xfe0
lea eax, [ecx + edx]
add eax, 0x1000
movzx edx, byte [ecx + edx + 0x101e]
mov ecx, edx
neg ecx
shl edx, 5
mov edi, eax
sub edi, edx
cmp byte [edi + 0x11], 0
jne 0x101a2c39
shl ecx, 5
mov eax, dword [eax + ecx + 8]
add eax, 0xc
mov edi, dword [eax]
jmp 0x101a2b63
call fcn.101a12f0
jmp 0x101a25c5
add dword [ebp - 0x34], 0x20
jmp 0x101a25ff
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
xor edx, edx
mov ebx, dword [ebp + 8]
jmp 0x101a1bdf
shl ecx, 5
add eax, ecx
add eax, 0x20
jmp 0x101a271c
shl ecx, 5
add eax, ecx
add eax, 0x20
jmp 0x101a2bff
int3
push dword [ebp - 0x24]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
xor edi, edi
jmp 0x101a1d22
int3