Function at 0x511af0
Capabilities:
Check for time delay via queryperformancecounter
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x460
mov esi, ecx
mov ecx, dword [ebp + 8]
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esp + 0x458], eax
pcmpeqd xmm0, xmm0
movdqu xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0xffffffff
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x5146c5
lock and dword [esi + 0x44], 0xfffffffc
mov dword [esp + 0x20], esi
mov esi, dword [esi + 0x58]
test esi, esi
je 0x511b5e
xor ebx, ebx
xchg dword [esi], ebx
test ebx, ebx
jne 0x5130ce
mov esi, dword [esi + 0x8c]
test esi, esi
jne 0x511b48
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x5146eb
mov eax, dword [esp + 0x20]
lea ecx, [eax - 4]
mov dword [esp + 0x3c], ecx
mov edi, dword [eax + 0x14]
mov esi, dword [eax + 0x18]
nop word cs:[eax + eax]
mov ebx, edi
add ebx, 1
mov ecx, esi
adc ecx, 0
mov eax, edi
mov edx, esi
mov esi, dword [esp + 0x20]
lock cmpxchg8b qword [esi + 0x14]
mov ebx, dword [esp + 0x20]
mov edi, eax
mov esi, edx
jne 0x511b90
mov edx, dword [ebx + 0x174]
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
cmp ecx, eax
je 0x511ccb
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
mov dword [esp + 0x18], edx
jne 0x511c9b
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x512e37
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
lea eax, [esp + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd4]
cmp ebx, 0x7bd05af7
mov ecx, eax
sbb eax, 0x863
jge 0x514d7d
mov edx, 0xf4240
mov eax, ebx
mul edx
imul ecx, ecx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
jne 0x5147cf
test ebx, ebx
je 0x5144e1
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov byte [ebx + 8], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x511ca4
mov edx, dword [ebx]
mov dword [esp + 8], edx
mov edx, dword [ebx + 4]
cmp ecx, eax
je 0x5144f6
cmp dword [ecx + 0x14], 1
je 0x514966
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
cmp dword [esp + 8], ebx
sbb edx, eax
mov ebx, dword [esp + 0x20]
jge 0x51356c
mov edx, dword [ebx + 0x178]
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
cmp ecx, eax
je 0x511de5
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
mov dword [esp + 0x18], edx
jne 0x511db5
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x512e4f
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
lea eax, [esp + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd4]
cmp ebx, 0x7bd05af7
mov ecx, eax
sbb eax, 0x863
jge 0x514e1d
mov edx, 0xf4240
mov eax, ebx
mul edx
imul ecx, ecx, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
jne 0x5147eb
test ebx, ebx
je 0x5144e1
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov byte [ebx + 8], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x511dbe
mov edx, dword [ebx]
mov dword [esp + 8], edx
mov edx, dword [ebx + 4]
cmp ecx, eax
je 0x5144f6
cmp dword [ecx + 0x14], 1
je 0x514a10
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
cmp dword [esp + 8], ebx
sbb edx, eax
mov ebx, dword [esp + 0x20]
jge 0x51359f
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514711
mov ecx, dword [ebp + 0xc]
cmp byte [ecx + 8], 0
je 0x511e1c
mov eax, dword [ecx]
cmp eax, dword [ebx + 0x184]
mov eax, dword [ecx + 4]
sbb eax, dword [ebx + 0x188]
jge 0x51395c
mov eax, dword [ebx + 0xf0]
mov edx, 0
test eax, eax
je 0x511fa4
tzcnt edx, eax
cmp dword [ebp + 0x10], 1
mov dword [esp + 0x18], edx
je 0x514577
mov eax, dword [ebx + 0x10c]
mov ecx, dword [ebx + 0x110]
sub ecx, eax
sar ecx, 4
cmp dword [ebx + 0x11c], 3
jge 0x513d2f
cmp ecx, edx
jbe 0x514541
mov esi, edx
shl esi, 4
mov ebx, dword [eax + esi + 4]
cmp ebx, dword [eax + esi + 8]
je 0x512f8e
mov ecx, dword [ebx + 0x18]
mov edi, ecx
shr edi, 0xe
mov eax, ecx
shr eax, 0x13
mov dword [esp + 0x10], eax
mov eax, dword [eax*4 + 0x64c804]
mov dword [esp + 0xc], edi
bt eax, edi
mov dword [esp + 8], ecx
jb 0x5135d2
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0xf8]
mov ecx, dword [ecx + 0xfc]
sub ecx, eax
sar ecx, 4
cmp ecx, edx
jbe 0x514541
mov edi, dword [eax + esi + 4]
mov ecx, dword [esp + 8]
mov edx, ecx
cmp edi, dword [eax + esi + 8]
je 0x511f74
mov dword [esp + 0x30], edi
mov ecx, dword [edi + 0x18]
mov edx, ecx
shr edx, 0xe
mov eax, ecx
shr eax, 0x13
mov dword [esp + 0x2c], eax
mov eax, dword [eax*4 + 0x64c804]
mov dword [esp + 0x28], edx
bt eax, edx
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
jb 0x513763
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, dword [esp + 0x30]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, edi
xor edx, eax
mov ebx, esi
xor ebx, ecx
or ebx, edx
je 0x514c2a
cmp esi, ecx
sbb edi, eax
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
jae 0x511f64
mov edx, ecx
mov eax, dword [eax*4 + 0x64c804]
bt eax, esi
jb 0x513917
mov eax, dword [esp + 0x10]
mov eax, dword [eax*4 + 0x64c804]
mov esi, dword [esp + 0xc]
bt eax, esi
jb 0x5135e4
mov ebx, dword [esp + 0x20]
cmp dword [edx + 0x50], 1
je 0x51372a
mov dword [ebx + 0x11c], 0
mov dword [esp + 0xa4], 0x123
movzx eax, byte [0x64955f]
test al, al
mov dword [esp + 8], edx
jne 0x514762
test edx, edx
je 0x512a6e
cmp dword [edx + 0x18], 0
je 0x512086
push 0x388
push 0xff
lea eax, [esp + 0xd8]
push eax
call fcn.00569910
mov edx, dword [esp + 0x14]
add esp, 0xc
mov dword [esp + 0xd0], 0
cmp dword [edx + 8], 0
je 0x51435d
mov ecx, dword [edx]
mov eax, dword [ecx]
mov edx, dword [ecx + 0x10]
inc eax
cmp eax, edx
mov edi, eax
mov esi, 0
cmove edi, esi
cmp edx, edi
jbe 0x514517
mov esi, dword [ecx + 0xc]
imul edi, edi, 0x70
mov ebx, dword [esi + edi + 0x50]
test ebx, ebx
je 0x513403
mov ecx, dword [ebx + 0xc]
cmp ecx, 0x5630a0
mov edx, dword [esp + 8]
je 0x51205e
call dword [0x63e63c]
push 0
push ebx
call ecx
mov edx, dword [esp + 0x10]
add esp, 8
test al, al
jne 0x5133fb
add esi, edi
cmp dword [esi + 0x6c], 0
jne 0x5133d4
mov esi, dword [esp + 0xd0]
cmp esi, 2
jae 0x51384d
test esi, esi
mov ebx, dword [esp + 0x20]
jne 0x513771
cmp dword [edx + 8], 0
je 0x514550
mov eax, dword [edx]
mov ecx, dword [eax]
mov edx, dword [eax + 0x10]
inc ecx
cmp ecx, edx
mov esi, 0
cmove ecx, esi
cmp edx, ecx
jbe 0x51451a
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
cmp byte [ecx + 0x58], 0
mov ecx, dword [esp + 8]
je 0x513f6a
mov eax, dword [ecx + 0x1c]
cmp dword [eax + 0xe8], 0
jne 0x513605
cmp dword [eax + 0xec], 0
jne 0x513605
cmp dword [ebx + 0x64], 0
jne 0x5135f6
mov dword [esp + 0x18], 0
cmp dword [ebx + 0x164], 0
mov eax, 0
jne 0x513605
mov dword [esp + 0x3c], eax
pxor xmm0, xmm0
movdqu xmmword [esp + 0xc0], xmm0
movdqu xmmword [esp + 0xb0], xmm0
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0xc], eax
pcmpeqd xmm0, xmm0
movdqu xmmword [esp + 0xe0], xmm0
movdqu xmmword [esp + 0xf0], xmm0
movdqu xmmword [esp + 0x100], xmm0
movdqu xmmword [esp + 0x110], xmm0
mov dword [esp + 0xa4], 0xffffffff
mov dword [esp + 0xa7], 0xffffffff
mov ebx, dword [ecx]
mov edx, dword [ebx]
mov esi, dword [ebx + 0x10]
inc edx
xor eax, eax
cmp edx, esi
cmove edx, eax
cmp esi, edx
jbe 0x514557
mov edi, ecx
mov ecx, dword [ebx + 0xc]
imul edx, edx, 0x70
movups xmm0, xmmword [ecx + edx]
movaps xmmword [esp + 0xd0], xmm0
movups xmm0, xmmword [ecx + edx + 0x10]
movupd xmm1, xmmword [ecx + edx + 0x20]
movaps xmmword [esp + 0xe0], xmm0
movapd xmmword [esp + 0xf0], xmm1
movups xmm0, xmmword [ecx + edx + 0x30]
movaps xmmword [esp + 0x100], xmm0
movdqu xmm0, xmmword [ecx + edx + 0x39]
movdqu xmmword [esp + 0x109], xmm0
mov esi, dword [ecx + edx + 0x50]
mov dword [esp + 0x14], esi
mov dword [ecx + edx + 0x50], 0
movzx ebx, byte [ecx + edx + 0x5a]
mov byte [esp + 0xaa], bl
movzx esi, word [ecx + edx + 0x58]
mov word [esp + 0xa8], si
mov esi, dword [ecx + edx + 0x5c]
mov dword [esp + 0x28], esi
mov esi, dword [ecx + edx + 0x60]
mov dword [esp + 0x10], esi
mov dword [ecx + edx + 0x5c], 0
mov esi, dword [ecx + edx + 0x64]
mov dword [esp + 0x30], esi
mov esi, dword [ecx + edx + 0x68]
mov dword [esp + 0x2c], esi
mov dword [ecx + edx + 0x68], 0
mov ecx, dword [ecx + edx + 0x6c]
mov dword [esp + 0x34], ecx
mov ecx, dword [edi]
mov edx, dword [ecx]
inc edx
mov esi, dword [ecx + 0x10]
cmp edx, esi
cmove edx, eax
mov dword [ecx], edx
cmp esi, edx
jbe 0x51455a
mov eax, dword [ecx + 0xc]
imul ecx, edx, 0x70
lea esi, [eax + ecx]
mov eax, dword [eax + ecx + 0x68]
test eax, eax
jne 0x512e20
mov edi, dword [esi + 0x5c]
test edi, edi
jne 0x5136e9
mov esi, dword [esi + 0x50]
test esi, esi
mov edx, dword [esp + 8]
jne 0x513015
mov eax, dword [edx]
mov ecx, dword [eax + 4]
cmp ecx, dword [eax]
jne 0x51227c
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x513930
dec dword [edx + 8]
jne 0x512425
cmp dword [edx + 0x50], 0
jne 0x512298
mov ecx, dword [edx + 0x1c]
push edx
call fcn.005162a0
mov edx, dword [esp + 8]
cmp dword [edx + 4], 0
je 0x51238c
mov dword [esp + 0x6c], 0xffffffff
mov dword [esp + 0x68], 0xffffffff
mov ecx, dword [0x646080]
cmp ecx, 0x522100
jne 0x512324
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
cmp esi, 0x7bd05af7
mov eax, edi
sbb eax, 0x863
jge 0x514ebd
mov ecx, 0xf4240
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
jmp 0x51233c
call dword [0x63e63c]
lea eax, [esp + 0x68]
push eax
call ecx
add esp, 4
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 8]
cmp eax, dword [ecx + 0x10]
sbb edx, dword [ecx + 0x14]
mov edx, ecx
jl 0x51238c
mov ecx, dword [edx + 0xc]
inc ecx
cmp ecx, 5
mov eax, 4
cmovae eax, ecx
mov ecx, dword [edx]
mov edx, dword [esp + 8]
mov edx, dword [edx + 8]
mov esi, dword [esp + 8]
mov dword [esi + 0xc], edx
mov edx, dword [esp + 8]
test ecx, ecx
je 0x51238c
lea edx, [eax + 0x10]
xor esi, esi
add esi, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x512376
cmp edx, esi
mov edx, dword [esp + 8]
jb 0x5142e4
mov edi, dword [edx + 0x18]
mov ebx, dword [edx + 0x20]
cmp dword [edx + 8], 0
jne 0x51242b
mov ecx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 4
cmp eax, ebx
jbe 0x5144d2
mov esi, ebx
shl esi, 4
add ecx, esi
push 0
call fcn.00516060
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
sub ecx, eax
sar ecx, 4
cmp ecx, ebx
jbe 0x5144d2
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
jne 0x51252f
mov eax, dword [edi + 0x10]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, ebx
jbe 0x5144d2
dec dword [ecx + ebx*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, ebx
jbe 0x5144d2
cmp dword [ecx + ebx*4], 0
jne 0x51252f
mov edx, 0xfffffffe
mov ecx, ebx
rol edx, cl
and dword [eax + 0x14], edx
jmp 0x51252f
mov edi, dword [edx + 0x18]
mov ebx, dword [edx + 0x20]
mov dword [esp + 0x38], edi
mov eax, dword [edx]
mov ecx, dword [eax]
cmp byte [edx + 0x48], 0
mov dword [esp + 0x44], ebx
jne 0x513968
mov esi, dword [eax + 0x10]
inc ecx
xor edx, edx
cmp ecx, esi
cmove ecx, edx
cmp esi, ecx
jbe 0x51466a
mov esi, dword [eax + 0xc]
imul edi, ecx, 0x70
lea eax, [esi + edi]
mov dword [esp + 0x24], eax
mov eax, dword [esi + edi + 0x44]
mov dword [esp + 0x40], eax
mov ecx, dword [esi + edi + 0x18]
mov ebx, dword [esi + edi + 0x1c]
mov edi, ecx
or edi, ebx
mov dword [esp + 0x1c], 0
mov edi, dword [esp + 0x38]
jne 0x51379a
mov esi, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, esi
sar eax, 4
mov ecx, dword [esp + 0x44]
cmp eax, ecx
jbe 0x5144d2
shl ecx, 4
add esi, ecx
mov edi, dword [esp + 8]
mov eax, edi
shr eax, 0xe
mov ebx, edi
shr ebx, 0x13
mov ebx, dword [ebx*4 + 0x64c804]
bt ebx, eax
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x60]
mov ecx, dword [ecx + 0x64]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x80], eax
jb 0x5133a6
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esp + 0x88], edi
lea eax, [esp + 0x70]
lea edx, [esp + 0x68]
mov ecx, esi
push eax
push edx
call fcn.00515fd0
mov eax, dword [esp + 0x88]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x513398
mov eax, dword [esp + 8]
mov esi, dword [eax + 0x1c]
movzx eax, byte [0x64955e]
test al, al
jne 0x514b35
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 0x1ac]
mov ebx, dword [eax + 0x1b0]
mov eax, ebx
sub eax, edi
mov esi, ebx
sub esi, edi
je 0x513b81
sar eax, 2
lea eax, [eax + eax*2]
lea ecx, [eax*8 - 1]
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x1b8]
mov edx, dword [edx + 0x1bc]
add edx, eax
cmp ecx, edx
je 0x513e47
cmp ebx, edi
mov ebx, dword [esp + 0x20]
je 0x5144e1
mov ecx, dword [ebx + 0x1b8]
add ecx, dword [ebx + 0x1bc]
mov esi, 0xaaaaaaab
mov eax, ecx
mul esi
shr edx, 4
lea eax, [edx*8]
lea eax, [eax + eax*2]
sub ecx, eax
imul eax, ecx, 0xa8
add eax, dword [edi + edx*4]
je 0x5144e1
movaps xmm0, xmmword [esp + 0xd0]
movups xmmword [eax], xmm0
lea ecx, [esp + 0xe0]
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [ecx + 0x10]
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax + 0x20], xmm1
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [ecx + 0x29]
movups xmmword [eax + 0x39], xmm0
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x50], ecx
lea ecx, [esp + 0xa8]
movzx edx, word [ecx]
mov word [eax + 0x58], dx
movzx ecx, byte [ecx + 2]
mov byte [eax + 0x5a], cl
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x5c], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax + 0x64], ecx
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x60], ecx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 0x68], ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 0x6c], ecx
mov edx, dword [esp + 0xc]
mov dword [eax + 0x70], edx
mov ecx, dword [edx + 4]
mov dword [eax + 0x74], ecx
mov dword [eax + 0x78], 0
mov ecx, dword [esp + 0x18]
mov byte [eax + 0x7c], cl
mov ecx, dword [esp + 0x3c]
mov byte [eax + 0x7d], cl
movdqu xmm0, xmmword [esp + 0xae]
movupd xmm1, xmmword [esp + 0xbe]
movdqu xmmword [eax + 0x7e], xmm0
movupd xmmword [eax + 0x8e], xmm1
movzx ecx, word [esp + 0xce]
mov word [eax + 0x9e], cx
mov ecx, dword [edx + 0x64]
movzx ecx, byte [ecx + 0x20]
mov byte [eax + 0xa0], cl
movzx ecx, byte [eax + 0x5a]
mov dword [eax + 0xa4], ecx
mov ecx, dword [ebx + 0x1bc]
inc ecx
mov dword [ebx + 0x1bc], ecx
add ecx, dword [ebx + 0x1b8]
mov edi, dword [ebx + 0x1ac]
mov eax, ecx
mul esi
shr edx, 4
mov eax, dword [edi + edx*4]
cmp dword [ebx + 0x1b0], edi
je 0x513c6c
lea esi, [edx*8]
lea esi, [esi + esi*2]
sub ecx, esi
imul esi, ecx, 0xa8
add esi, eax
cmp eax, esi
je 0x51465c
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x51480a
mov eax, dword [esi - 0x38]
cmp byte [eax + 0x14c], 0
jne 0x512e11
cmp dword [eax + 0xe8], 0
mov dword [esp + 8], esi
jne 0x512f36
cmp dword [eax + 0xec], 0
jne 0x512f36
cmp dword [ebx + 0x64], 0
jne 0x512743
cmp dword [ebx + 0x164], 0
jne 0x512f36
mov dword [esp + 0x28], 0
lea eax, [esi - 0xa8]
mov dword [esp + 0x18], eax
mov eax, dword [esi - 0x38]
cmp byte [eax + 0x14d], 0
je 0x5129bf
mov ecx, dword [esi - 0x48]
mov dword [esp + 0xc], ecx
mov ecx, dword [esi - 0x44]
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + 0xe0]
mov dword [esp + 0x14], ecx
mov eax, dword [eax + 0xe4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514860
mov eax, dword [ebx + 0x124]
cmp eax, dword [ebx + 0x128]
je 0x512948
lea eax, [ebx + 0x124]
mov dword [esp + 0xd8], eax
lea eax, [ebx + 0x130]
mov dword [esp + 0xd4], eax
mov eax, dword [ebx + 0x130]
mov dword [esp + 0xd0], eax
lea ecx, [esp + 0xd0]
mov dword [eax + 4], ecx
mov dword [ebx + 0x130], ecx
mov dword [esp + 0xdc], 0
mov ecx, 0xffffffff
cmp dword [ebx + 0x144], 0
jne 0x5146b1
mov dword [esp + 0xe0], ecx
mov esi, dword [esp + 0xd8]
mov edx, dword [esi + 4]
sub edx, dword [esi]
sar edx, 2
cmp edx, ecx
cmovae edx, ecx
xor eax, eax
test edx, edx
je 0x512845
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x5144d2
cmp dword [edi + eax*4], 0
mov ebx, dword [esp + 0x20]
je 0x514684
test esi, esi
je 0x512948
mov edx, dword [esi]
mov edi, dword [esi + 4]
sub edi, edx
sar edi, 2
cmp edi, ecx
cmovb ecx, edi
cmp eax, ecx
je 0x5128f9
cmp edi, eax
jbe 0x5144d2
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x10]
setb bl
mov esi, dword [edx + eax*4]
mov eax, dword [esi]
mov edi, dword [eax]
mov ecx, edi
call dword [0x63e63c]
movzx eax, bl
mov ecx, esi
push eax
push dword [esp + 0x1c]
call edi
mov esi, dword [esp + 0xd8]
test esi, esi
mov ebx, dword [esp + 0x20]
je 0x512948
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xe0]
inc eax
mov dword [esp + 0xdc], eax
mov edx, dword [esi + 4]
sub edx, dword [esi]
sar edx, 2
cmp edx, ecx
cmovae edx, ecx
cmp eax, edx
jae 0x51284d
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x5144d2
cmp dword [edi + eax*4], 0
jne 0x51284d
jmp 0x51466d
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jne 0x51291c
mov ebx, dword [esi]
mov ecx, dword [esi + 4]
cmp ebx, ecx
je 0x51291c
lea edi, [ebx + 4]
cmp dword [ebx], 0
je 0x513ac8
mov ebx, edi
cmp edi, ecx
jne 0x51290a
cmp dword [esp + 0xd8], 0
mov ebx, dword [esp + 0x20]
je 0x512948
mov dword [esp + 0xd8], 0
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [eax + 4], ecx
mov dword [ecx], eax
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x51488b
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
mov esi, dword [esp + 8]
jne 0x5148b6
mov eax, dword [esp + 0x14]
cmp dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
sbb dword [esp + 0x3c], eax
setb al
mov ecx, dword [esi - 0x38]
movzx eax, al
push eax
push dword [esp + 0x1c]
call fcn.00516650
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x5148e1
cmp byte [esp + 0x28], 0
jne 0x512b1f
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514835
cmp dword [esi - 0x3c], 0
jne 0x5133b4
mov eax, dword [esi - 0x40]
test eax, eax
je 0x5129f3
movzx eax, byte [eax + 4]
test al, al
je 0x512d90
mov eax, dword [esi - 0x38]
mov edi, dword [esi - 0x34]
movzx ebx, byte [esi - 8]
mov esi, dword [eax + 0xf0]
test esi, esi
jne 0x512a7a
movzx eax, bl
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [ecx], edx
mov dword [ecx + 4], 0
mov dword [ecx + 0xc], edi
mov dword [ecx + 8], eax
mov byte [ecx + 0x10], 1
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514737
mov eax, dword [ebp + 8]
cmp byte [eax + 0x10], 0
je 0x512a53
mov eax, dword [ebx + 0x44]
test al, 2
jne 0x51455d
mov ecx, dword [esp + 0x458]
xor ecx, ebp
call fcn.00568175
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
mov eax, dword [ebp + 8]
mov byte [eax], 0
mov byte [eax + 0x10], 0
jmp 0x512a28
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x51469f
cmp eax, 0x7fffffff
je 0x5146a2
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x5146a5
cmp eax, 0x7fffffff
je 0x5146a8
lock dec dword [esi]
jne 0x512ac6
mov ecx, dword [esi + 8]
call dword [0x63e63c]
push esi
call ecx
add esp, 4
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x5146ab
cmp eax, 0x7fffffff
je 0x5146ae
movzx eax, bl
mov ecx, dword [ebp + 8]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edi
mov byte [ecx + 0x10], 1
lock dec dword [esi]
mov ebx, dword [esp + 0x20]
jne 0x512a28
mov ecx, dword [esi + 8]
call dword [0x63e63c]
push esi
call ecx
add esp, 4
jmp 0x512a28
cmp dword [ebx + 0x64], 0
jne 0x512d05
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514c90
mov eax, dword [ebx + 0x148]
cmp eax, dword [ebx + 0x14c]
je 0x512cea
lea eax, [ebx + 0x148]
mov dword [esp + 0xd8], eax
lea eax, [ebx + 0x154]
mov dword [esp + 0xd4], eax
mov eax, dword [ebx + 0x154]
mov dword [esp + 0xd0], eax
lea ecx, [esp + 0xd0]
mov dword [eax + 4], ecx
mov dword [ebx + 0x154], ecx
mov dword [esp + 0xdc], 0
mov ecx, 0xffffffff
cmp dword [ebx + 0x168], 0
jne 0x514c16
mov dword [esp + 0xe0], ecx
mov esi, dword [esp + 0xd8]
mov edx, dword [esi + 4]
sub edx, dword [esi]
sar edx, 2
cmp edx, ecx
cmovae edx, ecx
xor eax, eax
test edx, edx
je 0x512be3
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x5144d2
cmp dword [edi + eax*4], 0
je 0x514b1e
test esi, esi
je 0x512cea
nop dword [eax + eax]
mov edx, dword [esi]
mov edi, dword [esi + 4]
sub edi, edx
sar edi, 2
cmp edi, ecx
cmovb ecx, edi
cmp eax, ecx
je 0x512c9b
cmp edi, eax
jbe 0x5144d2
mov esi, dword [edx + eax*4]
mov eax, dword [esp + 8]
movsd xmm0, qword [eax - 0x28]
movsd qword [esp + 0x70], xmm0
mov eax, dword [esi]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x63e63c]
sub esp, 8
movq xmm0, qword [esp + 0x78]
movq qword [esp], xmm0
mov ecx, esi
call edi
mov esi, dword [esp + 0xd8]
test esi, esi
je 0x512cea
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xe0]
inc eax
mov dword [esp + 0xdc], eax
mov edx, dword [esi + 4]
sub edx, dword [esi]
sar edx, 2
cmp edx, ecx
cmovae edx, ecx
cmp eax, edx
jae 0x512bf0
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x5144d2
cmp dword [edi + eax*4], 0
jne 0x512bf0
jmp 0x514560
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jne 0x512cc2
mov edi, dword [esi]
mov ecx, dword [esi + 4]
cmp edi, ecx
je 0x512cc2
nop dword [eax]
lea ebx, [edi + 4]
cmp dword [edi], 0
je 0x5141dc
mov edi, ebx
cmp ebx, ecx
jne 0x512cb0
cmp dword [esp + 0xd8], 0
je 0x512cea
mov dword [esp + 0xd8], 0
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [eax + 4], ecx
mov dword [ecx], eax
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514cbb
mov esi, dword [esp + 8]
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514ce6
mov eax, dword [esi - 0x38]
mov esi, dword [eax + 0xe8]
test esi, esi
je 0x512d70
mov ecx, 1
lock xadd dword [esi], ecx
test ecx, ecx
jle 0x514aba
cmp ecx, 0x7fffffff
je 0x514abd
mov ecx, dword [esp + 8]
lea edi, [ecx - 0x30]
mov eax, dword [eax + 0xe8]
mov ecx, dword [eax + 4]
call dword [0x63e63c]
push edi
push dword [esp + 0x1c]
push esi
call ecx
add esp, 0xc
lock dec dword [esi]
je 0x514d3c
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64955e]
test al, al
jne 0x514d11
mov esi, dword [esp + 8]
jmp 0x5129bf
cmp dword [esi - 0x3c], 0
je 0x5129f3
mov eax, dword [esi - 0x40]
test eax, eax
je 0x514807
movzx eax, byte [eax + 4]
test al, al
jne 0x514807
mov edi, esi
mov esi, dword [esi - 0x3c]
mov eax, dword [esi + 0xc]
mov byte [eax + 4], 1
push 8
call fcn.00564ea5
add esp, 4
mov dword [eax], 0
mov byte [eax + 4], 0
test eax, eax
je 0x512dea
mov ecx, 1
lock xadd dword [eax], ecx
cmp ecx, 0x7fffffff
je 0x514b1b
mov ecx, dword [esi + 0xc]
mov dword [esi + 0xc], eax
test ecx, ecx
mov esi, edi
je 0x5129f3
lock dec dword [ecx]
jne 0x5129f3
push ecx
call fcn.00564ea0
add esp, 4
jmp 0x5129f3
mov byte [ebx + 0x1a4], 1
mov eax, dword [esi - 0x38]
jmp 0x512712
lock dec dword [eax]
jne 0x51224e
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51224e
call dword [0x63e63c]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x511c62
call dword [0x63e63c]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x511d7c
call dword [0x63e63c]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x512f08
mov ecx, dword [fcn.005515a0]
cmp ecx, 0x522100
jne 0x512e67
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
lea eax, [esp + 0xd0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov esi, dword [esp + 0xd0]
mov edi, dword [esp + 0xd4]
cmp esi, 0x7bd05af7
mov eax, edi
sbb eax, 0x863
jge 0x515650
mov ecx, 0xf4240
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov esi, dword [esp + 8]
mov edx, dword [ebp + 0xc]
cmp byte [edx + 8], 0
jne 0x514c78
test edx, edx
je 0x5144e1
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [edx], eax
mov dword [edx + 4], ecx
mov byte [edx + 8], 1
jmp 0x512f55
mov dword [esi - 0x30], 1
cmp byte [esi - 0x2c], 0
je 0x512f5b
mov ecx, dword [ebp + 0xc]
cmp byte [ecx + 8], 0
je 0x512e7f
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esi - 0x28], eax
mov dword [esi - 0x24], ecx
mov al, 1
mov dword [esp + 0x28], eax
cmp byte [esi - 0x2b], 0
je 0x51274b
lea eax, [esp + 0xd0]
push eax
call fcn.004056d0
add esp, 4
movq xmm0, qword [esp + 0xd0]
movq qword [esi - 0x18], xmm0
jmp 0x51274b
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 0xf8]
mov ecx, dword [ebx + 0xfc]
sub ecx, eax
sar ecx, 4
cmp ecx, edx
jbe 0x514541
mov ecx, dword [eax + esi + 4]
xor edx, edx
cmp ecx, dword [eax + esi + 8]
je 0x511f90
mov edx, dword [ecx + 0x18]
mov esi, edx
shr esi, 0xe
mov edi, edx
shr edi, 0x13
mov eax, dword [edi*4 + 0x64c804]
bt eax, esi
jb 0x513002
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, dword [edi*4 + 0x64c804]
bt eax, esi
jae 0x511f90
push edx
mov esi, edx
call fcn.004f0f10
mov edx, esi
add esp, 4
jmp 0x511f90
push edx
mov dword [esp + 0xc], edx
call fcn.004f0de0
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x512fe0
lock dec dword [esi]
jne 0x512268
mov ecx, dword [esi + 8]
call dword [0x63e63c]
push esi
call ecx
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x512268
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
cmp dword [edx + 0x28], 0
jne 0x513b88
mov eax, dword [edx + 0x20]
mov dword [esp + 0x30], edx
mov ecx, dword [edx + 0x24]
mov edx, eax
add edx, 1
mov edi, ecx
adc edi, 0x80000000
cmp edx, 2
sbb edi, 0
jb 0x514ac0
mov edx, dword [esp + 0x10]
add edx, eax
mov eax, dword [esp + 0x14]
adc eax, ecx
seto byte [esp + 0x10]
mov ecx, eax
sar ecx, 0x1f
lea edi, [ecx - 0x80000000]
cmp byte [esp + 0x10], 0
cmove ecx, edx
mov dword [esp + 0x2c], ecx
cmp byte [esp + 0x10], 0
cmove edi, eax
mov edx, dword [esp + 0x30]
jmp 0x5131c9
mov ecx, edi
call dword [0x63e63c]
mov ecx, dword [esp + 0xc]
call edi
mov edi, dword [esp + 0x3c]
lock dec dword [edi]
je 0x513c58
mov eax, dword [esp + 8]
btc ebx, eax
test ebx, ebx
je 0x511b54
tzcnt ecx, ebx
mov edi, dword [esi + ecx*4 + 8]
test edi, edi
je 0x514505
mov eax, 1
lock xadd dword [edi], eax
test eax, eax
jle 0x514508
cmp eax, 0x7fffffff
je 0x51450b
mov dword [esp + 8], ecx
mov eax, dword [esi + ecx*4 + 8]
mov ecx, dword [eax + 4]
cmp ecx, 0x55a620
je 0x513123
call dword [0x63e63c]
push edi
call ecx
add esp, 4
lock dec dword [edi]
jne 0x5130bf
jmp 0x513c58
push dword [edi + 0x14]
call fcn.004ef3c0
add esp, 4
mov eax, edi
mov edi, dword [edi + 0x10]
mov dword [esp + 0x3c], eax
mov eax, dword [eax + 0x14]
cmp edi, 0x532f80
mov dword [esp + 0xc], eax
jne 0x5130a4
mov edi, dword [eax + 0x64]
mov ecx, dword [edi + 0x1c]
push edi
call fcn.005162a0
cmp dword [edi + 8], 0
je 0x513363
mov ecx, edi
mov eax, dword [edi + 0x18]
mov dword [esp + 0x28], eax
test eax, eax
je 0x513363
cmp byte [ecx + 0x48], 0
mov dword [esp + 0x18], ecx
jne 0x513b99
mov eax, dword [ecx]
mov edi, dword [eax]
mov edx, dword [eax + 0x10]
inc edi
cmp edi, edx
mov ecx, 0
cmove edi, ecx
cmp edx, edi
jbe 0x51450e
mov ecx, dword [eax + 0xc]
imul edi, edi, 0x70
lea edx, [ecx + edi]
mov eax, dword [ecx + edi + 0x44]
mov dword [esp + 0x34], eax
mov eax, dword [ecx + edi + 0x18]
mov ecx, dword [ecx + edi + 0x1c]
mov dword [esp + 0x2c], 0
mov edi, eax
or edi, ecx
mov edi, 0
jne 0x513036
mov dword [esp + 0x1c], edi
mov edi, dword [edx + 0x60]
mov eax, dword [edx + 0x64]
mov ecx, eax
shr ecx, 8
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], edi
shld eax, edi, 0x18
mov dword [esp + 0x30], 0
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x20]
mov ecx, dword [esp + 0x28]
mov edi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
sub ecx, edi
sar ecx, 4
mov dword [esp + 0x14], edx
cmp ecx, edx
jbe 0x5144d2
cmp byte [esp + 0x30], 0
jne 0x514523
shld dword [esp + 0x10], eax, 8
shl eax, 8
movzx ecx, byte [esp + 0x24]
or ecx, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
shl ecx, 4
mov edx, dword [esp + 0x18]
mov eax, edx
shr eax, 0xe
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, eax
mov edx, ecx
mov eax, dword [edi + ecx + 4]
mov dword [esp + 0x30], eax
mov eax, dword [edi + ecx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xe0], eax
jb 0x51337b
mov ecx, dword [esp + 0x18]
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, ecx
add edi, edx
mov dword [esp + 0xe8], eax
mov ecx, edi
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0x74]
push eax
call fcn.005078a0
mov eax, dword [esp + 0xe8]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jae 0x5132ee
push eax
call fcn.004f0f10
add esp, 4
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x30], eax
mov edi, dword [esp + 0x14]
jne 0x513363
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, edi
jbe 0x5144d2
inc dword [ecx + edi*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, edi
jbe 0x5144d2
cmp dword [ecx + edi*4], 1
jne 0x513363
mov ecx, dword [eax + 0x14]
mov edx, ecx
bts edx, edi
mov dword [eax + 0x14], edx
test ecx, ecx
jne 0x513363
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x513363
mov eax, dword [ecx + 0x40]
add ecx, 0x40
nop
mov edx, eax
and edx, 0xfffffffd
lock cmpxchg dword [ecx], edx
jne 0x513350
test al, 4
jne 0x514c0c
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 0x5c]
test edx, edx
mov edi, dword [esp + 0x3c]
je 0x5130b6
jmp 0x514d50
push dword [esp + 0x18]
mov dword [esp + 0x14], edx
call fcn.004f0de0
mov edx, dword [esp + 0x14]
add esp, 4
mov eax, dword [esp + 0x18]
jmp 0x5132ab
push eax
call fcn.004f0f10
add esp, 4
jmp 0x51252f
push edi
call fcn.004f0de0
add esp, 4
jmp 0x5124f6
mov eax, dword [esi - 0x40]
test eax, eax
je 0x5133c7
movzx eax, byte [eax + 4]
test al, al
je 0x5129e0
lea ecx, [esi - 0x58]
call fcn.00592060
jmp 0x5129f3
mov eax, dword [esi + 0x68]
test eax, eax
je 0x5133fb
movzx eax, byte [eax + 4]
test al, al
je 0x51206a
jmp 0x5133fb
lea ecx, [esp + 0xd0]
push eax
call fcn.004f56b0
jmp 0x5134cf
mov ecx, dword [edx]
mov eax, dword [ecx]
mov edx, dword [ecx + 0x10]
inc eax
cmp eax, edx
mov esi, 0
cmove eax, esi
cmp edx, eax
jbe 0x51451d
mov edx, dword [esp + 0xd0]
mov esi, 8
test dl, 1
je 0x51342d
mov esi, dword [esp + 0xdc]
imul eax, eax, 0x70
add eax, dword [ecx + 0xc]
mov ecx, edx
shr ecx, 1
cmp ecx, esi
je 0x5133e9
lea esi, [esp + 0xd8]
test dl, 1
je 0x51344e
mov esi, dword [esp + 0xd8]
imul ecx, ecx, 0x70
add ecx, esi
je 0x5144e1
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax + 0x10]
movupd xmm1, xmmword [eax + 0x20]
movups xmmword [ecx + 0x10], xmm0
movupd xmmword [ecx + 0x20], xmm1
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x30], xmm0
movups xmm0, xmmword [eax + 0x39]
movups xmmword [ecx + 0x39], xmm0
mov edx, dword [eax + 0x50]
mov dword [ecx + 0x50], edx
mov dword [eax + 0x50], 0
movzx edx, byte [eax + 0x5a]
mov byte [ecx + 0x5a], dl
movzx edx, word [eax + 0x58]
mov word [ecx + 0x58], dx
mov edx, dword [eax + 0x5c]
mov dword [ecx + 0x5c], edx
mov dword [eax + 0x5c], 0
movq xmm0, qword [eax + 0x60]
movq qword [ecx + 0x60], xmm0
mov edx, dword [eax + 0x68]
mov dword [ecx + 0x68], edx
mov dword [eax + 0x68], 0
mov eax, dword [eax + 0x6c]
mov dword [ecx + 0x6c], eax
add dword [esp + 0xd0], 2
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 0x10]
inc ecx
cmp ecx, edx
mov esi, 0
cmove ecx, esi
mov dword [eax], ecx
cmp edx, ecx
jbe 0x514520
mov esi, dword [eax + 0xc]
imul edi, ecx, 0x70
mov eax, dword [esi + edi + 0x68]
test eax, eax
mov edx, dword [esp + 8]
jne 0x51353e
add esi, edi
mov edi, dword [esi + 0x5c]
test edi, edi
jne 0x513533
mov esi, dword [esi + 0x50]
test esi, esi
jne 0x513552
mov eax, dword [edx]
mov ecx, dword [eax + 4]
cmp ecx, dword [eax]
jne 0x513525
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x513c73
dec dword [edx + 8]
jne 0x512007
jmp 0x51206a
lock dec dword [edi + 4]
jne 0x51350a
jmp 0x513c9f
lock dec dword [eax]
jne 0x513501
push eax
call fcn.00564ea0
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x513501
lock dec dword [esi]
jne 0x513511
mov ecx, dword [esi + 8]
call dword [0x63e63c]
push esi
call ecx
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x513511
mov ebx, dword [ecx + 0x18]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.0051e330
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x514439
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x515311
mov ebx, dword [esp + 0x20]
jmp 0x511ccb
mov ebx, dword [ecx + 0x18]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.0051e330
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x514455
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x514f7c
mov ebx, dword [esp + 0x20]
jmp 0x511de5
push ecx
call fcn.004f0de0
mov edx, dword [esp + 0x1c]
add esp, 4
jmp 0x511eaf
push ecx
mov esi, edx
call fcn.004f0f10
mov edx, esi
add esp, 4
jmp 0x511f8c
mov dword [esp + 0x18], 0
xor eax, eax
jmp 0x5120ff
movsd xmm0, qword [ebx + 0x3c]
mov al, 1
mov dword [esp + 0x18], eax
xorpd xmm1, xmm1
ucomisd xmm0, xmm1
jbe 0x5135fe
cmp byte [ebx + 0xd4], 0
je 0x51490c
mov esi, dword [ebx + 0xc4]
mov edx, dword [ebx + 0xc8]
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xd0]
mov eax, edx
shld eax, esi, 0x17
mov edi, esi
shl edi, 0x17
xor edi, esi
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx + 0xcc]
xor eax, edx
mov ecx, eax
shld ecx, edi, 0xf
mov dword [esp + 0x3c], ecx
mov edx, ebx
shld edx, esi, 6
mov ecx, ebx
shr ecx, 0x1a
xor ecx, ebx
xor ecx, eax
shr eax, 0x11
xor eax, ecx
xor edx, esi
xor edx, edi
xor edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xc4], esi
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xc8], ebx
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xcc], edx
add edx, esi
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xd0], eax
adc eax, ebx
mov ecx, eax
shr ecx, 0xb
movd xmm1, ecx
shld eax, edx, 0x15
movd xmm2, eax
punpckldq xmm2, xmm1
movq qword [esp + 0x60], xmm2
fild qword [esp + 0x60]
fstp qword [esp + 0x58]
movsd xmm1, qword [esp + 0x58]
mulsd xmm1, qword [0x6271b0]
ucomisd xmm0, xmm1
seta al
mov ecx, dword [esp + 8]
jmp 0x5120ff
lock dec dword [edi + 4]
jne 0x512259
mov ecx, dword [edi]
mov eax, dword [edi + 0xc]
cmp dword [ecx + 8], 0x5b9470
test eax, eax
je 0x51370c
lock dec dword [eax]
je 0x51442b
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x51371c
lock dec dword [ebx]
je 0x514323
push edi
call fcn.00564ea0
add esp, 4
jmp 0x512259
mov eax, dword [ebx + 0x10c]
mov ecx, dword [ebx + 0x110]
sub ecx, eax
sar ecx, 4
mov esi, dword [esp + 0x18]
cmp ecx, esi
jbe 0x514541
shl esi, 4
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
je 0x511f9a
inc dword [ebx + 0x11c]
jmp 0x511fa4
push ecx
call fcn.004f0de0
add esp, 4
jmp 0x511f33
lea ecx, [esp + 0xd0]
call fcn.004f4e10
mov edx, dword [esp + 8]
cmp esi, 1
je 0x512086
jmp 0x511e1c
mov dword [esp + 0x1c], ecx
mov edx, ebx
jmp 0x512487
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x28], 0
jne 0x51378f
mov esi, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x1c], esi
add esi, 1
mov eax, edx
adc eax, 0x80000000
cmp esi, 2
sbb eax, 0
jb 0x514f3c
add ecx, dword [esp + 0x1c]
adc ebx, edx
seto byte [esp + 0x4c]
mov edx, ebx
sar edx, 0x1f
mov eax, edx
add edx, 0x80000000
cmp byte [esp + 0x4c], 0
cmove eax, ecx
mov dword [esp + 0x1c], eax
cmp byte [esp + 0x4c], 0
cmove edx, ebx
jmp 0x512487
xor eax, eax
lea esi, [esp + 0x70]
mov dword [esi + 4], eax
mov dword [esi], eax
push esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [esi]
mov esi, dword [esi + 4]
cmp edi, 0x7bd05af7
mov eax, esi
sbb eax, 0x863
jge 0x515704
mov ecx, 0xf4240
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add ecx, edx
push dword [0x6496bc]
push dword [0x6496b8]
push ecx
push eax
call fcn.00588630
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
jmp 0x5138a2
cmp dword [edx + 8], 0
jne 0x5138e8
cmp dword [edx + 0x50], 0
jne 0x51386a
mov ecx, dword [edx + 0x1c]
push edx
call fcn.005162a0
mov edx, dword [esp + 8]
cmp dword [edx + 4], 0
je 0x5138e8
xor eax, eax
dec eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], eax
mov ecx, dword [0x646080]
cmp ecx, 0x522100
je 0x5137f5
call dword [0x63e63c]
lea esi, [esp + 0x68]
push esi
call ecx
add esp, 4
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov ecx, dword [esp + 8]
cmp eax, dword [ecx + 0x10]
sbb edx, dword [ecx + 0x14]
jl 0x5138e4
mov esi, dword [esp + 8]
mov eax, dword [esi + 0xc]
inc eax
cmp eax, 5
mov ecx, 4
cmovb eax, ecx
mov ecx, dword [esi]
mov edx, dword [esi + 8]
mov dword [esi + 0xc], edx
test ecx, ecx
je 0x5138e4
lea edx, [eax + 0x10]
xor esi, esi
add esi, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x5138d2
cmp edx, esi
jb 0x5143aa
mov edx, dword [esp + 8]
cmp dword [edx + 0x24], 0xffffffff
je 0x5138fb
mov ecx, dword [edx + 0x18]
push edx
call fcn.004f4f50
mov edx, dword [esp + 8]
mov esi, dword [edx + 0x1c]
mov al, byte [0x64955e]
test al, al
jne 0x515297
mov esi, dword [esp + 0xd0]
jmp 0x51207a
push dword [esp + 0x14]
mov esi, edx
call fcn.004f0f10
mov ecx, dword [esp + 0xc]
mov edx, esi
add esp, 4
jmp 0x511f74
mov dword [eax + 0x14], 0
mov esi, dword [edx]
mov dword [edx], ecx
test esi, esi
je 0x51227c
mov ecx, esi
call fcn.00516eb0
push esi
call fcn.00564ea0
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x51227c
mov byte [ebx + 0x17c], 1
jmp 0x511e1c
inc ecx
mov esi, dword [eax + 0x10]
xor edi, edi
cmp ecx, esi
mov edx, ecx
mov dword [esp + 0x48], 0
cmove edx, edi
cmp esi, edx
jbe 0x514f79
mov edi, dword [eax + 0xc]
mov dword [esp + 0x1c], edi
imul edx, edx, 0x70
mov edi, dword [esp + 0x1c]
add edi, edx
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x1c]
mov edi, dword [edi + edx + 0x44]
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x1c]
mov edi, dword [edi + edx + 0x18]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x1c]
mov edi, dword [edi + edx + 0x1c]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x1c], edi
or edx, edi
mov edx, dword [esp + 0x40]
mov dword [esp + 0x50], 0
jne 0x513a26
mov edi, dword [edx + 0x60]
mov dword [esp + 0x24], edi
mov edx, dword [edx + 0x64]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 8]
mov edi, dword [edx + 0x30]
mov dword [esp + 0x40], edi
mov edi, dword [edx + 0x34]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x4c], edi
xor edx, edi
mov edi, dword [esp + 0x24]
xor edi, dword [esp + 0x40]
or edi, edx
je 0x514366
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
sbb dword [esp + 0x1c], edx
mov edi, dword [esp + 0x38]
jb 0x512445
jmp 0x51239c
cmp dword [edx + 0x28], 0
jne 0x513aa4
mov edi, edx
mov edx, dword [edx + 0x20]
mov edi, dword [edi + 0x24]
mov dword [esp + 0x50], edx
add edx, 1
mov dword [esp + 0x48], edi
adc edi, 0x80000000
cmp edx, 2
sbb edi, 0
jb 0x51579a
mov edx, dword [esp + 0x24]
add edx, dword [esp + 0x50]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x1c]
adc edx, dword [esp + 0x48]
mov dword [esp + 0x1c], edx
seto byte [esp + 0x4c]
sar edx, 0x1f
lea edi, [edx - 0x80000000]
mov dword [esp + 0x48], edi
cmp byte [esp + 0x4c], 0
cmove edx, dword [esp + 0x24]
mov dword [esp + 0x50], edx
cmp byte [esp + 0x4c], 0
mov edx, dword [esp + 0x48]
cmove edx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x40]
jmp 0x5139d1
mov edi, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
mov edx, edi
jmp 0x5139d1
push eax
call fcn.004f1260
add esp, 4
jmp 0x513b0f
cmp edi, ecx
jne 0x514410
sub ecx, ebx
jb 0x5156e1
je 0x51291c
mov edi, dword [esi + 4]
add ecx, ebx
mov edx, ebx
cmp ecx, edi
je 0x513b30
mov dword [esp + 0x30], edi
cmp edx, ecx
je 0x513b1f
mov dword [esp + 0x2c], ecx
mov eax, dword [edx]
mov ecx, eax
shr ecx, 0xe
mov edi, edx
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x513abd
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov dword [edi], eax
mov dword [ecx], 0
mov edx, edi
add ecx, 4
add edx, 4
mov edi, dword [esp + 0x30]
cmp ecx, edi
jne 0x513aed
mov edi, dword [esi + 4]
sub edx, ebx
add edx, ebx
cmp edi, edx
je 0x513b6e
add edi, 0xfffffffc
test edi, edi
je 0x5156f0
mov ebx, edx
mov eax, dword [edi]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x513b76
mov dword [edi], 0
lea eax, [edi - 4]
mov edx, ebx
cmp edi, ebx
mov edi, eax
jne 0x513b3b
mov dword [esi + 4], edx
jmp 0x51291c
push eax
call fcn.004f1260
add esp, 4
jmp 0x513b5d
xor ecx, ecx
jmp 0x512570
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
mov edi, dword [esp + 0x14]
jmp 0x5131c9
mov eax, dword [ecx]
mov edi, ecx
mov edx, dword [eax]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x10], ecx
inc edx
xor ecx, ecx
cmp edx, dword [esp + 0x10]
cmovne ecx, edx
cmp dword [esp + 0x10], ecx
jbe 0x514511
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
lea eax, [esp + 0xd0]
push eax
call fcn.00533580
cmp byte [edi + 0x48], 0
je 0x514532
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0xd4]
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
mov dword [esp + 0x28], edx
xor edx, ecx
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], eax
xor edi, eax
or edi, edx
je 0x514471
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x10], edi
sbb dword [esp + 0x28], ecx
mov edx, dword [esp + 0x18]
jae 0x513363
mov eax, dword [edx + 0x18]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 0
cmp dword [edx + 8], 0
jne 0x5158d8
mov al, 1
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], 0xffffff
xor eax, eax
dec eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x34], eax
jmp 0x5131f0
mov ecx, dword [edi + 8]
call dword [0x63e63c]
push edi
call ecx
add esp, 4
jmp 0x5130bf
xor esi, esi
jmp 0x5126e3
mov dword [eax + 0x14], 0
mov esi, dword [edx]
mov dword [edx], ecx
test esi, esi
je 0x513525
mov ecx, esi
call fcn.00516eb0
push esi
call fcn.00564ea0
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x513525
mov ecx, dword [edi]
mov eax, dword [edi + 0xc]
cmp dword [ecx + 8], 0x5b9470
test eax, eax
je 0x513cb8
lock dec dword [eax]
je 0x5144c4
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x513cc4
lock dec dword [ebx]
je 0x513cd6
push edi
call fcn.00564ea0
add esp, 4
mov edx, dword [esp + 8]
jmp 0x51350a
mov eax, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x515b8e
mov dword [ebx + 0x10], 0
lea ecx, [ebx + 4]
call fcn.00407270
push ebx
call fcn.00564ea0
add esp, 4
jmp 0x513cc4
push edx
mov edi, edx
call fcn.004f0f10
mov edx, edi
add esp, 4
jmp 0x513d77
push edx
mov dword [esp + 0xc], edx
call fcn.004f0de0
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x513d6b
cmp ecx, edx
jbe 0x514541
mov esi, edx
shl esi, 4
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
je 0x513d83
mov edx, dword [ecx + 0x18]
mov edi, edx
shr edi, 0xe
mov ebx, edx
shr ebx, 0x13
mov eax, dword [ebx*4 + 0x64c804]
bt eax, edi
jb 0x513d1c
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov eax, dword [ebx*4 + 0x64c804]
bt eax, edi
jb 0x513d0d
test edx, edx
mov ebx, dword [esp + 0x20]
jne 0x511f90
xor eax, eax
dec eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf0], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0xe0], xmm0
movdqa xmmword [esp + 0xd0], xmm0
mov eax, dword [ebx + 0xf8]
mov ecx, dword [ebx + 0xfc]
sub ecx, eax
sar ecx, 4
cmp ecx, dword [esp + 0x18]
jbe 0x514541
mov edi, dword [eax + esi + 4]
cmp edi, dword [eax + esi + 8]
je 0x513e2c
mov edx, dword [edi + 0x18]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, eax
mov esi, edx
jb 0x513e3a
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x654804], 1
mov dword [esp + 0xd0], edx
movdqu xmm0, xmmword [edi]
movdqu xmmword [esp + 0xd8], xmm0
mov eax, dword [edi + 0x10]
mov dword [esp + 0xe8], eax
mov al, 1
lea ecx, [esp + 0xd0]
mov byte [ecx + 0x20], al
call fcn.00593070
mov edx, esi
jmp 0x511f90
mov byte [esp + 0xd0], 0
xor eax, eax
xor esi, esi
jmp 0x513e16
push edx
call fcn.004f0de0
mov edx, esi
add esp, 4
jmp 0x513df6
mov ecx, dword [esp + 0x20]
lea edx, [ecx + 0x1a8]
mov dword [esp + 0x24], edx
cmp eax, 0x18
jae 0x515aa4
mov eax, ecx
mov ecx, dword [ecx + 0x1a8]
mov edx, dword [eax + 0x1b4]
mov eax, edx
mov dword [esp + 0x1c], ecx
sub eax, ecx
mov dword [esp + 8], eax
cmp esi, eax
jb 0x515a3e
mov ecx, dword [esp + 8]
sar ecx, 1
cmp edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea eax, [eax + 0x1b8]
mov dword [esp + 0x80], eax
mov eax, 1
cmove ecx, eax
cmp ecx, 0x40000000
jae 0x5156ff
mov dword [esp + 8], ecx
lea eax, [ecx*4]
mov dword [esp + 0x38], eax
push eax
call fcn.00564ea5
add esp, 4
mov dword [esp + 0x70], eax
lea ecx, [eax + esi]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 8]
lea eax, [eax + ecx*4]
mov dword [esp + 8], eax
mov dword [esp + 0x7c], eax
push 0xfc0
call fcn.00564ea5
add esp, 4
cmp esi, dword [esp + 0x38]
je 0x515ace
mov edi, dword [esp + 0x24]
test edi, edi
mov esi, dword [esp + 0x20]
je 0x5144e1
mov dword [edi], eax
lea ecx, [edi + 4]
mov dword [esp + 0x78], ecx
mov ebx, dword [esi + 0x1b0]
cmp ebx, dword [esi + 0x1ac]
jne 0x5157f2
mov eax, dword [esi + 0x1a8]
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x1a8], edx
mov dword [esi + 0x1ac], edi
mov dword [esi + 0x1b0], ecx
mov ecx, dword [esp + 8]
mov dword [esi + 0x1b4], ecx
test eax, eax
jne 0x51578c
mov edi, dword [esi + 0x1ac]
mov ebx, dword [esi + 0x1b0]
jmp 0x51258a
cmp dword [ebx + 0x64], 0
jle 0x5120be
xor eax, eax
dec eax
mov dword [esp + 0x144], eax
mov dword [esp + 0x140], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x130], xmm0
movdqa xmmword [esp + 0x120], xmm0
movdqa xmmword [esp + 0x110], xmm0
movdqa xmmword [esp + 0x100], xmm0
movdqa xmmword [esp + 0xf0], xmm0
movdqa xmmword [esp + 0xe0], xmm0
movdqa xmmword [esp + 0xd0], xmm0
lea eax, [esp + 0xd0]
push eax
mov esi, ecx
call fcn.00517290
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x140], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 0x144], eax
mov ecx, dword [ebx + 0x70]
mov esi, dword [ebx + 0x74]
mov eax, esi
mov dword [esp + 0x18], ecx
sub eax, ecx
jb 0x515c37
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + 0x6c]
mov dword [esp + 8], ecx
inc eax
xor edx, edx
mov ecx, dword [esp + 8]
sub ecx, 1
cmovb ecx, edx
cmp ecx, eax
jae 0x5140d2
mov edx, ecx
shr edx, 2
add edx, ecx
cmp eax, edx
cmova edx, eax
cmp edx, 4
mov eax, 3
cmovae eax, edx
inc eax
mov ecx, pe_nt_image_headers32
mov dword [esp + 8], eax
mul ecx
mov ebx, eax
mov eax, dword [esp + 0x20]
lea ecx, [eax + 0x70]
mov dword [esp + 0xc], ecx
lea eax, [eax + 0x74]
mov dword [esp + 0x10], eax
jo 0x515ce5
mov eax, dword [esp + 0x20]
add eax, 0x68
mov dword [esp + 0x14], eax
push 0
push ebx
push 0x635c90
call fcn.00519780
add esp, 0xc
mov edi, eax
test eax, eax
jne 0x51408a
cmp byte [0x655008], 0
jne 0x515bd7
lea eax, [esp + 0x70]
mov ebx, edi
mov dword [eax], edi
mov edi, dword [esp + 8]
mov dword [eax + 4], edi
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push dword [esp + 0x10]
push dword [esp + 0x10]
push eax
push esi
call fcn.00405990
add esp, 0x10
push 0
mov esi, dword [esp + 0x24]
push dword [esi + 0x68]
push 0x635c90
call fcn.005087f0
add esp, 0xc
mov dword [esi + 0x68], ebx
mov dword [esi + 0x6c], edi
mov esi, dword [esi + 0x74]
cmp dword [esp + 8], esi
jb 0x5144f0
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x68]
imul ecx, esi, 0x78
movaps xmm0, xmmword [esp + 0xd0]
movups xmmword [eax + ecx], xmm0
movaps xmm0, xmmword [esp + 0xe0]
movapd xmm1, xmmword [esp + 0xf0]
movups xmmword [eax + ecx + 0x10], xmm0
movupd xmmword [eax + ecx + 0x20], xmm1
movaps xmm0, xmmword [esp + 0x100]
movups xmmword [eax + ecx + 0x30], xmm0
movups xmm0, xmmword [esp + 0x109]
movups xmmword [eax + ecx + 0x39], xmm0
mov edx, dword [esp + 0x120]
mov dword [eax + ecx + 0x50], edx
xor edx, edx
mov dword [esp + 0x120], edx
mov bl, byte [esp + 0x12a]
mov byte [eax + ecx + 0x5a], bl
movzx esi, word [esp + 0x128]
mov word [eax + ecx + 0x58], si
mov esi, dword [esp + 0x12c]
mov dword [eax + ecx + 0x5c], esi
mov dword [esp + 0x12c], edx
movsd xmm0, qword [esp + 0x130]
movsd qword [eax + ecx + 0x60], xmm0
mov esi, dword [esp + 0x138]
mov dword [eax + ecx + 0x68], esi
mov dword [esp + 0x138], edx
mov esi, dword [esp + 0x13c]
mov dword [eax + ecx + 0x6c], esi
movq xmm0, qword [esp + 0x140]
movq qword [eax + ecx + 0x70], xmm0
mov eax, dword [edi + 0x6c]
mov ecx, dword [edi + 0x74]
mov ebx, edi
lea esi, [eax - 1]
lea edi, [ecx + 1]
cmp ecx, esi
cmove edi, edx
mov dword [ebx + 0x74], edi
test edi, edi
je 0x515b9c
cmp eax, ecx
jb 0x5144f3
lea ecx, [esp + 0xd0]
call fcn.0051fa50
mov ebx, dword [esp + 0x20]
jmp 0x511e1c
cmp ebx, ecx
je 0x514228
mov dword [esp + 0x3c], ecx
mov eax, dword [ebx]
test eax, eax
je 0x514221
mov dword [esp + 0xc], eax
cmp ebx, edi
je 0x51421e
mov eax, dword [edi]
mov edx, eax
shr edx, 0xe
mov ecx, eax
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, edx
jb 0x515b54
mov eax, dword [esp + 0xc]
mov dword [edi], eax
mov dword [ebx], 0
mov ecx, dword [esp + 0x3c]
add edi, 4
add ebx, 4
cmp ebx, ecx
jne 0x5141e4
sub ecx, edi
jb 0x5156e1
je 0x512cc2
mov ebx, dword [esi + 4]
add ecx, edi
mov edx, edi
cmp ecx, ebx
je 0x514288
mov dword [esp + 0xc], ebx
cmp edx, ecx
je 0x514277
mov dword [esp + 0x3c], ecx
mov eax, dword [edx]
mov ecx, eax
shr ecx, 0xe
mov ebx, edx
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x5142ce
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
mov dword [ebx], eax
mov dword [ecx], 0
mov edx, ebx
add ecx, 4
add edx, 4
mov ebx, dword [esp + 0xc]
cmp ecx, ebx
jne 0x514245
mov ebx, dword [esi + 4]
sub edx, edi
add edx, edi
cmp ebx, edx
je 0x5142c6
add ebx, 0xfffffffc
test ebx, ebx
je 0x5156f0
mov edi, edx
mov eax, dword [ebx]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x5142d9
mov dword [ebx], 0
lea eax, [ebx - 4]
mov edx, edi
cmp ebx, edi
mov ebx, eax
jne 0x514293
mov dword [esi + 4], edx
jmp 0x512cc2
push eax
call fcn.004f1260
add esp, 4
jmp 0x514267
push eax
call fcn.004f1260
add esp, 4
jmp 0x5142b5
mov ecx, edx
push eax
call fcn.00517ff0
mov eax, dword [esp + 0x6c]
mov ecx, 0x4c4b40
add ecx, dword [esp + 0x68]
adc eax, 0
mov edx, 0x7fffffff
cmovno edx, eax
mov eax, 0xffffffff
cmovo ecx, eax
mov eax, dword [esp + 8]
mov dword [eax + 0x10], ecx
mov eax, dword [esp + 8]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 8]
jmp 0x51238c
mov eax, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x515b68
mov dword [ebx + 0x10], 0
lea ecx, [ebx + 4]
call fcn.00407270
push ebx
call fcn.00564ea0
add esp, 4
jmp 0x51371c
mov ebx, dword [esp + 0x20]
jmp 0x512086
mov edx, dword [esp + 8]
mov ebx, dword [edx + 0x38]
mov edi, dword [edx + 0x3c]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x1c], edi
xor edx, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x24], ebx
xor edi, ebx
or edi, edx
jne 0x515b76
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x54]
cmp edi, dword [edx + 0x40]
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
jl 0x512445
jmp 0x51239c
mov esi, dword [esp + 8]
mov ecx, esi
push eax
call fcn.00517ff0
mov eax, dword [esp + 0x6c]
mov ecx, 0x4c4b40
add ecx, dword [esp + 0x68]
adc eax, 0
mov edx, 0x7fffffff
cmovno edx, eax
mov eax, 0xffffffff
cmovo ecx, eax
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edx
jmp 0x5138e4
cmp edi, ebx
je 0x51440b
mov ecx, dword [ebx]
mov edx, ecx
shr edx, 0xe
mov dword [esp + 0x30], ecx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x64c804]
bt ecx, edx
jb 0x515bc4
mov dword [ebx], eax
mov dword [edi], 0
add ebx, 4
jmp 0x51441a
mov dword [esp + 0x2c], ecx
mov eax, dword [edi]
test eax, eax
jne 0x5143e1
add edi, 4
mov ecx, dword [esp + 0x2c]
cmp edi, ecx
je 0x513ad0
jmp 0x514414
push eax
call fcn.00564ea0
add esp, 4
jmp 0x51370c
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x63e63c]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x513586
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x63e63c]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x5135b9
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x38]
mov edi, dword [eax + 0x3c]
mov eax, dword [esp + 0xd8]
mov edx, dword [esp + 0xdc]
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], edi
xor edx, edi
mov edi, eax
mov dword [esp + 0x28], ecx
xor edi, ecx
or edi, edx
jne 0x515baf
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0x18]
cmp eax, dword [edx + 0x40]
mov ecx, dword [esp + 0x2c]
jl 0x513c1d
jmp 0x513363
push eax
call fcn.00564ea0
add esp, 4
jmp 0x513cb8
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x624173
call fcn.00591ed0
int3
int3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x624173
call fcn.00591ed0
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
push str....._third_partylibc_srcincludeoptional:806:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcincludeoptional:791:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624173
call fcn.00591ed0
xor ecx, ecx
jmp 0x5120b0
int3
int3
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x512c7a
mov eax, edx
jmp 0x512bf0
mov eax, dword [ebx + 0xe4]
mov ecx, dword [ebx + 0xe8]
mov esi, edx
mov edx, ecx
sub edx, eax
sar edx, 2
cmp edx, esi
mov edx, 0
je 0x511fa4
lea edi, [ebx + 0x108]
mov edx, dword [esp + 0x18]
mov ebx, edx
jmp 0x5145d6
xor edx, edx
mov ebx, dword [esp + 0x20]
jmp 0x511fa4
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0xe4]
mov ecx, dword [ecx + 0xe8]
inc bl
movzx esi, bl
mov edx, ecx
sub edx, eax
sar edx, 2
mov dword [esp + 0x18], esi
cmp edx, esi
je 0x5145a7
mov edx, dword [esp + 0x20]
mov edx, dword [edx + 0xf0]
mov esi, dword [esp + 0x18]
bt edx, esi
jae 0x5145c2
mov ecx, edi
push dword [esp + 0x18]
call fcn.00564a50
test al, al
jne 0x5145b2
xor eax, eax
dec eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf0], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0xe0], xmm0
movdqa xmmword [esp + 0xd0], xmm0
movzx eax, bl
mov ecx, edi
push eax
lea eax, [esp + 0xd4]
push eax
call fcn.00560cf0
xor esi, esi
cmp byte [esp + 0xf0], 0
je 0x514645
mov esi, dword [esp + 0xd0]
lea ecx, [esp + 0xd0]
call fcn.00593070
mov ebx, dword [esp + 0x20]
mov edx, esi
jmp 0x511fa4
mov esi, 0xfc0
add esi, dword [edi + edx*4 - 4]
jmp 0x5126eb
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x5128d8
mov eax, edx
jmp 0x51284d
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x512825
mov eax, edx
mov ebx, dword [esp + 0x20]
jmp 0x512845
int3
int3
int3
int3
int3
int3
mov ecx, dword [ebx + 0x128]
sub ecx, dword [ebx + 0x124]
sar ecx, 2
jmp 0x512804
movzx eax, al
lea ecx, [esp + 0xd0]
mov dword [ecx], str.SequenceManagerImpl::SelectNextTask
lea edx, [esp + 0x70]
push 1
push ecx
push edx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x511b38
movzx eax, al
lea ecx, [esp + 0xd0]
mov dword [ecx], str.SequenceManagerImpl::MoveReadyDelayedTasksToWorkQueues
lea edx, [esp + 0x70]
push 1
push ecx
push edx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x511b75
movzx eax, al
lea ecx, [esp + 0xd0]
mov dword [ecx], 0
lea edx, [esp + 0x70]
push 2
push ecx
push edx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x511dfc
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x70]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x512a3f
movzx esi, al
lea ebx, [esp + 0x70]
mov edi, dword [esp + 0x3c]
mov ecx, edi
mov eax, edx
mov edx, ebx
push eax
call fcn.005c5460
add esp, 4
lea eax, [esp + 0x68]
mov dword [eax], str.SequenceManager
mov dword [esp + 0xd0], str.snapshot
lea edx, [esp + 0xa4]
mov ecx, esi
push ebx
lea esi, [esp + 0xd4]
push esi
push edi
push eax
call fcn.005c5df0
add esp, 0x10
mov ecx, dword [ebx]
mov dword [ebx], 0
test ecx, ecx
jne 0x5147c6
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 8]
jmp 0x511fc2
push 1
call fcn.005c6de0
jmp 0x5147b9
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x511c8f
mov eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x511da9
int3
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManagerImpl::NotifyWillProcessTaskObservers
lea ecx, [esp + 0x70]
push 1
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x512702
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x68]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x5129d6
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.WillProcessTaskObservers
lea ecx, [esp + 0x70]
push 1
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x51279e
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x70]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x51295f
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.QueueNotifyWillProcessTask
lea ecx, [esp + 0x70]
push 1
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x51297a
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x70]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x5129b4
push str....._third_partylibc_srcincludeoptional:796:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x624173
call fcn.00591ed0
mov ecx, dword [esp + 0x24]
xor edx, edx
inc edx
add ecx, edx
mov dword [esp + 0x48], ecx
mov edx, dword [esp + 0x34]
adc edx, 0x80000000
mov dword [esp + 0x50], 0
xor ecx, ecx
inc ecx
cmp ecx, dword [esp + 0x48]
sbb dword [esp + 0x50], edx
jb 0x51595c
mov edx, dword [esp + 0x24]
xor edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
xor ecx, dword [esp + 0x44]
or ecx, edx
je 0x51595c
int3
mov ebx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
mov dword [esp + 0x28], eax
add eax, 1
mov dword [esp + 0xc], ebx
adc ebx, 0x80000000
cmp eax, 2
mov eax, dword [ecx]
mov dword [esp + 0x10], eax
sbb ebx, 0
mov eax, dword [ecx + 4]
mov dword [esp + 0x14], eax
jb 0x5149d3
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
sbb eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
seto byte [esp + 0xc]
mov ebx, eax
sar ebx, 0x1f
lea eax, [ebx - 0x80000000]
cmp byte [esp + 0xc], 0
cmove ebx, dword [esp + 0x10]
cmp byte [esp + 0xc], 0
cmove eax, dword [esp + 0x14]
jmp 0x511cbb
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0xc]
or eax, ebx
je 0x515ba3
mov eax, 0x80000000
mov ebx, dword [esp + 0xc]
shr ebx, 0x1f
not ebx
mov dword [esp + 0xc], ebx
xor ebx, ebx
inc ebx
add dword [esp + 0xc], ebx
mov ebx, dword [esp + 0xc]
adc eax, 0xffffffff
jmp 0x511cbb
mov ebx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
mov dword [esp + 0x28], eax
add eax, 1
mov dword [esp + 0xc], ebx
adc ebx, 0x80000000
cmp eax, 2
mov eax, dword [ecx]
mov dword [esp + 0x10], eax
sbb ebx, 0
mov eax, dword [ecx + 4]
mov dword [esp + 0x14], eax
jb 0x514a7d
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
sbb eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
seto byte [esp + 0xc]
mov ebx, eax
sar ebx, 0x1f
lea eax, [ebx - 0x80000000]
cmp byte [esp + 0xc], 0
cmove ebx, dword [esp + 0x10]
cmp byte [esp + 0xc], 0
cmove eax, dword [esp + 0x14]
jmp 0x511dd5
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0xc]
or eax, ebx
je 0x515ba6
mov eax, 0x80000000
mov ebx, dword [esp + 0xc]
shr ebx, 0x1f
not ebx
mov dword [esp + 0xc], ebx
xor ebx, ebx
inc ebx
add dword [esp + 0xc], ebx
mov ebx, dword [esp + 0xc]
adc eax, 0xffffffff
jmp 0x511dd5
int3
int3
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
xor edi, edi
inc edi
add ecx, edi
mov edx, dword [esp + 0x14]
mov edi, 0x80000000
adc edx, edi
mov dword [esp + 0x24], 0
xor edi, edi
inc edi
cmp edi, ecx
sbb dword [esp + 0x24], edx
mov dword [esp + 0x2c], eax
jae 0x514afc
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
jmp 0x5131c9
mov edx, dword [esp + 0x10]
xor edx, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
xor eax, edi
or eax, edx
mov edx, dword [esp + 0x30]
je 0x5131c9
int3
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x512bc7
mov eax, edx
jmp 0x512be3
mov eax, dword [esi + 0xc]
mov edi, dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x512545
lea edi, [esi + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x514b5e
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov eax, dword [esi + 0x20]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + 8]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 0x38], eax
mov ebx, dword [esi + 0x6c]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esp + 0x9c], 0x122
mov al, byte [0x64955e]
test al, al
je 0x512545
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
sub ecx, ebx
sar ecx, 4
imul ecx, ecx, 0xb6db6db7
mov ebx, dword [esp + 8]
add ebx, ecx
add ebx, edx
movzx edi, al
push dword [esi + 4]
call fcn.005d0150
add esp, 4
lea ecx, [esp + 0xa0]
mov dword [ecx], eax
lea eax, [esp + 0x70]
mov dword [eax], ebx
lea edx, [esp + 0x68]
mov dword [edx], 0x626b4f
xor esi, esi
lea ebx, [esp + 0x9c]
push eax
push edx
push esi
push 0x43
push 0x626958
push esi
push ecx
push ebx
push edi
call fcn.005d0180
add esp, 0x24
jmp 0x512545
call fcn.005cefc0
jmp 0x513363
mov ecx, dword [ebx + 0x14c]
sub ecx, dword [ebx + 0x148]
sar ecx, 2
jmp 0x512ba6
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
mov edx, dword [esp + 0x24]
xor edx, ecx
mov esi, dword [esp + 0x34]
xor esi, eax
or esi, edx
je 0x514c52
cmp dword [esp + 0x24], ecx
sbb dword [esp + 0x34], eax
mov edx, dword [esp + 0x14]
jmp 0x514c61
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
cmp eax, dword [ecx + 0x10]
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
jl 0x511f62
jmp 0x511f64
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x512f55
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.WillProcessTaskTimeObservers
lea ecx, [esp + 0x70]
push 1
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x512b40
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x68]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x512d01
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.QueueOnTaskStarted
lea ecx, [esp + 0x68]
push 1
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059ce00
add esp, 0x10
jmp 0x512d1c
movzx eax, al
mov dword [esp + 0xd0], 0
lea ecx, [esp + 0x68]
push 2
lea edx, [esp + 0xd4]
push edx
push ecx
push eax
call fcn.0059d990
add esp, 0x10
jmp 0x512d87
mov ecx, dword [esi + 8]
call dword [0x63e63c]
push esi
call ecx
add esp, 4
jmp 0x512d70
cmp byte [eax + 0xa4], 0
je 0x5130b6
mov eax, dword [edx]
mov ecx, dword [eax + 4]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x18], edx
call dword [0x63e63c]
mov ecx, dword [esp + 0x18]
call dword [esp + 0xc]
jmp 0x5130b6
mov eax, dword [0x6496b8]
mov dword [esp + 8], eax
mov edx, dword [0x6496bc]
mov dword [esp + 0xc], edx
push edx
push eax
mov dword [esp + 0x1c], ecx
push ecx
push ebx
call fcn.00588630
mov dword [esp + 0x10], eax
mov dword [esp + 0x30], edx
mul dword [esp + 8]
mov dword [esp + 0x2c], eax
mov eax, edx
mov ecx, dword [esp + 0x10]
imul ecx, dword [esp + 0xc]
add eax, ecx
mov edx, dword [esp + 0x30]
imul ecx, edx, 0xf4240
mov dword [esp + 0x28], ecx
imul edx, dword [esp + 8]
add edx, eax
sub ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
sbb ecx, edx
mov edx, 0xf4240
mov eax, dword [esp + 0x10]
mul edx
mov dword [esp + 0x10], eax
add edx, dword [esp + 0x28]
mov dword [esp + 0x14], edx
mov eax, ebx
mov edx, 0xf4240
mul edx
imul ecx, ecx, 0xf4240
add edx, ecx
push dword [esp + 0xc]
push dword [esp + 0xc]
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
jmp 0x511c51
mov eax, dword [0x6496b8]
mov dword [esp + 8], eax
mov edx, dword [0x6496bc]
mov dword [esp + 0xc], edx
push edx
push eax
mov dword [esp + 0x1c], ecx
push ecx
push ebx
call fcn.00588630
mov dword [esp + 0x10], eax
mov dword [esp + 0x30], edx
mul dword [esp + 8]
mov dword [esp + 0x2c], eax
mov eax, edx
mov ecx, dword [esp + 0x10]
imul ecx, dword [esp + 0xc]
add eax, ecx
mov edx, dword [esp + 0x30]
imul ecx, edx, 0xf4240
mov dword [esp + 0x28], ecx
imul edx, dword [esp + 8]
add edx, eax
sub ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
sbb ecx, edx
mov edx, 0xf4240
mov eax, dword [esp + 0x10]
mul edx
mov dword [esp + 0x10], eax
add edx, dword [esp + 0x28]
mov dword [esp + 0x14], edx
mov eax, ebx
mov edx, 0xf4240
mul edx
imul ecx, ecx, 0xf4240
add edx, ecx
push dword [esp + 0xc]
push dword [esp + 0xc]
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
jmp 0x511d6b
mov eax, dword [0x6496b8]
mov dword [esp + 0x1c], eax
mov ecx, dword [0x6496bc]
mov dword [esp + 0x24], ecx
push ecx
push eax
push edi
push esi
call fcn.00588630
mov ebx, edx
mov ecx, eax
mul dword [esp + 0x1c]
mov dword [esp + 0x38], eax
mov eax, ecx
imul ecx, dword [esp + 0x24]
add edx, ecx
imul ecx, ebx, 0xf4240
mov dword [esp + 0x44], ecx
imul ebx, dword [esp + 0x1c]
add ebx, edx
sub esi, dword [esp + 0x38]
sbb edi, ebx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 0x38], eax
mov ebx, edx
add ebx, dword [esp + 0x44]
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esp + 0x24]
push dword [esp + 0x20]
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0x38]
adc edx, ebx
jmp 0x51231a
xor edi, edi
inc edi
mov eax, ecx
add eax, edi
mov esi, ebx
adc esi, 0x80000000
mov dword [esp + 0x4c], 0
cmp edi, eax
sbb dword [esp + 0x4c], esi
jae 0x514f64
mov edi, dword [esp + 0x38]
jmp 0x512487
xor ecx, dword [esp + 0x1c]
xor ebx, edx
or ebx, ecx
mov edi, dword [esp + 0x38]
je 0x512487
int3
int3
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x70]
push eax
call fcn.004f4260
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x5144f6
cmp dword [eax + 0x14], 1
je 0x515d92
mov ecx, dword [eax]
mov edx, dword [eax + 4]
cmp dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x74]
sbb ecx, edx
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
jl 0x51500d
mov ebx, dword [esp + 8]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.0051e330
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x515ca8
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x5135c9
jmp 0x514f7c
mov byte [esp + 0x70], 0
xor eax, eax
dec eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], eax
jmp 0x5150bc
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
mov eax, dword [esp + 8]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0x4ee1e0
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x514fe8
mov ecx, dword [esp + 8]
cmp byte [ecx + 0xa4], 0
je 0x514fe8
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x78], 0
mov ecx, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x20]
jne 0x515d19
mov edx, dword [esp + 8]
mov edx, dword [edx + 8]
mov bl, byte [edx + 0x35]
mov dword [esp + 0x10], 0
mov esi, dword [eax + 0x28]
xor edx, edx
cmp esi, 2
cmovne edx, esi
cmp bl, cl
cmovae edx, esi
mov ecx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
mov ebx, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x80], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x84], edx
mov al, 1
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov byte [esp + 0x88], al
mov eax, dword [esp + 8]
mov esi, dword [eax + 0x5c]
test esi, esi
jne 0x515e5b
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 8]
mov cl, byte [eax + 0x110]
cmp byte [esp + 0xc], 0
je 0x515286
test cl, cl
je 0x515286
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0xf8]
xor ecx, edi
mov ebx, dword [eax + 0xfc]
xor ebx, edx
or ebx, ecx
jne 0x515153
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x100]
xor ecx, dword [esp + 0x28]
mov ebx, dword [eax + 0x104]
xor ebx, dword [esp + 0x2c]
or ebx, ecx
jne 0x515153
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
cmp dword [eax + 0x108], ecx
jne 0x515153
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x14]
cmp dword [eax + 0x10c], ecx
je 0x51525a
mov esi, dword [esp + 8]
mov dword [esp + 0x34], edi
mov dword [esi + 0xf8], edi
mov dword [esi + 0xfc], edx
mov eax, dword [esp + 0x28]
mov dword [esi + 0x100], eax
mov edi, dword [esp + 0x2c]
mov dword [esi + 0x104], edi
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x108], ecx
mov eax, dword [esp + 0x14]
mov dword [esi + 0x10c], eax
mov ebx, dword [esp + 0xc]
mov byte [esi + 0x110], bl
lea eax, [esp + 0x89]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x89]
mov eax, dword [eax + 3]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x30]
mov dword [esi + 0x111], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0x58]
mov dword [esp + 0x30], eax
mov dword [esp + 0xd4], edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0xd0], eax
mov dword [esp + 0xdc], edi
mov eax, dword [esp + 0x28]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xe0], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0xe4], eax
mov byte [esp + 0xe8], bl
lea ecx, [esp + 0x89]
mov eax, dword [ecx + 3]
mov dword [esp + 0xec], eax
mov eax, dword [ecx]
mov dword [esp + 0xe9], eax
sub esp, 0x28
movdqu xmm0, xmmword [esp + 0xf8]
movupd xmm1, xmmword [esp + 0x108]
movupd xmmword [esp + 0x18], xmm1
movdqu xmmword [esp + 8], xmm0
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], esi
mov ecx, dword [esp + 0x58]
call fcn.0050f670
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0x20]
je 0x511de5
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
cmp ecx, eax
je 0x511de5
jmp 0x515cc4
cmp byte [esp + 0xc], 0
setne ch
cmp ch, cl
je 0x51525a
jmp 0x515153
mov eax, dword [esi + 0xc]
mov edi, dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [esp + 8]
cmp edi, eax
jne 0x51390b
lea edi, [esi + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x5152c4
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov eax, dword [esi + 0x20]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov ecx, dword [ecx + 8]
mov dword [esp + 0xc], ecx
mov eax, dword [eax + 8]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 0x14], eax
mov ebx, dword [esi + 0x6c]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esp + 0xa0], 0x122
mov al, byte [0x64955e]
test al, al
jne 0x515df1
mov edx, dword [esp + 8]
jmp 0x51390b
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x70]
push eax
call fcn.004f4260
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x5144f6
cmp dword [eax + 0x14], 1
je 0x515d33
mov ecx, dword [eax]
mov edx, dword [eax + 4]
cmp dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x74]
sbb ecx, edx
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
jl 0x5153a2
mov ebx, dword [esp + 8]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.0051e330
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x515c6b
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x513596
jmp 0x515311
mov byte [esp + 0x70], 0
xor eax, eax
dec eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
jmp 0x515467
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
mov eax, dword [esp + 8]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0x4ee1e0
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x51537d
mov ecx, dword [esp + 8]
cmp byte [ecx + 0xa4], 0
je 0x51537d
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x78], 0
mov ecx, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0xc], ecx
jne 0x515cfd
mov ecx, dword [esp + 8]
mov edx, dword [ecx + 8]
mov bl, byte [edx + 0x35]
mov dword [esp + 0x10], 0
mov ecx, dword [eax + 0x28]
xor edx, edx
cmp ecx, 2
cmovne edx, ecx
cmp bl, byte [esp + 0xc]
cmovae edx, ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0xc], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x7c], ecx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x80], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x84], edx
mov al, 1
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov byte [esp + 0x88], al
mov eax, dword [esp + 8]
mov ebx, dword [eax + 0x5c]
test ebx, ebx
jne 0x515f0b
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 8]
mov cl, byte [eax + 0x110]
cmp byte [esp + 0xc], 0
je 0x51563f
test cl, cl
je 0x51563f
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0xf8]
xor ecx, dword [esp + 0x14]
mov ebx, dword [eax + 0xfc]
xor ebx, edx
or ebx, ecx
jne 0x515504
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x100]
xor ecx, dword [esp + 0x2c]
mov ebx, dword [eax + 0x104]
xor ebx, dword [esp + 0x30]
or ebx, ecx
jne 0x515504
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
cmp dword [eax + 0x108], ecx
jne 0x515504
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x28]
cmp dword [eax + 0x10c], ecx
je 0x515613
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x14]
mov dword [ecx + 0xf8], eax
mov dword [ecx + 0xfc], edx
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x100], eax
mov eax, dword [esp + 0x30]
mov dword [ecx + 0x104], eax
mov ebx, dword [esp + 0x10]
mov dword [ecx + 0x108], ebx
mov ebx, dword [esp + 0x28]
mov dword [ecx + 0x10c], ebx
mov ebx, dword [esp + 0xc]
mov byte [ecx + 0x110], bl
lea ebx, [esp + 0x89]
mov ebx, dword [ebx]
mov dword [esp + 0x34], ebx
lea ebx, [esp + 0x89]
mov ebx, dword [ebx + 3]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x34]
mov dword [ecx + 0x111], ebx
mov ebx, dword [esp + 0x1c]
mov dword [ecx + 0x114], ebx
mov ebx, dword [ecx + 0x58]
mov dword [esp + 0x34], ebx
mov dword [esp + 0xd4], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xd0], edx
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xc]
mov byte [esp + 0xe8], al
lea edx, [esp + 0x89]
mov eax, dword [edx + 3]
mov dword [esp + 0xec], eax
mov eax, dword [edx]
mov dword [esp + 0xe9], eax
sub esp, 0x28
movdqu xmm0, xmmword [esp + 0xf8]
movupd xmm1, xmmword [esp + 0x108]
movupd xmmword [esp + 0x18], xmm1
movdqu xmmword [esp + 8], xmm0
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov ecx, dword [esp + 0x5c]
call fcn.0050f670
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0x20]
je 0x511ccb
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
cmp ecx, eax
je 0x511ccb
jmp 0x515c87
cmp byte [esp + 0xc], 0
setne ch
cmp ch, cl
je 0x515613
jmp 0x515504
mov ebx, dword [0x6496b8]
mov dword [esp + 0x3c], ebx
mov eax, dword [0x6496bc]
mov dword [esp + 0x18], eax
push eax
push ebx
push edi
push esi
call fcn.00588630
mov dword [esp + 0x28], edx
mov ecx, eax
mul ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], ecx
imul ecx, dword [esp + 0x18]
add edx, ecx
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
imul ecx, eax, 0xf4240
mov dword [esp + 0x10], ecx
imul eax, dword [esp + 0x3c]
add eax, edx
sub esi, dword [esp + 0xc]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esp + 0x14]
mul ecx
mov dword [esp + 0xc], eax
add edx, dword [esp + 0x10]
mov dword [esp + 0x10], edx
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esp + 0x18]
push dword [esp + 0x40]
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0xc]
adc edx, dword [esp + 0x10]
jmp 0x512ef6
push str....._third_partylibc_srcinclude_vector:1557:_assertion___first_____last_failed:_vector::erase_first__last__called_with_invalid_range_n
push 0x624173
call fcn.00591ed0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x624173
call fcn.00591ed0
call fcn.005957f0
mov ebx, dword [0x6496b8]
mov dword [esp + 0x28], ebx
mov eax, dword [0x6496bc]
mov dword [esp + 0x18], eax
push eax
push ebx
push esi
push edi
mov dword [esp + 0x1c], edi
call fcn.00588630
mov edi, eax
mov dword [esp + 0x14], eax
mov ecx, edx
mul ebx
imul edi, dword [esp + 0x18]
add edx, edi
imul edi, ecx, 0xf4240
mov dword [esp + 0x10], edi
mov ebx, dword [esp + 0x28]
imul ecx, ebx
add ecx, edx
mov edi, dword [esp + 0xc]
sub edi, eax
sbb esi, ecx
mov ecx, 0xf4240
mov eax, dword [esp + 0x14]
mul ecx
mov dword [esp + 0xc], eax
add edx, dword [esp + 0x10]
mov dword [esp + 0x10], edx
mov eax, edi
mul ecx
imul ecx, esi, 0xf4240
add edx, ecx
push dword [esp + 0x18]
push ebx
push edx
push eax
call fcn.00588630
add eax, dword [esp + 0xc]
adc edx, dword [esp + 0x10]
jmp 0x513843
push eax
call fcn.00564ea0
add esp, 4
jmp 0x513f59
xor edx, edx
inc edx
mov edi, dword [esp + 0x24]
add edi, edx
mov ebx, dword [esp + 0x1c]
adc ebx, 0x80000000
mov dword [esp + 0x4c], 0
xor edx, edx
inc edx
cmp edx, edi
sbb dword [esp + 0x4c], ebx
jb 0x5157e5
mov edi, dword [esp + 0x24]
xor edi, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
xor edx, dword [esp + 0x48]
or edx, edi
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
je 0x5139d1
jmp 0x515b8b
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
jmp 0x5139d1
lea esi, [esp + 0x70]
add ebx, 0xfffffffc
mov ecx, esi
mov edx, ebx
call fcn.005c6c30
mov eax, dword [esp + 0x20]
cmp ebx, dword [eax + 0x1ac]
jne 0x5157f6
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x1a8]
mov edx, dword [ecx + 0x1b0]
mov esi, dword [esp + 0x70]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x1c], esi
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 8]
mov dword [ecx + 0x1a8], esi
mov esi, dword [esp + 0x1c]
mov dword [ecx + 0x1ac], esi
mov dword [ecx + 0x1b0], edi
mov esi, dword [esp + 0x24]
mov dword [ecx + 0x1b4], esi
cmp ebx, edx
je 0x515878
add ebx, 4
add edx, 4
cmp edx, 8
je 0x5156f0
add edx, 0xfffffffc
cmp ebx, edx
jne 0x515868
mov esi, dword [esp + 0x20]
jmp 0x513f51
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0x38]
mov dword [esp + 0x14], edx
mov edx, dword [ecx + 0x3c]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x2c], edx
xor ecx, edx
mov edx, ecx
mov ecx, dword [esp + 0x40]
xor ecx, dword [esp + 0x14]
or ecx, edx
jne 0x5158bd
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x4c]
cmp edx, dword [ecx + 0x40]
jl 0x515998
jmp 0x515c4f
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x2c]
sbb dword [esp + 0x44], ecx
jl 0x515998
jmp 0x515c4f
mov dword [esp + 0x2c], ecx
mov al, 1
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], 0xffffff
mov eax, dword [edx]
mov edi, dword [eax]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x1c], ecx
inc edi
cmp edi, ecx
mov edx, 0
cmovne edx, edi
cmp dword [esp + 0x1c], edx
jbe 0x514514
mov ecx, edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x34], edx
imul ecx, ecx, 0x70
mov edx, dword [esp + 0x34]
add edx, ecx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x34]
mov edx, dword [edx + ecx + 0x44]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x34]
mov edx, dword [edx + ecx + 0x18]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x34]
mov edx, dword [edx + ecx + 0x1c]
mov dword [esp + 0x40], 0
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x34], edx
or ecx, edx
mov dword [esp + 0x44], 0
jne 0x5159a1
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 0x60]
mov dword [esp + 0x34], edx
mov edx, dword [ecx + 0x64]
mov ecx, edx
xor ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x34]
xor ecx, dword [esp + 0x14]
or ecx, dword [esp + 0x24]
je 0x515881
mov ecx, dword [esp + 0x34]
cmp ecx, dword [esp + 0x14]
sbb edx, dword [esp + 0x2c]
jae 0x515c4f
mov edx, dword [esp + 0x1c]
jmp 0x513187
mov ecx, dword [esp + 0x38]
cmp dword [ecx + 0x28], 0
jne 0x515a29
mov edx, dword [esp + 0x38]
mov ecx, dword [edx + 0x20]
mov edx, dword [edx + 0x24]
mov dword [esp + 0x40], ecx
add ecx, 1
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], edx
mov ecx, edx
adc ecx, 0x80000000
cmp dword [esp + 0x48], 2
sbb ecx, 0
jb 0x51491b
mov ecx, dword [esp + 0x24]
add ecx, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x34]
adc edx, dword [esp + 0x44]
mov dword [esp + 0x34], edx
seto byte [esp + 0x48]
sar edx, 0x1f
lea ecx, [edx - 0x80000000]
mov dword [esp + 0x44], ecx
cmp byte [esp + 0x48], 0
cmove edx, dword [esp + 0x24]
mov dword [esp + 0x40], edx
cmp byte [esp + 0x48], 0
mov edx, dword [esp + 0x44]
cmove edx, dword [esp + 0x34]
mov dword [esp + 0x44], edx
jmp 0x51595c
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x44], ecx
jmp 0x51595c
mov edi, dword [esp + 0x24]
cmp edx, ebx
je 0x515a69
push 0xfc0
call fcn.00564ea5
add esp, 4
lea edx, [esp + 0x70]
mov dword [edx], eax
mov ecx, edi
call fcn.005c6ae0
mov esi, dword [esp + 0x20]
jmp 0x513f59
push 0xfc0
call fcn.00564ea5
add esp, 4
lea ebx, [esp + 0x70]
mov dword [ebx], eax
mov ecx, edi
mov edx, ebx
call fcn.005c6c30
mov esi, dword [esp + 0x20]
mov eax, dword [esi + 0x1ac]
mov ecx, dword [eax]
mov dword [ebx], ecx
add eax, 4
mov dword [esi + 0x1ac], eax
lea edx, [esp + 0x70]
mov ecx, edi
jmp 0x515ac4
add eax, 0xffffffe8
mov dword [ecx + 0x1b8], eax
mov eax, dword [edi]
mov esi, ecx
lea edx, [esp + 0x70]
mov dword [edx], eax
add edi, 4
mov dword [ecx + 0x1ac], edi
mov ecx, dword [esp + 0x24]
call fcn.005c6ae0
jmp 0x513f59
mov dword [esp + 0x38], eax
test esi, esi
jle 0x515af5
shr esi, 1
add esi, 2
and esi, 0xfffffffc
mov eax, dword [esp + 0x24]
sub eax, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x38]
jmp 0x513f00
sar esi, 1
cmp ebx, edi
mov eax, 1
cmove esi, eax
cmp esi, 0x40000000
jae 0x5156ff
lea eax, [esi*4]
push eax
call fcn.00564ea5
add esp, 4
mov edi, eax
lea eax, [eax + esi*4]
and esi, 0xfffffffc
add esi, edi
mov dword [esp + 0x70], edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x74], esi
mov dword [esp + 8], eax
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x1c], 0
je 0x515b4e
push dword [esp + 0x1c]
call fcn.00564ea0
add esp, 4
mov dword [esp + 0x1c], edi
jmp 0x515aec
push eax
call fcn.004f1260
add esp, 4
mov eax, dword [ebx]
mov dword [esp + 0xc], eax
jmp 0x51420e
push eax
call fcn.004f0f10
add esp, 4
jmp 0x514340
mov edx, dword [esp + 0x24]
cmp dword [esp + 0x50], edx
mov edx, dword [esp + 0x1c]
sbb dword [esp + 0x48], edx
jmp 0x514397
int3
push eax
call fcn.004f0f10
add esp, 4
jmp 0x513cf3
mov ecx, esi
jmp 0x5141bf
int3
int3
int3
int3
cmp eax, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
sbb eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
jmp 0x5144b5
push dword [esp + 0x30]
call fcn.004f1260
add esp, 4
mov eax, dword [edi]
jmp 0x514403
push ebx
call fcn.005cb000
add esp, 4
test al, al
jne 0x514067
jmp 0x51408a
mov edx, dword [esp + 8]
xor edx, dword [esp + 0xc]
xor ebx, ecx
or ebx, edx
je 0x515ba9
shr ecx, 0x1f
not ecx
xor edx, edx
inc edx
add ecx, edx
mov edx, 0x80000000
adc edx, 0xffffffff
jmp 0x51533d
mov edx, dword [esp + 8]
xor edx, dword [esp + 0xc]
xor ebx, ecx
or ebx, edx
je 0x515bac
shr ecx, 0x1f
not ecx
xor edx, edx
inc edx
add ecx, edx
mov edx, 0x80000000
adc edx, 0xffffffff
jmp 0x514fa8
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x6c]
mov eax, esi
sub eax, dword [esp + 0x18]
mov dword [esp + 8], ecx
add eax, ecx
jmp 0x51400a
xor eax, eax
dec eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x34], eax
jmp 0x5131ec
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x63e63c]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x51536b
mov ecx, dword [esp + 8]
push dword [ebp + 0xc]
call fcn.00535dc0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x515627
jmp 0x511ccb
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x63e63c]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x514fd6
mov ecx, dword [esp + 8]
push dword [ebp + 0xc]
call fcn.00535dc0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x51526e
jmp 0x511de5
int3
mov ecx, dword [esp + 8]
mov edx, dword [ecx + 8]
mov bl, byte [edx + 0x35]
xor ecx, ecx
cmp bl, byte [esp + 0xc]
setae cl
mov dword [esp + 0x10], ecx
jmp 0x515405
mov edx, dword [esp + 8]
mov edx, dword [edx + 8]
mov bl, byte [edx + 0x35]
xor edx, edx
cmp bl, cl
setae dl
mov dword [esp + 0x10], edx
jmp 0x51506c
mov ecx, dword [eax + 0xc]
mov ebx, dword [eax + 8]
mov dword [esp + 0xc], ebx
add ebx, 1
mov edx, ecx
adc edx, 0x80000000
cmp ebx, 2
mov ebx, dword [eax]
mov dword [esp + 8], ebx
sbb edx, 0
mov ebx, dword [eax + 4]
jb 0x515bed
mov edx, dword [esp + 8]
sub edx, dword [esp + 0xc]
mov dword [esp + 8], edx
sbb ebx, ecx
seto byte [esp + 0xc]
mov ecx, ebx
sar ecx, 0x1f
lea edx, [ecx - 0x80000000]
cmp byte [esp + 0xc], 0
cmove ecx, dword [esp + 8]
cmp byte [esp + 0xc], 0
cmove edx, ebx
jmp 0x51533d
mov ecx, dword [eax + 0xc]
mov ebx, dword [eax + 8]
mov dword [esp + 0xc], ebx
add ebx, 1
mov edx, ecx
adc edx, 0x80000000
cmp ebx, 2
mov ebx, dword [eax]
mov dword [esp + 8], ebx
sbb edx, 0
mov ebx, dword [eax + 4]
jb 0x515c12
mov edx, dword [esp + 8]
sub edx, dword [esp + 0xc]
mov dword [esp + 8], edx
sbb ebx, ecx
seto byte [esp + 0xc]
mov ecx, ebx
sar ecx, 0x1f
lea edx, [ecx - 0x80000000]
cmp byte [esp + 0xc], 0
cmove ecx, dword [esp + 8]
cmp byte [esp + 0xc], 0
cmove edx, ebx
jmp 0x514fa8
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
sub ecx, ebx
sar ecx, 4
imul ecx, ecx, 0xb6db6db7
mov ebx, dword [esp + 0x18]
add ebx, ecx
add ebx, edx
movzx edi, al
push dword [esi + 4]
call fcn.005d0150
add esp, 4
lea ecx, [esp + 0xa4]
mov dword [ecx], eax
lea eax, [esp + 0x70]
mov dword [eax], ebx
lea edx, [esp + 0x68]
mov dword [edx], 0x626b4f
xor esi, esi
lea ebx, [esp + 0xa0]
push eax
push edx
push esi
push 0x43
push 0x626958
push esi
push ecx
push ebx
push edi
call fcn.005d0180
add esp, 0x24
jmp 0x515308
mov eax, dword [esp + 8]
cmp byte [eax + 0xa4], 0
je 0x5150d6
mov ecx, dword [esp + 8]
call fcn.0043f3c0
mov ebx, eax
mov eax, dword [esi]
mov edi, dword [eax + 8]
mov ecx, edi
call dword [0x63e63c]
sub esp, 0x2c
movaps xmm0, xmmword [esp + 0x9c]
movaps xmm1, xmmword [esp + 0xac]
movups xmmword [esp + 0x18], xmm1
movups xmmword [esp + 8], xmm0
movzx eax, bl
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
lea ebx, [esp + 0xfc]
mov dword [esp], ebx
mov ecx, esi
call edi
movdqu xmm0, xmmword [ebx]
movupd xmm1, xmmword [ebx + 0x10]
movapd xmmword [esp + 0x80], xmm1
movdqa xmmword [esp + 0x70], xmm0
mov eax, dword [esp + 0x78]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x88]
mov dword [esp + 0xc], eax
jmp 0x5150d6
mov eax, dword [esp + 8]
cmp byte [eax + 0xa4], 0
je 0x515481
mov ecx, dword [esp + 8]
call fcn.0043f3c0
mov byte [esp + 0x10], al
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
mov dword [esp + 0xc], ecx
call dword [0x63e63c]
sub esp, 0x2c
movaps xmm0, xmmword [esp + 0x9c]
movaps xmm1, xmmword [esp + 0xac]
movups xmmword [esp + 0x18], xmm1
movups xmmword [esp + 8], xmm0
movzx eax, byte [esp + 0x3c]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
lea eax, [esp + 0xfc]
mov dword [esp], eax
mov ecx, ebx
call dword [esp + 0x38]
lea eax, [esp + 0xd0]
movdqu xmm0, xmmword [eax]
movupd xmm1, xmmword [eax + 0x10]
movapd xmmword [esp + 0x80], xmm1
movdqa xmmword [esp + 0x70], xmm0
mov eax, dword [esp + 0x78]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x88]
mov dword [esp + 0xc], eax
jmp 0x515481