Function at 0x101a5c20
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, ecx
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [esp + 0x78], eax
lea edi, [ecx + 4]
mov ecx, edi
call fcn.101405b0
mov esi, dword [esi]
test esi, esi
je 0x101a5efb
lock add dword [esi], 1
mov ecx, edi
call fcn.101405bc
lea edi, [esi + 0x48]
mov ecx, edi
call fcn.101405b0
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
lea ecx, [esi + 0x4c]
lea ebx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
lea eax, [esp + 0x2c]
lea edx, [esp + 0x30]
mov dword [esp + 0xc], ecx
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x40], xmm0
mov ecx, edi
call fcn.101405bc
lock add dword [esi + 0x8c], 1
mov eax, dword [esi + 0x94]
mov al, byte [eax + 0x1c]
cmp al, 2
jne 0x101a60b4
lea eax, [esi + 8]
mov ecx, dword [esi + 4]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], 0x101a7560
mov eax, dword [esi + 0x44]
cmp eax, 0xffffffff
je 0x101a5d2d
lea eax, [esp + 0x1c]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [esp + 0x20], eax
lea eax, [esi + 0x44]
mov dword [esp + 0x34], ebx
lea ecx, [esp + 0x2c]
mov dword [esp + 0x38], ecx
push 0x101a8480
lea ecx, [esp + 0x24]
push ecx
push eax
call fcn.101405d0
add esp, 0xc
mov ecx, edi
call fcn.101405b0
mov ebx, dword [sym.imp.kernel32.dll_GetCurrentThreadId]
call ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
lea eax, [esp + 0x28]
mov dword [esp + 0x2c], eax
lea edx, [esp + 0x30]
mov dword [esp + 8], edi
mov edi, dword [esp + 0xc]
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x10], xmm0
mov ecx, dword [esp + 8]
call fcn.101405bc
mov ecx, esi
call fcn.101a37d0
mov ecx, dword [esp + 8]
call fcn.101405b0
call ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
lea eax, [esp + 0x28]
mov dword [esp + 0x2c], eax
lea edx, [esp + 0x30]
mov ecx, edi
lea ebx, [esp + 0x2c]
push ebx
push eax
mov ebx, eax
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x18], xmm0
mov ecx, dword [esp + 8]
call fcn.101405bc
mov ecx, dword [esp + 8]
call fcn.101405b0
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
mov dword [esp + 0x2c], ebx
lea edx, [esp + 0x30]
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movq xmm0, qword [esp + 0x20]
movq qword [eax + 0x20], xmm0
mov ecx, dword [esp + 8]
call fcn.101405bc
mov eax, dword [0x102b9104]
mov ecx, dword [0x102b3718]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x101a6235
cmp byte [0x102b90d8], 0
je 0x101a5f7f
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov ebx, eax
mov ecx, 0x102b90f0
call fcn.101405b0
mov edi, dword [0x102b90e0]
test edi, edi
je 0x101a5f75
mov eax, edi
shr eax, 1
and eax, 0x55555555
mov ecx, edi
sub ecx, eax
mov eax, ecx
and eax, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, eax
mov eax, ecx
shr eax, 4
add eax, ecx
and eax, 0xf0f0f0f
imul eax, eax, 0x1010101
shr eax, 0x18
mov dword [esp + 0x18], eax
cmp eax, 1
ja 0x101a5f07
lea edx, [edi - 1]
and edx, ebx
jmp 0x101a5f15
mov ecx, edi
call fcn.101405bc
jmp 0x101a61d1
cmp ebx, edi
jae 0x101a5f0f
mov edx, ebx
jmp 0x101a5f15
mov eax, ebx
xor edx, edx
div edi
mov eax, dword [0x102b90dc]
mov dword [esp + 0x14], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x101a5f75
mov ecx, dword [eax]
test ecx, ecx
je 0x101a5f75
lea edx, [edi - 1]
mov dword [esp + 0x10], edx
jmp 0x101a5f4f
cmp dword [ecx + 8], ebx
je 0x101a61e4
mov ecx, dword [ecx]
test ecx, ecx
je 0x101a5f75
mov eax, dword [ecx + 4]
cmp ebx, eax
je 0x101a5f40
cmp dword [esp + 0x18], 1
ja 0x101a5f61
and eax, edx
jmp 0x101a5f6f
cmp eax, edi
jb 0x101a5f6f
xor edx, edx
div edi
mov eax, edx
mov edx, dword [esp + 0x10]
cmp eax, dword [esp + 0x14]
je 0x101a5f49
mov ecx, 0x102b90f0
call fcn.101405bc
mov ecx, dword [esp + 8]
call fcn.101405b0
mov eax, dword [sym.imp.kernel32.dll_GetCurrentThreadId]
call eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
lea ebx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
lea edx, [esp + 0x30]
mov edi, dword [esp + 0xc]
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x28], xmm0
mov ecx, dword [esp + 8]
call fcn.101405bc
mov ecx, dword [esp + 8]
call fcn.101405b0
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
mov dword [esp + 0x2c], ebx
lea edx, [esp + 0x30]
mov ecx, edi
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x30], xmm0
mov ecx, dword [esp + 8]
call fcn.101405bc
mov ecx, esi
call fcn.101a3d70
mov ecx, dword [esp + 8]
call fcn.101405b0
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
mov dword [esp + 0x2c], ebx
lea edx, [esp + 0x30]
mov ecx, edi
mov edi, dword [esp + 8]
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x38], xmm0
mov ecx, edi
call fcn.101405bc
lea ebx, [esi + 0x84]
mov ecx, ebx
call fcn.101405b0
lock sub dword [esi + 0x8c], 1
mov ecx, dword [esi + 0x94]
mov dl, 3
mov al, 2
lock cmpxchg byte [ecx + 0x1c], dl
mov ecx, ebx
call fcn.101405bc
lea ecx, [esi + 0x88]
call fcn.1012ab98
mov dword [esp + 0x2c], esi
mov eax, dword [esi + 0x90]
cmp eax, 0xffffffff
je 0x101a6122
lea eax, [esi + 0x90]
lea ecx, [esp + 0x2c]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x20], ecx
push 0x101a9530
lea ecx, [esp + 0x24]
push ecx
push eax
call fcn.101405d0
add esp, 0xc
lea ebx, [esp + 0x28]
mov ecx, edi
call fcn.101405b0
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
lea eax, [esp + 0x20]
push eax
call dword [0x102b202c]
add esp, 4
mov dword [esp + 0x2c], ebx
lea edx, [esp + 0x30]
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.101a9ad0
add esp, 8
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x20]
movsd qword [eax + 0x48], xmm0
mov ecx, edi
call fcn.101405bc
lock sub dword [esi], 1
jne 0x101a61d1
mov ecx, edi
call fcn.101e5130
mov ecx, dword [esi + 0x34]
test ecx, ecx
je 0x101a61a1
mov dword [esi + 0x38], ecx
call fcn.101a88b0
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x101a61b0
mov dword [esi + 0x28], ecx
call fcn.101a88b0
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x101a61bf
mov dword [esi + 0x18], ecx
call fcn.101a88b0
lea ecx, [esi + 8]
mov edx, dword [esi + 0xc]
call fcn.101aa9b0
mov ecx, esi
call fcn.101a88b0
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.10205d16
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [ecx + 0xc]
mov ecx, 0x102b90f0
call fcn.101405bc
test ebx, ebx
je 0x101a5f7f
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], 0x1025964c
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], 0
push 0x101bcee0
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.101f2360
add esp, 0xc
mov eax, dword [esp + 0x38]
lock add dword [esi + 0x78], eax
jmp 0x101a5f7f
push 0x102b9104
call fcn.1020d865
add esp, 4
cmp dword [0x102b9104], 0xffffffff
jne 0x101a5e8a
pxor xmm0, xmm0
movdqu xmmword [0x102b90dc], xmm0
movdqu xmmword [0x102b9088], xmm0
movdqu xmmword [0x102b9098], xmm0
movdqu xmmword [0x102b90a8], xmm0
movdqu xmmword [0x102b90b8], xmm0
movdqu xmmword [0x102b90c8], xmm0
mov byte [0x102b90d8], 0
mov dword [0x102b90ec], 0x3f800000
mov dword [0x102b90f0], 0
mov dword [0x102b90f4], 0
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
mov dword [esp + 0x74], 0xffffffff
mov dword [esp + 0x70], 0xffffffff
lea ecx, [esp + 0x30]
call fcn.101be5d0
mov bh, byte [esp + 0x56]
mov bl, byte [esp + 0x5a]
cmp byte [esp + 0x77], 0
jns 0x101a62f8
push dword [esp + 0x6c]
call fcn.10205096
add esp, 4
cmp byte [esp + 0x6b], 0
jns 0x101a630b
push dword [esp + 0x60]
call fcn.10205096
add esp, 4
xor eax, eax
test bh, bh
setne al
test bl, bl
mov ecx, 2
cmove ecx, eax
mov byte [0x102b90f8], cl
mov dword [0x102b90fc], 0
mov byte [0x102b9100], 0
push 0x102b9104
call fcn.1020d865
add esp, 4
jmp 0x101a5e8a