Function at 0x522480
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 ebx, ecx
mov ecx, dword [ebp + 8]
mov eax, dword [0x64a040]
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 [0x64f546]
test al, al
jne 0x52508c
lock and dword [ebx + 0x44], 0xfffffffc
mov esi, dword [ebx + 0x58]
test esi, esi
mov dword [esp + 0x20], ebx
je 0x5224ee
xor edi, edi
xchg dword [esi], edi
test edi, edi
jne 0x523814
mov esi, dword [esi + 0x8c]
test esi, esi
jne 0x5224d8
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5250b2
lea eax, [ebx - 4]
mov dword [esp + 0x34], eax
mov edi, dword [ebx + 0x14]
mov esi, dword [ebx + 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 0x522520
mov edx, dword [ebx + 0x174]
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
cmp ecx, eax
je 0x52265b
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
mov dword [esp + 0x14], edx
jne 0x52262b
mov ecx, dword [fcn.0056d830]
cmp ecx, 0x56aca0
jne 0x523eed
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 0x525742
mov edx, 0xf4240
mov eax, ebx
mul edx
imul ecx, ecx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
jne 0x52519a
test ebx, ebx
je 0x524ea8
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 + 0x14]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x522634
mov edx, dword [ebx]
mov dword [esp + 8], edx
mov edx, dword [ebx + 4]
cmp ecx, eax
je 0x524ebd
cmp dword [ecx + 0x14], 1
je 0x525331
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
cmp dword [esp + 8], ebx
sbb edx, eax
mov ebx, dword [esp + 0x20]
jge 0x523f1d
mov edx, dword [ebx + 0x178]
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
cmp ecx, eax
je 0x522775
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
mov dword [esp + 0x14], edx
jne 0x522745
mov ecx, dword [fcn.0056d830]
cmp ecx, 0x56aca0
jne 0x523f05
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 0x5257e2
mov edx, 0xf4240
mov eax, ebx
mul edx
imul ecx, ecx, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov ebx, dword [ebp + 0xc]
cmp byte [ebx + 8], 0
jne 0x5251b6
test ebx, ebx
je 0x524ea8
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 + 0x14]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x52274e
mov edx, dword [ebx]
mov dword [esp + 8], edx
mov edx, dword [ebx + 4]
cmp ecx, eax
je 0x524ebd
cmp dword [ecx + 0x14], 1
je 0x5253db
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
cmp dword [esp + 8], ebx
sbb edx, eax
mov ebx, dword [esp + 0x20]
jge 0x523f50
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5250d8
mov ecx, dword [ebp + 0xc]
cmp byte [ecx + 8], 0
je 0x5227ac
mov eax, dword [ecx]
cmp eax, dword [ebx + 0x184]
mov eax, dword [ecx + 4]
sbb eax, dword [ebx + 0x188]
jge 0x5242df
mov eax, dword [ebx + 0xf0]
mov edx, 0
test eax, eax
je 0x522934
tzcnt edx, eax
cmp dword [ebp + 0x10], 1
mov dword [esp + 0x14], edx
je 0x524f3e
mov eax, dword [ebx + 0x10c]
mov ecx, dword [ebx + 0x110]
sub ecx, eax
sar ecx, 4
cmp dword [ebx + 0x11c], 3
jge 0x52472b
cmp ecx, edx
jbe 0x524f08
mov esi, edx
shl esi, 4
mov ebx, dword [eax + esi + 4]
cmp ebx, dword [eax + esi + 8]
je 0x523c54
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 + 0x6527ec]
mov dword [esp + 0xc], edi
bt eax, edi
mov dword [esp + 8], ecx
jb 0x523f83
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 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 0x524f08
mov edi, dword [eax + esi + 4]
mov ecx, dword [esp + 8]
mov edx, ecx
cmp edi, dword [eax + esi + 8]
je 0x522904
mov dword [esp + 0x28], 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 + 0x6527ec]
mov dword [esp + 0x30], edx
bt eax, edx
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
jb 0x524109
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, dword [esp + 0x28]
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 0x5255f7
cmp esi, ecx
sbb edi, eax
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 8]
jae 0x5228ec
mov edx, ecx
mov eax, dword [esp + 0x2c]
mov eax, dword [eax*4 + 0x6527ec]
mov esi, dword [esp + 0x30]
bt eax, esi
jb 0x5242c6
mov eax, dword [esp + 0x10]
mov eax, dword [eax*4 + 0x6527ec]
mov esi, dword [esp + 0xc]
bt eax, esi
jb 0x523f95
mov ebx, dword [esp + 0x20]
cmp dword [edx + 0x50], 1
je 0x5240d0
mov dword [ebx + 0x11c], 0
mov dword [esp + 0xa4], 0x123
movzx eax, byte [0x64f547]
test al, al
mov dword [esp + 8], edx
jne 0x525129
test edx, edx
je 0x5233e8
cmp dword [edx + 0x18], 0
je 0x522a16
push 0x388
push 0xff
lea eax, [esp + 0xd8]
push eax
call fcn.00582870
mov edx, dword [esp + 0x14]
add esp, 0xc
mov dword [esp + 0xd0], 0
cmp dword [edx + 8], 0
je 0x524d6a
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 0x524ed8
mov esi, dword [ecx + 0xc]
imul edi, edi, 0x70
mov ebx, dword [esi + edi + 0x50]
test ebx, ebx
je 0x523d84
mov ecx, dword [ebx + 0xc]
cmp ecx, 0x57b700
mov edx, dword [esp + 8]
je 0x5229ee
call dword [0x6445dc]
push 0
push ebx
call ecx
mov edx, dword [esp + 0x10]
add esp, 8
test al, al
jne 0x523d7c
add esi, edi
cmp dword [esi + 0x6c], 0
jne 0x523d55
mov esi, dword [esp + 0xd0]
cmp esi, 2
jae 0x5241b5
test esi, esi
mov ebx, dword [esp + 0x20]
jne 0x524117
cmp dword [edx + 8], 0
je 0x524f17
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 0x524edb
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
cmp byte [ecx + 0x58], 0
mov ecx, dword [esp + 8]
je 0x52496d
mov eax, dword [ecx + 0x1c]
cmp dword [eax + 0xe8], 0
jne 0x523fa7
cmp dword [eax + 0xec], 0
jne 0x523fa7
cmp dword [ebx + 0x64], 0
jne 0x5242eb
mov dword [esp + 0x14], 0
cmp dword [ebx + 0x164], 0
mov eax, 0
jne 0x523fa7
mov dword [esp + 0x34], 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 0x524f1e
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 + 0x1c], 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 + 0x30], 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 + 0x28], 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 + 0x3c], 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 0x524f21
mov eax, dword [ecx + 0xc]
imul ecx, edx, 0x70
lea esi, [eax + ecx]
mov eax, dword [eax + ecx + 0x68]
test eax, eax
jne 0x523b16
mov edi, dword [esi + 0x5c]
test edi, edi
jne 0x52408f
mov esi, dword [esi + 0x50]
test esi, esi
mov edx, dword [esp + 8]
jne 0x523cdb
mov eax, dword [edx]
mov ecx, dword [eax + 4]
cmp ecx, dword [eax]
jne 0x522c0c
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x5242fa
dec dword [edx + 8]
jne 0x522d9f
cmp dword [edx + 0x50], 0
jne 0x522c28
mov ecx, dword [edx + 0x1c]
push edx
call fcn.00526c60
mov edx, dword [esp + 8]
cmp dword [edx + 4], 0
je 0x522d06
mov dword [esp + 0x6c], 0xffffffff
mov dword [esp + 0x68], 0xffffffff
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
jne 0x523cfc
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 0x525882
mov ecx, 0xf4240
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov ecx, dword [esp + 8]
cmp eax, dword [ecx + 0x10]
sbb edx, dword [ecx + 0x14]
mov edx, ecx
jl 0x522d06
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 0x522d06
lea edx, [eax + 0x10]
xor esi, esi
add esi, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x522cf0
cmp edx, esi
mov edx, dword [esp + 8]
jb 0x524cf1
mov edi, dword [edx + 0x18]
mov ebx, dword [edx + 0x20]
cmp dword [edx + 8], 0
jne 0x522da5
mov ecx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 4
cmp eax, ebx
jbe 0x524e99
mov esi, ebx
shl esi, 4
add ecx, esi
push 0
call fcn.00526a20
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
sub ecx, eax
sar ecx, 4
cmp ecx, ebx
jbe 0x524e99
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
jne 0x522ea9
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 0x524e99
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 0x524e99
cmp dword [ecx + ebx*4], 0
jne 0x522ea9
mov edx, 0xfffffffe
mov ecx, ebx
rol edx, cl
and dword [eax + 0x14], edx
jmp 0x522ea9
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 0x524400
mov esi, dword [eax + 0x10]
inc ecx
xor edx, edx
cmp ecx, esi
cmove ecx, edx
cmp esi, ecx
jbe 0x525031
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 + 0x18], 0
mov edi, dword [esp + 0x38]
jne 0x524140
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 0x524e99
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 + 0x6527ec]
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 + 0x18]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x80], eax
jb 0x523d39
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov dword [esp + 0x88], edi
lea eax, [esp + 0x68]
mov ecx, esi
lea edx, [esp + 0x70]
push edx
push eax
call fcn.00526990
mov eax, dword [esp + 0x88]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x523d47
mov eax, dword [esp + 8]
mov esi, dword [eax + 0x1c]
movzx eax, byte [0x64f546]
test al, al
jne 0x52550a
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 0x524654
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 0x52484a
cmp ebx, edi
mov ebx, dword [esp + 0x20]
je 0x524ea8
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 0x524ea8
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 + 0x1c]
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 + 0x30]
mov dword [eax + 0x5c], ecx
mov ecx, dword [esp + 0x28]
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 + 0x3c]
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 + 0x14]
mov byte [eax + 0x7c], cl
mov ecx, dword [esp + 0x34]
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 0x524843
lea esi, [edx*8]
lea esi, [esi + esi*2]
sub ecx, esi
imul esi, ecx, 0xa8
add esi, eax
cmp eax, esi
je 0x525023
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5251d5
mov eax, dword [esi - 0x38]
cmp byte [eax + 0x14c], 0
jne 0x523791
cmp dword [eax + 0xe8], 0
mov dword [esp + 8], esi
jne 0x523bfc
cmp dword [eax + 0xec], 0
jne 0x523bfc
cmp dword [ebx + 0x64], 0
jne 0x5230bd
cmp dword [ebx + 0x164], 0
jne 0x523bfc
mov dword [esp + 0x30], 0
lea eax, [esi - 0xa8]
mov dword [esp + 0x14], eax
mov eax, dword [esi - 0x38]
cmp byte [eax + 0x14d], 0
je 0x523339
mov ecx, dword [esi - 0x48]
mov dword [esp + 0xc], ecx
mov ecx, dword [esi - 0x44]
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 0xe0]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + 0xe4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x52522b
mov eax, dword [ebx + 0x124]
cmp eax, dword [ebx + 0x128]
je 0x5232c2
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 0x525078
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 0x5231bf
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x524e99
cmp dword [edi + eax*4], 0
mov ebx, dword [esp + 0x20]
je 0x52504b
test esi, esi
je 0x5232c2
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 0x523273
cmp edi, eax
jbe 0x524e99
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x34]
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 [0x6445dc]
movzx eax, bl
mov ecx, esi
push eax
push dword [esp + 0x18]
call edi
mov esi, dword [esp + 0xd8]
test esi, esi
mov ebx, dword [esp + 0x20]
je 0x5232c2
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 0x5231c7
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x524e99
cmp dword [edi + eax*4], 0
jne 0x5231c7
jmp 0x525034
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jne 0x523296
mov ebx, dword [esi]
mov ecx, dword [esi + 4]
cmp ebx, ecx
je 0x523296
lea edi, [ebx + 4]
cmp dword [ebx], 0
je 0x524331
mov ebx, edi
cmp edi, ecx
jne 0x523284
cmp dword [esp + 0xd8], 0
mov ebx, dword [esp + 0x20]
je 0x5232c2
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 [0x64f546]
test al, al
jne 0x525256
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
mov esi, dword [esp + 8]
jne 0x525281
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
sbb dword [esp + 0x34], eax
setb al
mov ecx, dword [esi - 0x38]
movzx eax, al
push eax
push dword [esp + 0x18]
call fcn.00527010
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5252ac
cmp byte [esp + 0x30], 0
jne 0x523499
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x525200
cmp dword [esi - 0x3c], 0
jne 0x523d19
mov eax, dword [esi - 0x40]
test eax, eax
je 0x52336d
movzx eax, byte [eax + 4]
test al, al
je 0x523710
mov eax, dword [esi - 0x38]
mov edi, dword [esi - 0x34]
movzx ebx, byte [esi - 8]
mov esi, dword [eax + 0xf0]
test esi, esi
jne 0x5233f4
movzx eax, bl
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x14]
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 [0x64f546]
test al, al
jne 0x5250fe
mov eax, dword [ebp + 8]
cmp byte [eax + 0x10], 0
je 0x5233cd
mov eax, dword [ebx + 0x44]
test al, 2
jne 0x524f24
mov ecx, dword [esp + 0x458]
xor ecx, ebp
call fcn.005810d5
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 0x5233a2
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x525066
cmp eax, 0x7fffffff
je 0x525069
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x52506c
cmp eax, 0x7fffffff
je 0x52506f
lock dec dword [esi]
jne 0x523440
mov ecx, dword [esi + 8]
call dword [0x6445dc]
push esi
call ecx
add esp, 4
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov eax, 1
lock xadd dword [esi], eax
test eax, eax
jle 0x525072
cmp eax, 0x7fffffff
je 0x525075
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 0x5233a2
mov ecx, dword [esi + 8]
call dword [0x6445dc]
push esi
call ecx
add esp, 4
jmp 0x5233a2
cmp dword [ebx + 0x64], 0
jne 0x523685
mov dword [esp + 0x70], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x525655
mov eax, dword [ebx + 0x148]
cmp eax, dword [ebx + 0x14c]
je 0x52366a
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 0x5255e3
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 0x52355d
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x524e99
cmp dword [edi + eax*4], 0
je 0x5254f3
test esi, esi
je 0x52366a
nop word cs:[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 0x52361b
cmp edi, eax
jbe 0x524e99
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 [0x6445dc]
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 0x52366a
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 0x523570
mov edi, dword [esi]
mov ebx, dword [esi + 4]
sub ebx, edi
sar ebx, 2
cmp ebx, eax
jbe 0x524e99
cmp dword [edi + eax*4], 0
jne 0x523570
jmp 0x524f27
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jne 0x523642
mov edi, dword [esi]
mov ecx, dword [esi + 4]
cmp edi, ecx
je 0x523642
nop dword [eax]
lea ebx, [edi + 4]
cmp dword [edi], 0
je 0x524be9
mov edi, ebx
cmp ebx, ecx
jne 0x523630
cmp dword [esp + 0xd8], 0
je 0x52366a
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 [0x64f546]
test al, al
jne 0x525680
mov esi, dword [esp + 8]
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5256ab
mov eax, dword [esi - 0x38]
mov esi, dword [eax + 0xe8]
test esi, esi
je 0x5236f0
mov ecx, 1
lock xadd dword [esi], ecx
test ecx, ecx
jle 0x525485
cmp ecx, 0x7fffffff
je 0x525488
mov ecx, dword [esp + 8]
lea edi, [ecx - 0x30]
mov eax, dword [eax + 0xe8]
mov ecx, dword [eax + 4]
call dword [0x6445dc]
push edi
push dword [esp + 0x18]
push esi
call ecx
add esp, 0xc
lock dec dword [esi]
je 0x525701
mov dword [esp + 0x68], 0x122
movzx eax, byte [0x64f546]
test al, al
jne 0x5256d6
mov esi, dword [esp + 8]
jmp 0x523339
cmp dword [esi - 0x3c], 0
je 0x52336d
mov eax, dword [esi - 0x40]
test eax, eax
je 0x5251d2
movzx eax, byte [eax + 4]
test al, al
jne 0x5251d2
mov edi, esi
mov esi, dword [esi - 0x3c]
mov eax, dword [esi + 0xc]
mov byte [eax + 4], 1
push 8
call fcn.0057dc30
add esp, 4
mov dword [eax], 0
mov byte [eax + 4], 0
test eax, eax
je 0x52376a
mov ecx, 1
lock xadd dword [eax], ecx
cmp ecx, 0x7fffffff
je 0x5254f0
mov ecx, dword [esi + 0xc]
mov dword [esi + 0xc], eax
test ecx, ecx
mov esi, edi
je 0x52336d
lock dec dword [ecx]
jne 0x52336d
push ecx
call fcn.0057dc2b
add esp, 4
jmp 0x52336d
mov byte [ebx + 0x1a4], 1
mov eax, dword [esi - 0x38]
jmp 0x52308c
mov dword [esp + 0xc], ecx
mov dword [esp + 0x34], eax
cmp dword [edx + 0x28], 0
jne 0x524584
mov eax, dword [edx + 0x20]
mov dword [esp + 0x3c], edx
mov ecx, dword [edx + 0x24]
mov edx, eax
add edx, 1
mov ebx, ecx
adc ebx, 0x80000000
cmp edx, 2
sbb ebx, 0
jb 0x52548b
mov edx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0xc]
adc eax, ecx
seto byte [esp + 0x34]
mov ecx, eax
sar ecx, 0x1f
lea ebx, [ecx - 0x80000000]
mov dword [esp + 0x2c], ebx
mov bl, byte [esp + 0x34]
test bl, bl
cmove ecx, edx
mov dword [esp + 0x28], ecx
test bl, bl
mov ebx, dword [esp + 0x2c]
cmove ebx, eax
mov edx, dword [esp + 0x3c]
jmp 0x5238fd
tzcnt ecx, edi
mov ebx, dword [esi + ecx*4 + 8]
test ebx, ebx
je 0x524ecc
mov eax, 1
lock xadd dword [ebx], eax
test eax, eax
jle 0x524ecf
cmp eax, 0x7fffffff
je 0x524ed2
mov dword [esp + 8], ecx
mov eax, dword [esi + ecx*4 + 8]
mov ecx, dword [eax + 4]
cmp ecx, 0x5e74c0
jne 0x523ad7
push dword [ebx + 0x14]
call fcn.00505000
add esp, 4
mov eax, ebx
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x14]
cmp ebx, 0x5463e0
mov dword [esp + 0x30], eax
jne 0x523ae5
mov ebx, dword [eax + 0x64]
mov ecx, dword [ebx + 0x1c]
push ebx
call fcn.00526c60
cmp dword [ebx + 8], 0
je 0x523aa3
mov ecx, ebx
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x10], eax
test eax, eax
je 0x523aa3
cmp byte [ecx + 0x48], 0
mov dword [esp + 0x14], ecx
jne 0x524595
mov eax, dword [ecx]
mov ebx, dword [eax]
mov edx, dword [eax + 0x10]
inc ebx
cmp ebx, edx
mov ecx, 0
cmove ebx, ecx
cmp edx, ebx
jbe 0x524ed5
mov ecx, dword [eax + 0xc]
imul ebx, ebx, 0x70
lea edx, [ecx + ebx]
mov eax, dword [ecx + ebx + 0x44]
mov dword [esp + 0x18], eax
mov eax, dword [ecx + ebx + 0x18]
mov ecx, dword [ecx + ebx + 0x1c]
mov dword [esp + 0x28], 0
mov ebx, eax
or ebx, ecx
mov ebx, 0
jne 0x5237a0
mov dword [esp + 0x2c], ebx
mov ebx, dword [edx + 0x60]
mov eax, dword [edx + 0x64]
mov ecx, eax
shr ecx, 8
mov dword [esp + 0x34], ecx
mov dword [esp + 0x24], ebx
shld eax, ebx, 0x18
mov dword [esp + 0x3c], 0
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x20]
mov ecx, dword [esp + 0x10]
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
sub ecx, ebx
sar ecx, 4
mov dword [esp + 0xc], edx
cmp ecx, edx
jbe 0x524e99
cmp byte [esp + 0x3c], 0
jne 0x524eea
shld dword [esp + 0x34], eax, 8
shl eax, 8
movzx ecx, byte [esp + 0x24]
or ecx, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xc]
shl ecx, 4
mov edx, dword [esp + 0x14]
mov eax, edx
shr eax, 0xe
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, eax
mov edx, ecx
mov eax, dword [ebx + ecx + 4]
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + ecx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0xe0], eax
jb 0x523af9
mov ecx, dword [esp + 0x14]
mov eax, ecx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, ecx
add ebx, edx
mov dword [esp + 0xe8], eax
mov ecx, ebx
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0x74]
push eax
call fcn.0051d710
mov eax, dword [esp + 0xe8]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jae 0x523a22
push eax
call fcn.00506f30
add esp, 4
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x3c], eax
mov ebx, dword [esp + 0xc]
jne 0x523aa3
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, ebx
jbe 0x524e99
inc dword [ecx + ebx*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
sar edx, 2
cmp edx, ebx
jbe 0x524e99
cmp dword [ecx + ebx*4], 1
jne 0x523aa3
mov ecx, dword [eax + 0x14]
mov edx, ecx
bts edx, ebx
mov dword [eax + 0x14], edx
test ecx, ecx
jne 0x523aa3
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x523aa3
mov eax, dword [ecx + 0x40]
add ecx, 0x40
nop word cs:[eax + eax]
mov edx, eax
and edx, 0xfffffffd
lock cmpxchg dword [ecx], edx
jne 0x523a90
test al, 4
jne 0x5254e6
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 0x5c]
test edx, edx
mov ebx, dword [esp + 0x1c]
jne 0x525715
lock dec dword [ebx]
je 0x52465b
mov eax, dword [esp + 8]
btc edi, eax
test edi, edi
mov ebx, dword [esp + 0x20]
je 0x5224e4
jmp 0x523814
call dword [0x6445dc]
push ebx
call ecx
add esp, 4
jmp 0x523ab6
mov ecx, ebx
call dword [0x6445dc]
mov ecx, dword [esp + 0x30]
call ebx
mov ebx, dword [esp + 0x1c]
jmp 0x523ab6
push dword [esp + 0x14]
mov dword [esp + 0x38], edx
call fcn.00506e00
mov edx, dword [esp + 0x38]
add esp, 4
mov eax, dword [esp + 0x14]
jmp 0x5239df
lock dec dword [eax]
jne 0x522bde
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x522bde
call dword [0x6445dc]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x523bce
mov ecx, dword [fcn.0056d830]
cmp ecx, 0x56aca0
jne 0x523b2d
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 0x526017
mov ecx, 0xf4240
mov eax, esi
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
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 0x52563d
test edx, edx
je 0x524ea8
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 0x523c1b
mov dword [esi - 0x30], 1
cmp byte [esi - 0x2c], 0
je 0x523c21
mov ecx, dword [ebp + 0xc]
cmp byte [ecx + 8], 0
je 0x523b45
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 + 0x30], eax
cmp byte [esi - 0x2b], 0
je 0x5230c5
lea eax, [esp + 0xd0]
push eax
call fcn.004055a0
add esp, 4
movq xmm0, qword [esp + 0xd0]
movq qword [esi - 0x18], xmm0
jmp 0x5230c5
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 0x524f08
mov ecx, dword [eax + esi + 4]
xor edx, edx
cmp ecx, dword [eax + esi + 8]
je 0x522920
mov edx, dword [ecx + 0x18]
mov esi, edx
shr esi, 0xe
mov edi, edx
shr edi, 0x13
mov eax, dword [edi*4 + 0x6527ec]
bt eax, esi
jb 0x523cc8
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, dword [edi*4 + 0x6527ec]
bt eax, esi
jae 0x522920
push edx
mov esi, edx
call fcn.00506f30
mov edx, esi
add esp, 4
jmp 0x522920
push edx
mov dword [esp + 0xc], edx
call fcn.00506e00
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x523ca6
lock dec dword [esi]
jne 0x522bf8
mov ecx, dword [esi + 8]
call dword [0x6445dc]
push esi
call ecx
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x522bf8
call dword [0x6445dc]
lea eax, [esp + 0x68]
push eax
call ecx
add esp, 4
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
jmp 0x522cb6
mov eax, dword [esi - 0x40]
test eax, eax
je 0x523d2c
movzx eax, byte [eax + 4]
test al, al
je 0x52335a
lea ecx, [esi - 0x58]
call fcn.005aad30
jmp 0x52336d
push edi
call fcn.00506e00
add esp, 4
jmp 0x522e70
push eax
call fcn.00506f30
add esp, 4
jmp 0x522ea9
mov eax, dword [esi + 0x68]
test eax, eax
je 0x523d7c
movzx eax, byte [eax + 4]
test al, al
je 0x5229fa
jmp 0x523d7c
lea ecx, [esp + 0xd0]
push eax
call fcn.0050b6f0
jmp 0x523e50
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 0x524ede
mov edx, dword [esp + 0xd0]
mov esi, 8
test dl, 1
je 0x523dae
mov esi, dword [esp + 0xdc]
imul eax, eax, 0x70
add eax, dword [ecx + 0xc]
mov ecx, edx
shr ecx, 1
cmp ecx, esi
je 0x523d6a
lea esi, [esp + 0xd8]
test dl, 1
je 0x523dcf
mov esi, dword [esp + 0xd8]
imul ecx, ecx, 0x70
add ecx, esi
je 0x524ea8
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 0x524ee1
mov esi, dword [eax + 0xc]
imul edi, ecx, 0x70
mov eax, dword [esi + edi + 0x68]
test eax, eax
mov edx, dword [esp + 8]
jne 0x523ebf
add esi, edi
mov edi, dword [esi + 0x5c]
test edi, edi
jne 0x523eb4
mov esi, dword [esi + 0x50]
test esi, esi
jne 0x523ed3
mov eax, dword [edx]
mov ecx, dword [eax + 4]
cmp ecx, dword [eax]
jne 0x523ea6
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x52466f
dec dword [edx + 8]
jne 0x522997
jmp 0x5229fa
lock dec dword [edi + 4]
jne 0x523e8b
jmp 0x52469b
lock dec dword [eax]
jne 0x523e82
push eax
call fcn.0057dc2b
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x523e82
lock dec dword [esi]
jne 0x523e92
mov ecx, dword [esi + 8]
call dword [0x6445dc]
push esi
call ecx
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x523e92
call dword [0x6445dc]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x5225f2
call dword [0x6445dc]
lea eax, [esp + 0xd0]
push eax
call ecx
add esp, 4
jmp 0x52270c
mov ebx, dword [ecx + 0x18]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.00534b30
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x524dc6
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x525c5e
mov ebx, dword [esp + 0x20]
jmp 0x52265b
mov ebx, dword [ecx + 0x18]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.00534b30
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x524de2
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x525941
mov ebx, dword [esp + 0x20]
jmp 0x522775
push ecx
call fcn.00506e00
mov edx, dword [esp + 0x18]
add esp, 4
jmp 0x52283f
push ecx
mov esi, edx
call fcn.00506f30
mov edx, esi
add esp, 4
jmp 0x52291c
movsd xmm0, qword [ebx + 0x3c]
mov al, 1
mov dword [esp + 0x14], eax
xorpd xmm1, xmm1
ucomisd xmm0, xmm1
jbe 0x5242f3
cmp byte [ebx + 0xd4], 0
je 0x5252d7
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 + 0x34], 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 + 0x34]
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 [0x62d150]
ucomisd xmm0, xmm1
seta al
mov ecx, dword [esp + 8]
jmp 0x522a8f
lock dec dword [edi + 4]
jne 0x522be9
mov ecx, dword [edi]
mov eax, dword [edi + 0xc]
cmp dword [ecx + 8], 0x5b5540
test eax, eax
je 0x5240b2
lock dec dword [eax]
je 0x524e7d
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x5240c2
lock dec dword [ebx]
je 0x524d30
push edi
call fcn.0057dc2b
add esp, 4
jmp 0x522be9
mov eax, dword [ebx + 0x10c]
mov ecx, dword [ebx + 0x110]
sub ecx, eax
sar ecx, 4
mov esi, dword [esp + 0x14]
cmp ecx, esi
jbe 0x524f08
shl esi, 4
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
je 0x52292a
inc dword [ebx + 0x11c]
jmp 0x522934
push ecx
call fcn.00506e00
add esp, 4
jmp 0x5228c3
lea ecx, [esp + 0xd0]
call fcn.0050ae50
mov edx, dword [esp + 8]
cmp esi, 1
je 0x522a16
jmp 0x5227ac
mov dword [esp + 0x18], ecx
mov edx, ebx
jmp 0x522e01
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x28], 0
jne 0x524135
mov esi, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x18], esi
add esi, 1
mov eax, edx
adc eax, 0x80000000
cmp esi, 2
sbb eax, 0
jb 0x525901
add ecx, dword [esp + 0x18]
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 + 0x18], eax
cmp byte [esp + 0x4c], 0
cmove edx, ebx
jmp 0x522e01
call dword [0x6445dc]
lea esi, [esp + 0x68]
push esi
call ecx
add esp, 4
mov eax, dword [esi]
mov edx, dword [esi + 4]
jmp 0x524251
cmp dword [edx + 8], 0
jne 0x524297
cmp dword [edx + 0x50], 0
jne 0x5241d2
mov ecx, dword [edx + 0x1c]
push edx
call fcn.00526c60
mov edx, dword [esp + 8]
cmp dword [edx + 4], 0
je 0x524297
xor eax, eax
dec eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], eax
mov ecx, dword [0x64c080]
cmp ecx, 0x56aca0
jne 0x52419b
xor eax, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], eax
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 0x5260cb
mov eax, esi
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x64f6a4]
push dword [0x64f6a0]
push ecx
push eax
call fcn.005a13d0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov ecx, dword [esp + 8]
cmp eax, dword [ecx + 0x10]
sbb edx, dword [ecx + 0x14]
jl 0x524293
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 0x524293
lea edx, [eax + 0x10]
xor esi, esi
add esi, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x524281
cmp edx, esi
jb 0x524dfe
mov edx, dword [esp + 8]
cmp dword [edx + 0x24], 0xffffffff
je 0x5242aa
mov ecx, dword [edx + 0x18]
push edx
call fcn.0050af90
mov edx, dword [esp + 8]
mov esi, dword [edx + 0x1c]
mov al, byte [0x64f546]
test al, al
jne 0x525f9d
mov esi, dword [esp + 0xd0]
jmp 0x522a0a
push dword [esp + 0x1c]
mov esi, edx
call fcn.00506f30
mov ecx, dword [esp + 0xc]
mov edx, esi
add esp, 4
jmp 0x522904
mov byte [ebx + 0x17c], 1
jmp 0x5227ac
mov dword [esp + 0x14], 0
xor eax, eax
jmp 0x522a8f
mov dword [eax + 0x14], 0
mov esi, dword [edx]
mov dword [edx], ecx
test esi, esi
je 0x522c0c
mov ecx, esi
call fcn.00527860
push esi
call fcn.0057dc2b
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x522c0c
push eax
call fcn.00507280
add esp, 4
jmp 0x524378
cmp edi, ecx
jne 0x524e35
sub ecx, ebx
jb 0x5260a8
je 0x523296
mov edi, dword [esi + 4]
add ecx, ebx
mov edx, ebx
cmp ecx, edi
je 0x524399
mov dword [esp + 0x28], edi
cmp edx, ecx
je 0x524388
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 + 0x6527ec]
bt edx, ecx
jb 0x524326
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 + 0x28]
cmp ecx, edi
jne 0x524356
mov edi, dword [esi + 4]
sub edx, ebx
add edx, ebx
cmp edi, edx
je 0x5243d7
add edi, 0xfffffffc
test edi, edi
je 0x5260b7
mov ebx, edx
mov eax, dword [edi]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x5243df
mov dword [edi], 0
lea eax, [edi - 4]
mov edx, ebx
cmp edi, ebx
mov edi, eax
jne 0x5243a4
mov dword [esi + 4], edx
jmp 0x523296
push eax
call fcn.00507280
add esp, 4
jmp 0x5243c6
mov edi, edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov edx, edi
jmp 0x524469
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 0x52593e
mov edi, dword [eax + 0xc]
mov dword [esp + 0x18], edi
imul edx, edx, 0x70
mov edi, dword [esp + 0x18]
add edi, edx
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x18]
mov edi, dword [edi + edx + 0x44]
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x18]
mov edi, dword [edi + edx + 0x18]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x18]
mov edi, dword [edi + edx + 0x1c]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x18], edi
or edx, edi
mov edx, dword [esp + 0x40]
mov dword [esp + 0x50], 0
jne 0x5244be
mov edi, dword [edx + 0x60]
mov dword [esp + 0x24], edi
mov edx, dword [edx + 0x64]
mov dword [esp + 0x18], 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 + 0x18]
mov dword [esp + 0x4c], edi
xor edx, edi
mov edi, dword [esp + 0x24]
xor edi, dword [esp + 0x40]
or edi, edx
je 0x524540
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
sbb dword [esp + 0x18], edx
mov edi, dword [esp + 0x38]
jb 0x522dbf
jmp 0x522d16
cmp dword [edx + 0x28], 0
jne 0x5243ea
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 0x52632e
mov edx, dword [esp + 0x24]
add edx, dword [esp + 0x50]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x18]
adc edx, dword [esp + 0x48]
mov dword [esp + 0x18], 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 + 0x18]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x40]
jmp 0x524469
mov edx, dword [esp + 8]
mov ebx, dword [edx + 0x38]
mov edi, dword [edx + 0x3c]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x18], edi
xor edx, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x24], ebx
xor edi, ebx
or edi, edx
jne 0x52654d
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 0x522dbf
jmp 0x522d16
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0xc]
jmp 0x5238fd
mov eax, dword [ecx]
mov ebx, ecx
mov edx, dword [eax]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x34], ecx
inc edx
xor ecx, ecx
cmp edx, dword [esp + 0x34]
cmovne ecx, edx
cmp dword [esp + 0x34], ecx
jbe 0x524ee4
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
lea eax, [esp + 0xd0]
push eax
call fcn.005469e0
cmp byte [ebx + 0x48], 0
je 0x524ef9
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0xd4]
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x34]
mov dword [esp + 0x10], edx
xor edx, ecx
mov ebx, dword [esp + 0x34]
mov dword [esp + 0xc], eax
xor ebx, eax
or ebx, edx
je 0x524d73
mov ebx, dword [esp + 0xc]
cmp dword [esp + 0x34], ebx
sbb dword [esp + 0x10], ecx
mov edx, dword [esp + 0x14]
jae 0x523aa3
mov eax, dword [edx + 0x18]
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], 0xffffff
mov al, 1
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], 0
cmp dword [edx + 8], 0
jne 0x526190
xor eax, eax
dec eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], eax
jmp 0x523924
xor ecx, ecx
jmp 0x522eea
mov ecx, dword [ebx + 8]
call dword [0x6445dc]
push ebx
call ecx
add esp, 4
jmp 0x523abf
mov dword [eax + 0x14], 0
mov esi, dword [edx]
mov dword [edx], ecx
test esi, esi
je 0x523ea6
mov ecx, esi
call fcn.00527860
push esi
call fcn.0057dc2b
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x523ea6
mov ecx, dword [edi]
mov eax, dword [edi + 0xc]
cmp dword [ecx + 8], 0x5b5540
test eax, eax
je 0x5246b4
lock dec dword [eax]
je 0x524e8b
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x5246c0
lock dec dword [ebx]
je 0x5246d2
push edi
call fcn.0057dc2b
add esp, 4
mov edx, dword [esp + 8]
jmp 0x523e8b
mov eax, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x526565
mov dword [ebx + 0x10], 0
lea ecx, [ebx + 4]
call fcn.00406d90
push ebx
call fcn.0057dc2b
add esp, 4
jmp 0x5246c0
push edx
mov edi, edx
call fcn.00506f30
mov edx, edi
add esp, 4
jmp 0x524773
push edx
mov dword [esp + 0xc], edx
call fcn.00506e00
mov edx, dword [esp + 0xc]
add esp, 4
jmp 0x524767
cmp ecx, edx
jbe 0x524f08
mov esi, edx
shl esi, 4
mov ecx, dword [eax + esi + 4]
cmp ecx, dword [eax + esi + 8]
je 0x52477f
mov edx, dword [ecx + 0x18]
mov edi, edx
shr edi, 0xe
mov ebx, edx
shr ebx, 0x13
mov eax, dword [ebx*4 + 0x6527ec]
bt eax, edi
jb 0x524718
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 1
mov eax, dword [ebx*4 + 0x6527ec]
bt eax, edi
jb 0x524709
test edx, edx
mov ebx, dword [esp + 0x20]
jne 0x522920
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 + 0x14]
jbe 0x524f08
mov edi, dword [eax + esi + 4]
cmp edi, dword [eax + esi + 8]
je 0x524828
mov edx, dword [edi + 0x18]
mov eax, edx
shr eax, 0xe
mov ecx, edx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, eax
mov esi, edx
jb 0x524836
mov eax, edx
shr eax, 0x15
mov byte [eax + 0x65a7ec], 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.005b1df0
mov edx, esi
jmp 0x522920
mov byte [esp + 0xd0], 0
xor eax, eax
xor esi, esi
jmp 0x524812
push edx
call fcn.00506e00
mov edx, esi
add esp, 4
jmp 0x5247f2
xor esi, esi
jmp 0x52305d
mov ecx, dword [esp + 0x20]
lea edx, [ecx + 0x1a8]
mov dword [esp + 0x24], edx
cmp eax, 0x18
jae 0x52647b
mov eax, ecx
mov ecx, dword [ecx + 0x1a8]
mov edx, dword [eax + 0x1b4]
mov eax, edx
mov dword [esp + 0x18], ecx
sub eax, ecx
mov dword [esp + 8], eax
cmp esi, eax
jb 0x526415
mov ecx, dword [esp + 8]
sar ecx, 1
cmp edx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
lea eax, [eax + 0x1b8]
mov dword [esp + 0x80], eax
mov eax, 1
cmove ecx, eax
cmp ecx, 0x40000000
jae 0x5260c6
mov dword [esp + 8], ecx
lea eax, [ecx*4]
mov dword [esp + 0x38], eax
push eax
call fcn.0057dc30
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 + 0x18], 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.0057dc30
add esp, 4
cmp esi, dword [esp + 0x38]
je 0x5264a5
mov edi, dword [esp + 0x24]
test edi, edi
mov esi, dword [esp + 0x20]
je 0x524ea8
mov dword [edi], eax
lea ecx, [edi + 4]
mov dword [esp + 0x78], ecx
mov ebx, dword [esi + 0x1b0]
cmp ebx, dword [esi + 0x1ac]
jne 0x526386
mov eax, dword [esi + 0x1a8]
mov edx, dword [esp + 0x18]
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 0x526155
mov edi, dword [esi + 0x1ac]
mov ebx, dword [esi + 0x1b0]
jmp 0x522f04
cmp dword [ebx + 0x64], 0
jle 0x522a4e
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.00527c40
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 eax, dword [ebx + 0x74]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], ecx
sub eax, ecx
jb 0x52660e
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 0x524ad9
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 + 0x10], ecx
lea eax, [eax + 0x74]
mov dword [esp + 0x1c], eax
jo 0x5266d8
mov eax, dword [esp + 0x20]
lea edi, [eax + 0x68]
push 0
push ebx
push 0x63bbe0
call fcn.0052fc40
add esp, 0xc
mov esi, eax
test eax, eax
jne 0x524a8b
cmp byte [0x65aff0], 0
jne 0x5265ae
mov dword [esp + 0x70], esi
mov ebx, dword [esp + 8]
mov dword [esp + 0x74], ebx
mov ecx, edi
mov edx, dword [esp + 0xc]
push dword [esp + 0x1c]
push dword [esp + 0x14]
lea eax, [esp + 0x78]
push eax
push dword [esp + 0x20]
call fcn.00405650
add esp, 0x10
push 0
mov edi, dword [esp + 0x24]
push dword [edi + 0x68]
push 0x63bbe0
call fcn.0051e4d0
add esp, 0xc
mov dword [edi + 0x68], esi
mov dword [edi + 0x6c], ebx
mov eax, dword [edi + 0x74]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
cmp dword [esp + 8], eax
jb 0x524eb7
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x68]
imul ecx, dword [esp + 0x14], 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 0x526573
cmp eax, ecx
jb 0x524eba
lea ecx, [esp + 0xd0]
call fcn.00536280
mov ebx, dword [esp + 0x20]
jmp 0x5227ac
cmp ebx, ecx
je 0x524c35
mov dword [esp + 0x34], ecx
mov eax, dword [ebx]
test eax, eax
je 0x524c2e
mov dword [esp + 0xc], eax
cmp ebx, edi
je 0x524c2b
mov eax, dword [edi]
mov edx, eax
shr edx, 0xe
mov ecx, eax
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, edx
jb 0x52652b
mov eax, dword [esp + 0xc]
mov dword [edi], eax
mov dword [ebx], 0
mov ecx, dword [esp + 0x34]
add edi, 4
add ebx, 4
cmp ebx, ecx
jne 0x524bf1
sub ecx, edi
jb 0x5260a8
je 0x523642
mov ebx, dword [esi + 4]
add ecx, edi
mov edx, edi
cmp ecx, ebx
je 0x524c95
mov dword [esp + 0xc], ebx
cmp edx, ecx
je 0x524c84
mov dword [esp + 0x34], 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 + 0x6527ec]
bt edx, ecx
jb 0x524cdb
mov ecx, dword [esp + 0x34]
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 0x524c52
mov ebx, dword [esi + 4]
sub edx, edi
add edx, edi
cmp ebx, edx
je 0x524cd3
add ebx, 0xfffffffc
test ebx, ebx
je 0x5260b7
mov edi, edx
mov eax, dword [ebx]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x524ce6
mov dword [ebx], 0
lea eax, [ebx - 4]
mov edx, edi
cmp ebx, edi
mov ebx, eax
jne 0x524ca0
mov dword [esi + 4], edx
jmp 0x523642
push eax
call fcn.00507280
add esp, 4
jmp 0x524c74
push eax
call fcn.00507280
add esp, 4
jmp 0x524cc2
mov ecx, edx
push eax
call fcn.005289c0
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 0x522d06
mov eax, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x6527ec]
bt edx, ecx
jb 0x52653f
mov dword [ebx + 0x10], 0
lea ecx, [ebx + 4]
call fcn.00406d90
push ebx
call fcn.0057dc2b
add esp, 4
jmp 0x5240c2
mov ebx, dword [esp + 0x20]
jmp 0x522a16
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x38]
mov ebx, dword [eax + 0x3c]
mov eax, dword [esp + 0xd8]
mov edx, dword [esp + 0xdc]
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], ebx
xor edx, ebx
mov ebx, eax
mov dword [esp + 0x10], ecx
xor ebx, ecx
or ebx, edx
jne 0x526586
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0x14]
cmp eax, dword [edx + 0x40]
mov ecx, dword [esp + 0x2c]
jl 0x524619
jmp 0x523aa3
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x6445dc]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x523f37
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x6445dc]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x523f6a
mov esi, dword [esp + 8]
mov ecx, esi
push eax
call fcn.005289c0
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 0x524293
mov dword [esp + 0x2c], ecx
mov eax, dword [edi]
test eax, eax
je 0x524e6c
cmp edi, ebx
je 0x524e69
mov ecx, dword [ebx]
mov edx, ecx
shr edx, 0xe
mov dword [esp + 0x28], ecx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x6527ec]
bt ecx, edx
jb 0x52659b
mov dword [ebx], eax
mov dword [edi], 0
add ebx, 4
add edi, 4
mov ecx, dword [esp + 0x2c]
cmp edi, ecx
je 0x524339
jmp 0x524e39
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x5240b2
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x5246b4
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x62a183
call fcn.005aacb0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x62a183
call fcn.005aacb0
int3
int3
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x62a183
call fcn.005aacb0
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 0x62a183
call fcn.005aacb0
push str....._third_partylibc_srcincludeoptional:791:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x62a183
call fcn.005aacb0
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x62a183
call fcn.005aacb0
xor ecx, ecx
jmp 0x522a40
int3
int3
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x5235fa
mov eax, edx
jmp 0x523570
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 0x522934
lea esi, [ebx + 0x108]
mov edx, dword [esp + 0x14]
mov ebx, edx
jmp 0x524f9d
xor edx, edx
mov ebx, dword [esp + 0x20]
jmp 0x522934
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0xe4]
mov ecx, dword [ecx + 0xe8]
inc bl
movzx edi, bl
mov edx, ecx
sub edx, eax
sar edx, 2
mov dword [esp + 0x14], edi
cmp edx, edi
je 0x524f6e
mov edx, dword [esp + 0x20]
mov edx, dword [edx + 0xf0]
mov edi, dword [esp + 0x14]
bt edx, edi
jae 0x524f89
mov ecx, esi
push dword [esp + 0x14]
call fcn.0057d7b0
test al, al
jne 0x524f79
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, esi
push eax
lea eax, [esp + 0xd4]
push eax
call fcn.00579560
xor esi, esi
cmp byte [esp + 0xf0], 0
je 0x52500c
mov esi, dword [esp + 0xd0]
lea ecx, [esp + 0xd0]
call fcn.005b1df0
mov ebx, dword [esp + 0x20]
mov edx, esi
jmp 0x522934
mov esi, 0xfc0
add esi, dword [edi + edx*4 - 4]
jmp 0x523065
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x523252
mov eax, edx
jmp 0x5231c7
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x52319f
mov eax, edx
mov ebx, dword [esp + 0x20]
jmp 0x5231bf
int3
int3
int3
int3
int3
int3
mov ecx, dword [ebx + 0x128]
sub ecx, dword [ebx + 0x124]
sar ecx, 2
jmp 0x52317e
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.005be340
add esp, 0x10
jmp 0x5224c8
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.005be340
add esp, 0x10
jmp 0x522505
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.005beed0
add esp, 0x10
jmp 0x52278c
movzx eax, al
mov dword [esp + 0xd0], 0
push 2
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005beed0
add esp, 0x10
jmp 0x5233b9
movzx esi, al
mov ebx, dword [esp + 0x34]
mov ecx, ebx
lea edi, [esp + 0x70]
mov eax, edx
mov edx, edi
push eax
call fcn.005e6b30
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 edi
lea esi, [esp + 0xd4]
push esi
push ebx
push eax
call fcn.005e7ae0
add esp, 0x10
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x70], 0
test ecx, ecx
jne 0x525191
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 8]
jmp 0x522952
push 1
call fcn.005e8ad0
jmp 0x525184
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 0x52261f
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 0x522739
int3
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManagerImpl::NotifyWillProcessTaskObservers
push 1
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005be340
add esp, 0x10
jmp 0x52307c
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.005beed0
add esp, 0x10
jmp 0x523350
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.WillProcessTaskObservers
push 1
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005be340
add esp, 0x10
jmp 0x523118
movzx eax, al
mov dword [esp + 0xd0], 0
push 2
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005beed0
add esp, 0x10
jmp 0x5232d9
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.QueueNotifyWillProcessTask
push 1
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005be340
add esp, 0x10
jmp 0x5232f4
movzx eax, al
mov dword [esp + 0xd0], 0
push 2
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005beed0
add esp, 0x10
jmp 0x52332e
push str....._third_partylibc_srcincludeoptional:796:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x62a183
call fcn.005aacb0
mov ecx, dword [esp + 0x24]
xor edx, edx
inc edx
add ecx, edx
mov dword [esp + 0x48], ecx
mov edx, dword [esp + 0x28]
adc edx, 0x80000000
mov dword [esp + 0x50], 0
xor ecx, ecx
inc ecx
cmp ecx, dword [esp + 0x48]
sbb dword [esp + 0x50], edx
jb 0x526206
mov edx, dword [esp + 0x24]
xor edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
xor ecx, dword [esp + 0x44]
or ecx, edx
je 0x526206
int3
mov ebx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
mov dword [esp + 0x30], 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 + 0x1c], eax
jb 0x52539e
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0xc]
mov dword [esp + 0x1c], 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 + 0x1c]
jmp 0x52264b
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
xor eax, dword [esp + 0xc]
or eax, ebx
je 0x52657a
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 0x52264b
mov ebx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
mov dword [esp + 0x30], 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 + 0x1c], eax
jb 0x525448
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0xc]
mov dword [esp + 0x1c], 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 + 0x1c]
jmp 0x522765
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
xor eax, dword [esp + 0xc]
or eax, ebx
je 0x52657d
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 0x522765
int3
int3
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x34]
xor ebx, ebx
inc ebx
add ecx, ebx
mov edx, dword [esp + 0xc]
mov ebx, 0x80000000
adc edx, ebx
mov dword [esp + 0x24], 0
xor ebx, ebx
inc ebx
cmp ebx, ecx
sbb dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
jae 0x5254c7
mov ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
jmp 0x5238fd
mov edx, dword [esp + 0x34]
xor edx, eax
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc]
xor eax, ebx
or eax, edx
mov edx, dword [esp + 0x3c]
je 0x5238fd
int3
call fcn.005f0860
jmp 0x523aa3
int3
inc eax
mov dword [esp + 0xdc], eax
cmp edx, eax
jne 0x523541
mov eax, edx
jmp 0x52355d
mov eax, dword [esi + 0xc]
mov edi, dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x522ebf
lea edi, [esi + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x525533
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 + 0x18], 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 [0x64f546]
test al, al
je 0x522ebf
mov edx, dword [esp + 0x18]
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.005f19d0
add esp, 4
lea ecx, [esp + 0xa0]
mov dword [ecx], eax
mov dword [esp + 0x70], ebx
lea eax, [esp + 0x68]
mov dword [eax], 0x62caef
xor edx, edx
lea esi, [esp + 0x9c]
lea ebx, [esp + 0x70]
push ebx
push eax
push edx
push 0x43
push 0x62c8f8
push edx
push ecx
push esi
push edi
call fcn.005f1a00
add esp, 0x24
jmp 0x522ebf
mov ecx, dword [ebx + 0x14c]
sub ecx, dword [ebx + 0x148]
sar ecx, 2
jmp 0x523520
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
mov edx, dword [esp + 0x24]
xor edx, ecx
mov esi, dword [esp + 0x3c]
xor esi, eax
or esi, edx
je 0x52561f
cmp dword [esp + 0x24], ecx
sbb dword [esp + 0x3c], eax
mov edx, dword [esp + 0x1c]
jmp 0x52562e
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
cmp eax, dword [ecx + 0x10]
mov ecx, dword [esp + 8]
jl 0x5228ea
jmp 0x5228ec
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x523c1b
movzx eax, al
mov dword [esp + 0xd0], str.SequenceManager.WillProcessTaskTimeObservers
push 1
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x78]
push ecx
push eax
call fcn.005be340
add esp, 0x10
jmp 0x5234ba
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.005beed0
add esp, 0x10
jmp 0x523681
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.005be340
add esp, 0x10
jmp 0x52369c
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.005beed0
add esp, 0x10
jmp 0x523707
mov ecx, dword [esi + 8]
call dword [0x6445dc]
push esi
call ecx
add esp, 4
jmp 0x5236f0
cmp byte [eax + 0xa4], 0
je 0x523ab6
mov eax, dword [edx]
mov ecx, dword [eax + 4]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], edx
call dword [0x6445dc]
mov ecx, dword [esp + 0x14]
call dword [esp + 0x34]
jmp 0x523ab6
mov eax, dword [0x64f6a0]
mov dword [esp + 8], eax
mov edx, dword [0x64f6a4]
mov dword [esp + 0xc], edx
push edx
push eax
mov dword [esp + 0x24], ecx
push ecx
push ebx
call fcn.005a13d0
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], 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 + 0x28]
imul ecx, edx, 0xf4240
mov dword [esp + 0x30], ecx
imul edx, dword [esp + 8]
add edx, eax
sub ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
sbb ecx, edx
mov edx, 0xf4240
mov eax, dword [esp + 0x10]
mul edx
mov dword [esp + 0x10], eax
add edx, dword [esp + 0x30]
mov dword [esp + 0x1c], 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.005a13d0
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x1c]
jmp 0x5225e1
mov eax, dword [0x64f6a0]
mov dword [esp + 8], eax
mov edx, dword [0x64f6a4]
mov dword [esp + 0xc], edx
push edx
push eax
mov dword [esp + 0x24], ecx
push ecx
push ebx
call fcn.005a13d0
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], 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 + 0x28]
imul ecx, edx, 0xf4240
mov dword [esp + 0x30], ecx
imul edx, dword [esp + 8]
add edx, eax
sub ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
sbb ecx, edx
mov edx, 0xf4240
mov eax, dword [esp + 0x10]
mul edx
mov dword [esp + 0x10], eax
add edx, dword [esp + 0x30]
mov dword [esp + 0x1c], 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.005a13d0
add eax, dword [esp + 0x10]
adc edx, dword [esp + 0x1c]
jmp 0x5226fb
mov eax, dword [0x64f6a0]
mov dword [esp + 0x18], eax
mov ecx, dword [0x64f6a4]
mov dword [esp + 0x24], ecx
push ecx
push eax
push edi
push esi
call fcn.005a13d0
mov ebx, edx
mov ecx, eax
mul dword [esp + 0x18]
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 + 0x18]
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 + 0x1c]
push edx
push eax
call fcn.005a13d0
add eax, dword [esp + 0x38]
adc edx, ebx
jmp 0x522cae
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 0x525929
mov edi, dword [esp + 0x38]
jmp 0x522e01
xor ecx, dword [esp + 0x18]
xor ebx, edx
or ebx, ecx
mov edi, dword [esp + 0x38]
je 0x522e01
int3
int3
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x70]
push eax
call fcn.0050a290
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x524ebd
cmp dword [eax + 0x14], 1
je 0x526753
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 0x5259d2
mov ebx, dword [esp + 8]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.00534b30
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x526665
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x523f7a
jmp 0x525941
mov byte [esp + 0x70], 0
xor eax, eax
dec eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
jmp 0x525a81
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], 0x503800
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x5259ad
mov ecx, dword [esp + 8]
cmp byte [ecx + 0xa4], 0
je 0x5259ad
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x78], 0
mov ecx, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x20]
jne 0x5266be
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 + 0x1c], 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 + 0x30], 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 0x52681e
mov edx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 8]
mov cl, byte [eax + 0x110]
cmp byte [esp + 0xc], 0
je 0x525c4d
test cl, cl
je 0x525c4d
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0xf8]
xor ecx, edx
mov ebx, dword [eax + 0xfc]
xor ebx, edi
or ebx, ecx
jne 0x525b18
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x100]
xor ecx, dword [esp + 0x1c]
mov ebx, dword [eax + 0x104]
xor ebx, dword [esp + 0x2c]
or ebx, ecx
jne 0x525b18
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
cmp dword [eax + 0x108], ecx
jne 0x525b18
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
cmp dword [eax + 0x10c], ecx
je 0x525c21
mov esi, dword [esp + 8]
mov dword [esp + 0x3c], edx
mov dword [esi + 0xf8], edx
mov eax, edi
mov dword [esi + 0xfc], edi
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x100], ecx
mov edi, dword [esp + 0x2c]
mov dword [esi + 0x104], edi
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x108], ecx
mov ebx, dword [esp + 0x30]
mov dword [esi + 0x10c], ebx
mov edx, dword [esp + 0xc]
mov byte [esi + 0x110], dl
lea ecx, [esp + 0x89]
mov ecx, dword [ecx]
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x89]
mov ecx, dword [ecx + 3]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x111], ecx
mov ecx, dword [esp + 0x18]
mov dword [esi + 0x114], ecx
mov ecx, dword [esi + 0x58]
mov dword [esp + 0x28], ecx
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xd0], eax
mov dword [esp + 0xdc], edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], ebx
mov byte [esp + 0xe8], dl
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 + 0x50]
call fcn.0052bcc0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0x20]
je 0x522775
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
cmp ecx, eax
je 0x522775
jmp 0x526681
cmp byte [esp + 0xc], 0
setne ch
cmp ch, cl
je 0x525c21
jmp 0x525b18
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x70]
push eax
call fcn.0050a290
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x524ebd
cmp dword [eax + 0x14], 1
je 0x5266f4
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 0x525cef
mov ebx, dword [esp + 8]
mov ecx, ebx
push esi
push edi
push dword [ebp + 0xc]
call fcn.00534b30
mov ebx, dword [ebx + 0x5c]
test ebx, ebx
jne 0x526628
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
je 0x523f47
jmp 0x525c5e
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 + 0x30], eax
mov dword [esp + 0x28], eax
jmp 0x525db4
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], 0x503800
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x525cca
mov ecx, dword [esp + 8]
cmp byte [ecx + 0xa4], 0
je 0x525cca
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 0x5266a2
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 + 0x1c], 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 + 0x1c]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x7c], ecx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x80], eax
mov dword [esp + 0x30], 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 0x5268ce
mov eax, dword [esp + 0x70]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 8]
mov cl, byte [eax + 0x110]
cmp byte [esp + 0xc], 0
je 0x525f8c
test cl, cl
je 0x525f8c
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0xf8]
xor ecx, dword [esp + 0x1c]
mov ebx, dword [eax + 0xfc]
xor ebx, edx
or ebx, ecx
jne 0x525e51
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x100]
xor ecx, dword [esp + 0x2c]
mov ebx, dword [eax + 0x104]
xor ebx, dword [esp + 0x28]
or ebx, ecx
jne 0x525e51
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
cmp dword [eax + 0x108], ecx
jne 0x525e51
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
cmp dword [eax + 0x10c], ecx
je 0x525f60
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0xf8], eax
mov dword [ecx + 0xfc], edx
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x100], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x104], eax
mov ebx, dword [esp + 0x10]
mov dword [ecx + 0x108], ebx
mov ebx, dword [esp + 0x30]
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 + 0x3c], ebx
lea ebx, [esp + 0x89]
mov ebx, dword [ebx + 3]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x3c]
mov dword [ecx + 0x111], ebx
mov ebx, dword [esp + 0x18]
mov dword [ecx + 0x114], ebx
mov ebx, dword [ecx + 0x58]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0xd4], edx
mov edx, dword [esp + 0x1c]
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 + 0x30]
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 + 0x64]
call fcn.0052bcc0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0x20]
je 0x52265b
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x18]
mov dword [esp + 8], eax
cmp ecx, eax
je 0x52265b
jmp 0x526644
cmp byte [esp + 0xc], 0
setne ch
cmp ch, cl
je 0x525f60
jmp 0x525e51
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 0x5242ba
lea edi, [esi + 0x14]
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x525fca
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 + 0x14], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 0x1c], eax
mov ebx, dword [esi + 0x6c]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esp + 0xa0], 0x122
mov al, byte [0x64f546]
test al, al
jne 0x5267b2
mov edx, dword [esp + 8]
jmp 0x5242ba
mov ebx, dword [0x64f6a0]
mov dword [esp + 0x34], ebx
mov eax, dword [0x64f6a4]
mov dword [esp + 0x14], eax
push eax
push ebx
push edi
push esi
call fcn.005a13d0
mov dword [esp + 0x30], edx
mov ecx, eax
mul ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x1c], ecx
imul ecx, dword [esp + 0x14]
add edx, ecx
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
imul ecx, eax, 0xf4240
mov dword [esp + 0x10], ecx
imul eax, dword [esp + 0x34]
add eax, edx
sub esi, dword [esp + 0xc]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esp + 0x1c]
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 + 0x14]
push dword [esp + 0x38]
push edx
push eax
call fcn.005a13d0
add eax, dword [esp + 0xc]
adc edx, dword [esp + 0x10]
jmp 0x523bbc
push str....._third_partylibc_srcinclude_vector:1557:_assertion___first_____last_failed:_vector::erase_first__last__called_with_invalid_range_n
push 0x62a183
call fcn.005aacb0
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x62a183
call fcn.005aacb0
call fcn.005b6d80
mov ebx, dword [0x64f6a0]
mov dword [esp + 0x30], ebx
mov eax, dword [0x64f6a4]
mov dword [esp + 0x14], eax
push eax
push ebx
push edi
push esi
call fcn.005a13d0
mov dword [esp + 0xc], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
mul ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc]
mov ebx, eax
imul ebx, dword [esp + 0x14]
add edx, ebx
imul ebx, ecx, 0xf4240
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x30]
imul ecx, ebx
add ecx, edx
sub esi, dword [esp + 0x1c]
sbb edi, ecx
mov ecx, 0xf4240
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 + 0x14]
push ebx
push edx
push eax
call fcn.005a13d0
add eax, dword [esp + 0xc]
adc edx, dword [esp + 0x10]
jmp 0x524249
push eax
call fcn.0057dc2b
add esp, 4
jmp 0x52495c
mov ecx, dword [esp + 0xc]
cmp dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x2c]
sbb dword [esp + 0x44], ecx
jl 0x526242
jmp 0x526312
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x44], ecx
jmp 0x526206
mov dword [esp + 0x2c], ecx
mov eax, dword [edx]
mov ebx, dword [eax]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x18], ecx
inc ebx
cmp ebx, ecx
mov edx, 0
cmovne edx, ebx
cmp dword [esp + 0x18], edx
jbe 0x524ee7
mov ecx, edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x28], edx
imul ecx, ecx, 0x70
mov edx, dword [esp + 0x28]
add edx, ecx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x28]
mov edx, dword [edx + ecx + 0x44]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x28]
mov edx, dword [edx + ecx + 0x18]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x28]
mov edx, dword [edx + ecx + 0x1c]
mov dword [esp + 0x40], 0
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], edx
or ecx, edx
mov dword [esp + 0x44], 0
jne 0x52624b
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 0x60]
mov dword [esp + 0x28], edx
mov edx, dword [ecx + 0x64]
mov ecx, edx
xor ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x28]
xor ecx, dword [esp + 0xc]
or ecx, dword [esp + 0x24]
je 0x5262d7
mov ecx, dword [esp + 0x28]
cmp ecx, dword [esp + 0xc]
sbb edx, dword [esp + 0x2c]
jae 0x526312
mov edx, dword [esp + 0x18]
jmp 0x5238bb
mov ecx, dword [esp + 0x38]
cmp dword [ecx + 0x28], 0
jne 0x52617e
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 0x5252e6
mov ecx, dword [esp + 0x24]
add ecx, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x28]
adc edx, dword [esp + 0x44]
mov dword [esp + 0x28], 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 + 0x28]
mov dword [esp + 0x44], edx
jmp 0x526206
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x38]
mov dword [esp + 0xc], 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 + 0xc]
or ecx, edx
jne 0x526163
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x4c]
cmp edx, dword [ecx + 0x40]
jl 0x526242
xor eax, eax
dec eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], eax
jmp 0x523920
xor edx, edx
inc edx
mov edi, dword [esp + 0x24]
add edi, edx
mov ebx, dword [esp + 0x18]
adc ebx, 0x80000000
mov dword [esp + 0x4c], 0
xor edx, edx
inc edx
cmp edx, edi
sbb dword [esp + 0x4c], ebx
jb 0x526379
mov edi, dword [esp + 0x24]
xor edi, dword [esp + 0x50]
mov edx, dword [esp + 0x18]
xor edx, dword [esp + 0x48]
or edx, edi
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
je 0x524469
jmp 0x526562
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
jmp 0x524469
lea esi, [esp + 0x70]
add ebx, 0xfffffffc
mov ecx, esi
mov edx, ebx
call fcn.005e8920
mov eax, dword [esp + 0x20]
cmp ebx, dword [eax + 0x1ac]
jne 0x52638a
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 + 0x18], 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 + 0x18]
mov dword [ecx + 0x1ac], esi
mov dword [ecx + 0x1b0], edi
mov esi, dword [esp + 0x24]
mov dword [ecx + 0x1b4], esi
cmp ebx, edx
je 0x52640c
add ebx, 4
add edx, 4
cmp edx, 8
je 0x5260b7
add edx, 0xfffffffc
cmp ebx, edx
jne 0x5263fc
mov esi, dword [esp + 0x20]
jmp 0x524954
mov edi, dword [esp + 0x24]
cmp edx, ebx
je 0x526440
push 0xfc0
call fcn.0057dc30
add esp, 4
lea edx, [esp + 0x70]
mov dword [edx], eax
mov ecx, edi
call fcn.005e87d0
mov esi, dword [esp + 0x20]
jmp 0x52495c
push 0xfc0
call fcn.0057dc30
add esp, 4
lea ebx, [esp + 0x70]
mov dword [ebx], eax
mov ecx, edi
mov edx, ebx
call fcn.005e8920
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 0x52649b
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.005e87d0
jmp 0x52495c
mov dword [esp + 0x38], eax
test esi, esi
jle 0x5264cc
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 0x524903
sar esi, 1
cmp ebx, edi
mov eax, 1
cmove esi, eax
cmp esi, 0x40000000
jae 0x5260c6
lea eax, [esi*4]
push eax
call fcn.0057dc30
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 + 0x18], 0
je 0x526525
push dword [esp + 0x18]
call fcn.0057dc2b
add esp, 4
mov dword [esp + 0x18], edi
jmp 0x5264c3
push eax
call fcn.00507280
add esp, 4
mov eax, dword [ebx]
mov dword [esp + 0xc], eax
jmp 0x524c1b
push eax
call fcn.00506f30
add esp, 4
jmp 0x524d4d
mov edx, dword [esp + 0x24]
cmp dword [esp + 0x50], edx
mov edx, dword [esp + 0x18]
sbb dword [esp + 0x48], edx
jmp 0x524571
int3
push eax
call fcn.00506f30
add esp, 4
jmp 0x5246ef
mov ecx, esi
jmp 0x524bcc
int3
int3
int3
int3
cmp eax, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
jmp 0x524db7
push dword [esp + 0x28]
call fcn.00507280
add esp, 4
mov eax, dword [edi]
jmp 0x524e61
push ebx
call fcn.005ec8a0
add esp, 4
test al, al
jne 0x524a68
jmp 0x524a8b
mov edx, dword [esp + 8]
xor edx, dword [esp + 0xc]
xor ebx, ecx
or ebx, edx
je 0x526580
shr ecx, 0x1f
not ecx
xor edx, edx
inc edx
add ecx, edx
mov edx, 0x80000000
adc edx, 0xffffffff
jmp 0x525c8a
mov edx, dword [esp + 8]
xor edx, dword [esp + 0xc]
xor ebx, ecx
or ebx, edx
je 0x526583
shr ecx, 0x1f
not ecx
xor edx, edx
inc edx
add ecx, edx
mov edx, 0x80000000
adc edx, 0xffffffff
jmp 0x52596d
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x6c]
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0xc]
mov dword [esp + 8], ecx
add eax, ecx
jmp 0x524a0f
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x6445dc]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x525cb8
mov ecx, dword [esp + 8]
push dword [ebp + 0xc]
call fcn.005537a0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x525f74
jmp 0x52265b
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [esp + 8], ecx
call dword [0x6445dc]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [esp + 0xc]
jmp 0x52599b
mov ecx, dword [esp + 8]
push dword [ebp + 0xc]
call fcn.005537a0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, dword [ecx + 0xc]
jne 0x525c35
jmp 0x522775
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 0x525d52
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 0x525a31
int3
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 0x5265c4
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 0x525c8a
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 0x5265e9
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 0x52596d
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
sub ecx, ebx
sar ecx, 4
imul ecx, ecx, 0xb6db6db7
mov ebx, dword [esp + 0x14]
add ebx, ecx
add ebx, edx
movzx edi, al
push dword [esi + 4]
call fcn.005f19d0
add esp, 4
lea ecx, [esp + 0xa4]
mov dword [ecx], eax
mov dword [esp + 0x70], ebx
lea eax, [esp + 0x68]
mov dword [eax], 0x62caef
xor edx, edx
lea esi, [esp + 0xa0]
lea ebx, [esp + 0x70]
push ebx
push eax
push edx
push 0x43
push 0x62c8f8
push edx
push ecx
push esi
push edi
call fcn.005f1a00
add esp, 0x24
jmp 0x52600e
mov eax, dword [esp + 8]
cmp byte [eax + 0xa4], 0
je 0x525a9b
mov ecx, dword [esp + 8]
call fcn.0044bc80
mov ebx, eax
mov eax, dword [esi]
mov edi, dword [eax + 8]
mov ecx, edi
call dword [0x6445dc]
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 + 0x1c], 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 + 0x30], eax
mov al, byte [esp + 0x88]
mov dword [esp + 0xc], eax
jmp 0x525a9b
mov eax, dword [esp + 8]
cmp byte [eax + 0xa4], 0
je 0x525dce
mov ecx, dword [esp + 8]
call fcn.0044bc80
mov byte [esp + 0x10], al
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
mov dword [esp + 0xc], ecx
call dword [0x6445dc]
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 + 0x28], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x88]
mov dword [esp + 0xc], eax
jmp 0x525dce