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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x4b0
mov esi, esp
mov eax, dword [0x646040]
xor eax, ebp
mov dword [esi + 0x4a8], eax
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
mov dword [esi + 4], ecx
jne 0x529000
mov eax, dword [ecx + 0x60]
mov dword [esi + 0x20], eax
mov eax, dword [eax + 8]
mov dword [esi + 0x40], eax
lea edi, [esi + 0xd8]
push 0x388
push 0xff
push edi
call fcn.00568ad0
mov ecx, dword [esi + 4]
add esp, 0xc
mov dword [edi], 0
lea eax, [ecx + 0x68]
mov dword [esi + 0x44], eax
lea eax, [esi + 0xe0]
mov dword [esi + 0x34], eax
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x528f6b
mov ebx, dword [ecx + 0x6c]
mov eax, dword [ecx + 0x70]
cmp ebx, eax
je 0x5284ec
mov ecx, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
test edi, edi
jne 0x528f53
cmp ebx, eax
je 0x528f23
mov edi, dword [ebx + 0x50]
test edi, edi
je 0x528f41
mov ecx, dword [edi + 0xc]
cmp ecx, 0x561850
je 0x527f1a
call dword [0x6401dc]
push 0
push edi
call ecx
add esp, 8
test al, al
jne 0x5289f3
mov ecx, dword [ebp + 8]
movzx eax, byte [ecx + 8]
test al, al
lea edi, [esi + 0x60]
jne 0x527fbe
mov ecx, dword [fcn.005608f0]
cmp ecx, 0x5531a0
jne 0x5289e2
xor eax, eax
mov dword [esi + 0x64], eax
mov dword [esi + 0x60], eax
push edi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov eax, 0x7bd05af6
cmp eax, edx
mov eax, 0x863
mov edi, ecx
sbb eax, ecx
jl 0x5291d4
mov eax, edx
mov ecx, 0xf4240
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x64b6cc]
push dword [0x64b6c8]
push ecx
push eax
call fcn.005877d0
mov dword [esi + 0x60], eax
mov dword [esi + 0x64], edx
mov ecx, dword [ebp + 8]
mov al, byte [ecx + 8]
cmp al, 1
je 0x528fb7
test ecx, ecx
je 0x528fc5
mov edx, ecx
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov dword [edx], eax
mov dword [edx + 4], ecx
mov byte [edx + 8], 1
mov al, 1
mov ecx, edx
test al, al
je 0x528f32
mov eax, ecx
mov ecx, dword [ecx]
mov eax, dword [eax + 4]
cmp dword [ebx + 0x28], 1
je 0x529014
mov edx, dword [ebx + 0x18]
mov edi, dword [ebx + 0x1c]
cmp ecx, edx
sbb eax, edi
mov ecx, dword [esi + 4]
jl 0x5284ec
xor ebx, ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0xc0], xmm0
movdqa xmmword [esi + 0xb0], xmm0
movdqa xmmword [esi + 0xa0], xmm0
movdqa xmmword [esi + 0x90], xmm0
movdqa xmmword [esi + 0x80], xmm0
movdqa xmmword [esi + 0x70], xmm0
movdqa xmmword [esi + 0x60], xmm0
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x528fa3
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x528f23
cmp byte [eax + 0x59], 1
lea edi, [esi + 0x60]
je 0x528f8e
mov ecx, dword [esi + 0x44]
push 0
push edi
call fcn.005293d0
test bl, bl
jne 0x5282f8
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xc0], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0xc4], eax
mov ecx, dword [esi + 4]
mov edx, edi
call fcn.00529720
mov edi, esp
sub esp, 0x70
mov ebx, esp
mov dword [esi + 0x14], esp
movaps xmm0, xmmword [esi + 0x60]
movups xmmword [ebx], xmm0
lea ecx, [esi + 0x70]
movups xmm0, xmmword [ecx + 0x29]
movups xmmword [ebx + 0x39], xmm0
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [ebx + 0x30], xmm0
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [ecx + 0x10]
movups xmmword [ebx + 0x20], xmm1
movups xmmword [ebx + 0x10], xmm0
mov eax, dword [esi + 0xb0]
mov dword [esi + 0xc], eax
mov edx, 0
mov dword [esi + 0xb0], edx
movzx eax, word [ecx + 0x48]
mov word [ebx + 0x58], ax
mov al, byte [ecx + 0x4a]
mov byte [ebx + 0x5a], al
mov eax, dword [esi + 0xbc]
mov dword [esi + 0x18], eax
mov dword [esi + 0xbc], edx
mov eax, dword [esi + 0xc4]
mov dword [esi + 0x10], eax
mov dword [ebx + 0x64], eax
mov eax, dword [esi + 0xc0]
mov dword [esi + 0x24], eax
mov dword [ebx + 0x60], eax
mov eax, dword [esi + 0xcc]
mov dword [esi + 0x1c], eax
mov dword [ebx + 0x6c], eax
movups xmm0, xmmword [ebx]
movups xmm2, xmmword [ebx + 0x39]
movups xmm3, xmmword [ebx + 0x30]
movups xmm1, xmmword [ebx + 0x10]
movups xmm4, xmmword [ebx + 0x20]
mov dword [ebx + 0x50], edx
movzx eax, word [ebx + 0x58]
mov word [esi + 0x4c], ax
mov al, byte [ebx + 0x5a]
mov byte [esi + 0x4e], al
movaps xmmword [esi + 0x50], xmm0
movups xmmword [esi + 0x489], xmm2
movaps xmmword [esi + 0x480], xmm3
mov eax, dword [esi + 0xc8]
mov dword [esi + 0x2c], eax
mov dword [esi + 0xc8], edx
movaps xmmword [esi + 0x470], xmm4
movaps xmmword [esi + 0x460], xmm1
mov dword [ebx + 0x5c], edx
mov dword [ebx + 0x68], edx
mov eax, dword [esi + 0x20]
cmp dword [eax], edx
mov dword [esi + 8], edi
je 0x528d25
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
mov dword [esi + 0x30], eax
mov eax, dword [ecx + 4]
mov dword [esi + 0x28], ecx
mov ecx, dword [ecx + 0x10]
inc eax
cmp eax, ecx
mov edx, eax
mov edi, 0
cmove edx, edi
cmp dword [esi + 0x30], edx
mov edx, dword [esi + 0x28]
je 0x528c59
cmp eax, ecx
cmove eax, edi
mov dword [edx + 4], eax
cmp ecx, eax
jbe 0x528f7f
mov esp, dword [esi + 0x14]
mov ecx, dword [edx + 0xc]
imul eax, eax, 0x70
movaps xmm0, xmmword [esi + 0x50]
movups xmmword [ecx + eax], xmm0
movaps xmm0, xmmword [esi + 0x460]
movaps xmm1, xmmword [esi + 0x470]
movups xmmword [ecx + eax + 0x10], xmm0
movups xmmword [ecx + eax + 0x20], xmm1
movaps xmm0, xmmword [esi + 0x480]
movups xmmword [ecx + eax + 0x30], xmm0
movdqu xmm0, xmmword [esi + 0x489]
movdqu xmmword [ecx + eax + 0x39], xmm0
mov edx, dword [esi + 0xc]
mov dword [ecx + eax + 0x50], edx
mov dl, byte [esi + 0x4e]
mov byte [ecx + eax + 0x5a], dl
movzx edx, word [esi + 0x4c]
mov word [ecx + eax + 0x58], dx
mov edx, dword [esi + 0x18]
mov dword [ecx + eax + 0x5c], edx
mov edx, dword [esi + 0x24]
mov dword [ecx + eax + 0x60], edx
mov edx, dword [esi + 0x10]
mov dword [ecx + eax + 0x64], edx
mov edx, dword [esi + 0x2c]
mov dword [ecx + eax + 0x68], edx
mov edx, dword [esi + 0x1c]
mov dword [ecx + eax + 0x6c], edx
mov edx, dword [esi + 0x20]
mov eax, dword [edx + 8]
inc eax
mov dword [edx + 8], eax
mov ecx, dword [edx + 0xc]
cmp ecx, eax
cmova eax, ecx
mov dword [edx + 0xc], eax
mov eax, dword [ebx + 0x68]
test eax, eax
jne 0x5282c1
mov edi, dword [ebx + 0x5c]
test edi, edi
jne 0x5282a3
mov edi, dword [ebx + 0x50]
test edi, edi
mov ecx, dword [esi + 4]
jne 0x5282d8
mov esp, dword [esi + 8]
mov eax, dword [esi + 0xc8]
test eax, eax
jne 0x5282ae
mov edi, dword [esi + 0xbc]
test edi, edi
jne 0x528298
mov edi, dword [esi + 0xb0]
test edi, edi
je 0x527ebc
lock dec dword [edi]
jne 0x527ebc
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
mov ecx, dword [esi + 4]
add esp, 4
jmp 0x527ebc
lock dec dword [edi + 4]
jne 0x52826a
jmp 0x528e39
lock dec dword [edi + 4]
jne 0x528245
jmp 0x528e9f
lock dec dword [eax]
jne 0x528260
push eax
call fcn.00564050
mov ecx, dword [esi + 4]
add esp, 4
jmp 0x528260
lock dec dword [eax]
jne 0x52823e
push eax
call fcn.00564050
add esp, 4
jmp 0x52823e
lock dec dword [edi]
jne 0x528253
mov ecx, dword [edi + 8]
call dword [0x6401dc]
push edi
call ecx
mov ecx, dword [esi + 4]
add esp, 4
jmp 0x528253
mov eax, dword [esi + 0xd8]
mov edx, 8
test al, 1
je 0x52830d
mov edx, dword [esi + 0xe4]
mov ecx, eax
shr ecx, 1
cmp ecx, edx
je 0x528d03
lea edx, [esi + 0xe0]
test al, 1
je 0x528329
mov edx, dword [esi + 0xe0]
imul eax, ecx, 0x70
add eax, edx
mov edi, 0
je 0x528fc5
movaps xmm0, xmmword [esi + 0x60]
movups xmmword [eax], xmm0
lea edx, [esi + 0x70]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [edx + 0x10]
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax + 0x20], xmm1
movups xmm0, xmmword [edx + 0x20]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [edx + 0x29]
movups xmmword [eax + 0x39], xmm0
mov ecx, dword [esi + 0xb0]
mov dword [eax + 0x50], ecx
mov dword [esi + 0xb0], edi
mov cl, byte [edx + 0x4a]
mov byte [eax + 0x5a], cl
movzx ecx, word [edx + 0x48]
mov word [eax + 0x58], cx
mov ecx, dword [esi + 0xbc]
mov dword [eax + 0x5c], ecx
mov dword [esi + 0xbc], edi
movq xmm0, qword [esi + 0xc0]
movq qword [eax + 0x60], xmm0
mov ecx, dword [esi + 0xc8]
mov dword [eax + 0x68], ecx
mov dword [esi + 0xc8], edi
mov ecx, dword [esi + 0xcc]
mov dword [eax + 0x6c], ecx
add dword [esi + 0xd8], 2
mov ecx, dword [esi + 4]
jmp 0x528256
shr ebx, 1
imul eax, ebx, 0x70
mov ecx, dword [esi + 0x34]
lea edi, [eax + ecx]
add edi, 0xffffff90
test edi, edi
je 0x5291c5
dec ebx
mov ecx, edi
call fcn.00529910
add edi, 0xffffff90
test ebx, ebx
mov ecx, dword [esi + 4]
jne 0x5283d0
mov eax, dword [esi + 0xd8]
and eax, 1
jmp 0x528506
test edi, edi
je 0x528434
jmp 0x52928b
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x529146
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x5284a5
mov eax, dword [ecx]
mov edx, dword [ecx + 0xc]
cmp dword [eax + 8], 0x4f2f30
mov edi, dword [edx + 8]
jne 0x5283f8
test edi, edi
jne 0x52919d
cmp byte [ecx + 0xa4], 0
je 0x5284a5
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x52915a
mov ebx, dword [ecx + 0x6c]
cmp ebx, dword [ecx + 0x70]
je 0x528f23
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x52916e
xor edx, edx
cmp dword [ecx + 0x78], 0
jne 0x529182
mov dword [esi + 8], ebx
mov ebx, dword [ebx + 0x28]
mov eax, dword [ecx]
cmp dword [eax + 0x24], 0x562590
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
mov dword [esi + 0xc], edx
jne 0x528498
test edi, edi
je 0x5285e2
jmp 0x5291b1
test edi, edi
je 0x5285e2
jmp 0x52929f
mov byte [esi + 0x460], 0
xor eax, eax
jmp 0x528620
mov ecx, ebx
and cl, 1
cmp cl, al
je 0x5287b3
jmp 0x5286e1
test edi, edi
je 0x5285e2
jmp 0x529277
test edi, edi
je 0x52857b
jmp 0x529263
push dword [ebp + 8]
call fcn.0052a8b0
jmp 0x5287b3
mov ebx, dword [esi + 0xd8]
mov eax, ebx
and eax, 1
jne 0x528d17
cmp ebx, 2
jae 0x5283c2
test eax, eax
jne 0x528d91
mov dword [esi + 0xd8], 0
mov eax, dword [ecx]
cmp dword [eax + 0x4c], 0x52a8b0
jne 0x5284df
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x470], xmm0
movdqa xmmword [esi + 0x460], xmm0
cmp dword [eax + 0x18], 0x4f2cd0
jne 0x528401
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x5290b3
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
je 0x5284a5
mov eax, dword [ecx]
mov edx, dword [ecx + 0xc]
cmp dword [eax + 8], 0x4f2f30
mov edi, dword [edx + 8]
jne 0x5284d2
test edi, edi
jne 0x52911e
cmp byte [ecx + 0xa4], 0
je 0x5284a5
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x5290c7
mov ebx, dword [ecx + 0x6c]
cmp ebx, dword [ecx + 0x70]
je 0x528f23
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x5290db
xor edx, edx
cmp dword [ecx + 0x78], 0
jne 0x529103
mov dword [esi + 8], ebx
mov ebx, dword [ebx + 0x28]
mov eax, dword [ecx]
cmp dword [eax + 0x24], 0x562590
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
mov dword [esi + 0xc], edx
jne 0x5284c5
test edi, edi
jne 0x529132
xor eax, eax
cmp ebx, 2
cmovne eax, ebx
mov ecx, dword [ecx + 8]
mov cl, byte [ecx + 0x35]
mov edx, dword [esi + 4]
mov edx, dword [edx + 0x64]
cmp cl, byte [edx + 0x20]
mov ecx, dword [esi + 4]
cmovae eax, ebx
mov edx, dword [esi + 8]
movdqu xmm0, xmmword [edx + 0x18]
movdqa xmmword [esi + 0x460], xmm0
mov edx, dword [esi + 0xc]
mov dword [esi + 0x470], edx
mov dword [esi + 0x474], eax
mov al, 1
mov byte [esi + 0x478], al
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x528fe7
cmp dword [ecx + 0x5c], 0
jne 0x528da7
lea ecx, [esi + 0x479]
mov edx, dword [ecx - 0x19]
mov dword [esi + 8], edx
mov edx, dword [ecx + 3]
mov dword [esi + 0x53], edx
mov edx, dword [ecx]
mov dword [esi + 0x50], edx
mov edx, dword [ecx - 0x15]
mov dword [esi + 0xc], edx
mov bl, byte [ecx - 1]
mov edx, dword [ecx - 0xd]
mov dword [esi + 0x1c], edx
mov edx, dword [ecx - 0x11]
mov dword [esi + 0x18], edx
mov edx, dword [ecx - 9]
mov dword [esi + 0x10], edx
mov ecx, dword [ecx - 5]
mov dword [esi + 0x14], ecx
mov edi, dword [eax + 8]
test edi, edi
jne 0x529089
mov edx, dword [esi + 4]
mov al, byte [edx + 0x110]
mov ecx, ebx
and cl, al
cmp cl, 1
jne 0x5284b3
mov eax, dword [edx + 0xf8]
xor eax, dword [esi + 8]
mov ecx, dword [edx + 0xfc]
xor ecx, dword [esi + 0xc]
or ecx, eax
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x1c]
jne 0x5286e1
mov eax, dword [edx + 0x100]
xor eax, ecx
mov ecx, dword [edx + 0x104]
xor ecx, edi
or ecx, eax
jne 0x5286e1
mov eax, dword [esi + 0x10]
cmp dword [edx + 0x108], eax
jne 0x5286e1
mov eax, dword [esi + 0x14]
cmp dword [edx + 0x10c], eax
je 0x5287b3
mov byte [esi + 0x24], bl
mov eax, dword [edx + 0xc]
mov edi, dword [eax + 8]
test edi, edi
jne 0x52909a
mov ecx, dword [esi + 8]
mov dword [edx + 0xf8], ecx
mov ecx, dword [esi + 0xc]
mov dword [edx + 0xfc], ecx
mov ecx, dword [esi + 0x18]
mov dword [edx + 0x100], ecx
mov ebx, dword [esi + 0x1c]
mov dword [edx + 0x104], ebx
mov ecx, dword [esi + 0x10]
mov dword [edx + 0x108], ecx
mov ecx, dword [esi + 0x14]
mov dword [edx + 0x10c], ecx
mov cl, byte [esi + 0x24]
mov byte [edx + 0x110], cl
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x53]
mov edi, dword [esi + 4]
mov dword [edi + 0x111], ecx
mov ecx, dword [esi + 4]
mov dword [ecx + 0x114], edx
mov edx, dword [esi + 4]
mov edi, dword [eax + 8]
test edi, edi
jne 0x5290ef
mov ecx, dword [edx + 0x58]
mov eax, dword [esi + 0xc]
mov dword [esi + 0x64], eax
mov eax, dword [esi + 8]
mov dword [esi + 0x60], eax
mov dword [esi + 0x6c], ebx
mov eax, dword [esi + 0x18]
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 0x74], eax
mov al, byte [esi + 0x24]
mov byte [esi + 0x78], al
mov eax, dword [esi + 0x50]
mov dword [esi + 0x79], eax
mov eax, dword [esi + 0x53]
mov dword [esi + 0x7c], eax
sub esp, 0x28
movdqu xmm0, xmmword [esi + 0x60]
movups xmm1, xmmword [esi + 0x70]
movups xmmword [esp + 0x18], xmm1
movdqu xmmword [esp + 8], xmm0
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov dword [esp], edx
call fcn.0051ae90
cmp dword [esi + 0xd8], 0
mov eax, dword [esi + 0x20]
jne 0x528fd4
test eax, eax
je 0x528973
cmp dword [esi + 0x40], 0
jne 0x528973
cmp dword [eax + 8], 0
je 0x528973
mov ecx, dword [eax + 0x18]
mov dword [esi + 4], ecx
test ecx, ecx
je 0x528973
mov dl, byte [eax + 0x48]
cmp dl, 1
je 0x5289fd
mov eax, dword [eax]
mov ecx, dword [eax]
test dl, dl
jne 0x528aec
mov ebx, dword [eax + 0x10]
inc ecx
xor edx, edx
cmp ecx, ebx
cmove ecx, edx
cmp ebx, ecx
jbe 0x528f8b
mov eax, dword [eax + 0xc]
imul edi, ecx, 0x70
lea ecx, [eax + edi]
mov edx, dword [eax + edi + 0x44]
mov dword [esi + 0x18], edx
mov edx, dword [eax + edi + 0x18]
mov eax, dword [eax + edi + 0x1c]
mov edi, edx
or edi, eax
mov ebx, 0
mov edi, 0
jne 0x52898a
mov dword [esi + 0xc], ebx
mov ebx, dword [ecx + 0x60]
mov edx, dword [ecx + 0x64]
mov eax, edx
shr eax, 8
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ebx
shld edx, ebx, 0x18
mov al, 1
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x20]
mov ebx, dword [eax + 0x20]
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
sub ecx, eax
sar ecx, 4
cmp ecx, ebx
jbe 0x528f44
mov dword [esi + 8], edi
cmp byte [esi + 0x1c], 0
je 0x528f32
mov ecx, edx
mov edi, ebx
shl edi, 4
lea edx, [eax + edi]
mov dword [esi + 0x2c], edx
mov edx, dword [eax + edi + 4]
mov dword [esi + 0x1c], edx
mov eax, dword [eax + edi + 8]
mov dword [esi + 0x24], eax
mov edi, dword [esi + 0x10]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [esi + 0x14]
or eax, ecx
mov dword [esi + 0xdc], edi
mov dword [esi + 0xd8], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0xe0], eax
mov eax, dword [esi + 8]
mov dword [esi + 0xe4], eax
mov eax, dword [esi + 0x18]
mov dword [esi + 0xe8], eax
mov eax, dword [esi + 0x20]
mov dword [esi + 0xf0], eax
mov ecx, dword [esi + 0x2c]
lea eax, [esi + 0xd8]
push eax
lea eax, [esi + 0x60]
push eax
call fcn.0050ae90
mov eax, dword [esi + 0x24]
cmp dword [esi + 0x1c], eax
jne 0x528973
mov eax, dword [esi + 4]
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 0x528f44
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 0x528f44
cmp dword [ecx + ebx*4], 1
jne 0x528973
mov ecx, dword [eax + 0x14]
mov edx, ecx
bts edx, ebx
mov dword [eax + 0x14], edx
test ecx, ecx
jne 0x528973
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x528973
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 0x528960
test al, 4
jne 0x528f99
mov ecx, dword [esi + 0x4a8]
xor ecx, ebp
call fcn.00567335
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
cmp dword [ecx + 0x28], 0
jne 0x5289d9
mov edi, dword [ecx + 0x20]
mov ebx, dword [ecx + 0x24]
mov dword [esi + 0xc], edi
add edi, 1
mov dword [esi + 8], ebx
adc ebx, 0x80000000
cmp edi, 2
sbb ebx, 0
jb 0x5292c8
add edx, dword [esi + 0xc]
adc eax, dword [esi + 8]
seto byte [esi + 8]
mov ebx, eax
sar ebx, 0x1f
cmp byte [esi + 8], 0
lea edi, [ebx - 0x80000000]
cmove ebx, edx
cmp byte [esi + 8], 0
cmove edi, eax
jmp 0x528844
mov ebx, edx
mov edi, eax
jmp 0x528844
call dword [0x6401dc]
push edi
call ecx
add esp, 4
jmp 0x527f93
mov bl, 1
mov ecx, dword [esi + 4]
jmp 0x527fec
mov ebx, eax
mov eax, dword [eax]
mov edx, dword [eax]
mov edi, dword [eax + 0x10]
inc edx
xor ecx, ecx
cmp edx, edi
cmovne ecx, edx
cmp edi, ecx
jbe 0x5292b3
imul ecx, ecx, 0x70
add ecx, dword [eax + 0xc]
lea eax, [esi + 0xd8]
push eax
call fcn.0053e980
mov dl, byte [ebx + 0x48]
test dl, dl
je 0x5292b9
mov eax, ebx
mov edi, dword [esi + 0xd8]
mov ebx, dword [esi + 0xdc]
mov ecx, dword [eax + 0x34]
mov eax, ebx
mov dword [esi + 8], ecx
xor eax, ecx
mov ecx, dword [esi + 0x20]
mov ecx, dword [ecx + 0x30]
mov dword [esi + 4], edi
xor edi, ecx
or edi, eax
je 0x528a9e
cmp dword [esi + 4], ecx
sbb ebx, dword [esi + 8]
mov eax, dword [esi + 0x20]
jae 0x528973
mov ecx, dword [eax + 0x18]
mov dword [esi + 4], ecx
cmp dword [eax + 8], 0
jne 0x5287f9
xor edx, edx
dec edx
mov dword [esi + 0x10], 0xffffff
mov dword [esi + 0x14], 0
mov dword [esi + 0xc], edx
mov edi, edx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], 0
jmp 0x528864
mov ecx, dword [esi + 0x20]
mov eax, dword [ecx + 0x38]
mov dword [esi + 4], eax
mov eax, dword [ecx + 0x3c]
mov edi, dword [esi + 0xe4]
mov dword [esi + 0xc], edi
mov dword [esi + 8], eax
xor edi, eax
mov ebx, dword [esi + 0xe0]
mov dword [esi + 0x18], ebx
xor ebx, dword [esi + 4]
or ebx, edi
jne 0x529399
mov eax, dword [esi + 0xe8]
cmp eax, dword [ecx + 0x40]
mov eax, ecx
jl 0x528a69
jmp 0x528973
mov edi, dword [esi + 0xc]
mov dword [esi + 0x1c], edi
mov edi, dword [esi + 8]
mov dword [esi + 0x14], edi
jmp 0x528b45
inc ecx
mov ebx, dword [eax + 0x10]
xor edi, edi
cmp ecx, ebx
mov edx, ecx
mov dword [esi + 0x14], 0
cmove edx, edi
cmp ebx, edx
jbe 0x5292b6
mov edi, dword [eax + 0xc]
mov dword [esi + 8], edi
imul edx, edx, 0x70
mov edi, dword [esi + 8]
add edi, edx
mov dword [esi + 0x18], edi
mov edi, dword [esi + 8]
mov edi, dword [edi + edx + 0x44]
mov dword [esi + 0x24], edi
mov edi, dword [esi + 8]
mov edi, dword [edi + edx + 0x18]
mov dword [esi + 0xc], edi
mov edi, dword [esi + 8]
mov edi, dword [edi + edx + 0x1c]
mov edx, dword [esi + 0xc]
or edx, edi
mov edx, dword [esi + 0x18]
mov dword [esi + 0x1c], 0
jne 0x528b8d
mov edi, dword [edx + 0x60]
mov dword [esi + 0xc], edi
mov edx, dword [edx + 0x64]
mov dword [esi + 8], edx
mov edx, dword [esi + 0x20]
mov edi, dword [edx + 0x34]
mov edx, dword [esi + 8]
mov dword [esi + 0x10], edi
xor edx, edi
mov edi, dword [esi + 0x20]
mov edi, dword [edi + 0x30]
mov dword [esi + 0x18], edi
mov edi, dword [esi + 0xc]
xor edi, dword [esi + 0x18]
or edi, edx
je 0x528c03
mov edx, dword [esi + 0x18]
cmp dword [esi + 0xc], edx
mov edx, dword [esi + 0x10]
sbb dword [esi + 8], edx
jb 0x528809
jmp 0x528c34
mov dword [esi + 8], edi
cmp dword [edx + 0x28], 0
jne 0x528ade
mov edi, dword [edx + 0x20]
mov edx, dword [edx + 0x24]
mov dword [esi + 0x14], edx
mov dword [esi + 0x1c], edi
mov edx, edi
add edx, 1
mov edi, dword [esi + 0x14]
adc edi, 0x80000000
cmp edx, 2
sbb edi, 0
jb 0x52934d
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x1c]
mov dword [esi + 0xc], edx
mov edx, dword [esi + 8]
adc edx, dword [esi + 0x14]
mov dword [esi + 8], edx
seto byte [esi + 0x10]
sar edx, 0x1f
cmp byte [esi + 0x10], 0
lea edi, [edx - 0x80000000]
mov dword [esi + 0x14], edi
cmove edx, dword [esi + 0xc]
mov dword [esi + 0x1c], edx
cmp byte [esi + 0x10], 0
mov edx, dword [esi + 0x14]
cmove edx, dword [esi + 8]
mov dword [esi + 0x14], edx
mov edx, dword [esi + 0x18]
jmp 0x528b45
mov edx, dword [esi + 0x20]
mov edi, dword [edx + 0x38]
mov dword [esi + 8], edi
mov edi, dword [edx + 0x3c]
mov edx, dword [esi + 0x14]
mov dword [esi + 0xc], edi
xor edx, edi
mov edi, dword [esi + 0x1c]
xor edi, dword [esi + 8]
or edi, edx
jne 0x5293aa
mov edx, dword [esi + 0x24]
mov edi, dword [esi + 0x20]
cmp edx, dword [edi + 0x40]
jl 0x528809
xor edx, edx
dec edx
mov dword [esi + 0x10], 0xffffff
mov dword [esi + 0x14], 0
mov dword [esi + 0xc], edx
mov edi, edx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], 0
jmp 0x528861
mov edi, dword [esi + 0x20]
mov eax, dword [edi + 8]
lea ecx, [esi + 0x48]
mov dword [ecx], eax
push ecx
call fcn.004ffdf0
add esp, 4
mov eax, dword [edi + 4]
mov dword [esi + 0x30], eax
mov eax, dword [eax + 0x10]
mov ecx, eax
shr ecx, 1
add eax, ecx
add eax, 2
mov dword [esi + 0x28], eax
push 0x18
call fcn.00564055
add esp, 4
mov edi, eax
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
imul eax, dword [esi + 0x28], 0x70
mov dword [esi + 0x3c], eax
push eax
call fcn.00565a15
add esp, 4
mov ecx, eax
mov dword [esi + 0x38], eax
push dword [esi + 0x3c]
xor eax, eax
push eax
push ecx
call fcn.00568ad0
add esp, 0xc
mov eax, dword [esi + 0x38]
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x28]
mov dword [edi + 0x10], eax
xor ecx, ecx
mov dword [edi + 0x14], ecx
cmp eax, 0x2492492
jae 0x528f82
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x14]
mov dword [eax + 0x14], edi
test ecx, ecx
jne 0x52930b
mov ecx, dword [esi + 0x20]
mov eax, dword [ecx + 4]
mov edx, dword [eax + 0x14]
mov dword [ecx + 4], edx
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x10]
inc eax
xor edi, edi
jmp 0x528191
lea ecx, [esi + 0xd8]
push edi
call fcn.004ff390
mov ecx, dword [esi + 4]
jmp 0x528256
mov edx, dword [esi + 0xe0]
mov dword [esi + 0x34], edx
jmp 0x5284fd
push 0x18
call fcn.00564055
add esp, 4
mov edi, eax
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov eax, 0x1c0
push eax
call fcn.00565a15
add esp, 4
mov ecx, eax
mov dword [esi + 0x28], eax
mov eax, 0x1c0
push eax
xor eax, eax
push eax
push ecx
call fcn.00568ad0
add esp, 0xc
mov eax, dword [esi + 0x28]
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], 4
mov dword [esi + 0x30], 0
xor eax, eax
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0x20]
mov dword [eax], edi
mov dword [esi + 0x28], edi
mov dword [eax + 4], edi
xor eax, eax
inc eax
mov ecx, 4
jmp 0x528179
push dword [esi + 0xe0]
call fcn.00564050
mov ecx, dword [esi + 4]
add esp, 4
jmp 0x52850e
mov edi, dword [eax + 8]
test edi, edi
jne 0x529320
cmp byte [ecx + 0xa4], 1
jne 0x52863e
mov edi, dword [eax + 8]
test edi, edi
jne 0x529339
mov ebx, dword [ecx + 0x5c]
call fcn.00440ab0
mov byte [esi + 8], al
mov eax, dword [ebx]
mov edi, dword [eax + 8]
mov ecx, edi
call dword [0x6401dc]
sub esp, 0x2c
movaps xmm0, xmmword [esi + 0x460]
movaps xmm1, xmmword [esi + 0x470]
movups xmmword [esp + 0x18], xmm1
movups xmmword [esp + 8], xmm0
movzx eax, byte [esi + 8]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
lea eax, [esi + 0x60]
mov dword [esp], eax
mov ecx, ebx
call edi
movdqu xmm0, xmmword [esi + 0x60]
movups xmm1, xmmword [esi + 0x70]
movaps xmmword [esi + 0x470], xmm1
movdqa xmmword [esi + 0x460], xmm0
mov eax, dword [esi + 4]
mov eax, dword [eax + 0xc]
jmp 0x52863e
mov eax, dword [edi]
mov ebx, dword [eax + 4]
cmp dword [eax + 8], 0x5b7be0
jne 0x528e4f
cmp ebx, 0x41d210
je 0x528e65
mov ecx, ebx
call dword [0x6401dc]
mov ecx, edi
push 1
call ebx
mov ecx, dword [esi + 4]
jmp 0x52826a
mov eax, dword [edi + 0xc]
test eax, eax
je 0x528e75
lock dec dword [eax]
je 0x528f0a
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x528e81
lock dec dword [ebx]
je 0x528e8c
push edi
call fcn.00564050
add esp, 4
jmp 0x528e5d
lea ecx, [ebx + 8]
call fcn.0052e110
push ebx
call fcn.00564050
add esp, 4
jmp 0x528e81
mov eax, dword [edi]
mov ecx, dword [eax + 4]
cmp dword [eax + 8], 0x5b7be0
jne 0x528eb5
cmp ecx, 0x41d210
je 0x528eca
mov dword [esi + 0xc], ecx
call dword [0x6401dc]
mov ecx, edi
push 1
call dword [esi + 0xc]
jmp 0x528245
mov eax, dword [edi + 0xc]
test eax, eax
je 0x528ed6
lock dec dword [eax]
je 0x528f18
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x528ee4
mov eax, ecx
lock dec dword [ecx]
je 0x528ef2
push edi
call fcn.00564050
add esp, 4
jmp 0x528245
mov dword [esi + 0xc], eax
lea ecx, [eax + 8]
call fcn.0052e110
push dword [esi + 0xc]
call fcn.00564050
add esp, 4
jmp 0x528ee4
push eax
call fcn.00564050
add esp, 4
jmp 0x528e75
push eax
call fcn.00564050
add esp, 4
jmp 0x528ed6
push str....._third_partylibc_srcinclude_vector:618:_assertion__empty___failed:_front___called_on_an_empty_vector_n
push 0x624e92
call fcn.005912b0
push str....._third_partylibc_srcincludeoptional:800:_assertion_this__has_value___failed:_optional_operator_called_on_a_disengaged_value_n
push 0x624e92
call fcn.005912b0
int3
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624e92
call fcn.005912b0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x528f85
mov eax, dword [esi + 4]
mov ebx, dword [eax + 0x6c]
mov eax, dword [eax + 0x70]
jmp 0x527ee6
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x527eca
int3
int3
int3
int3
int3
int3
mov eax, dword [esi + 4]
dec dword [eax + 0x78]
jmp 0x528049
call fcn.005911b0
jmp 0x528973
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528030
int3
movq xmm0, qword [esi + 0x60]
movq qword [ecx], xmm0
jmp 0x527fbe
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
push 0x624e92
call fcn.005912b0
lea ecx, [esi + 0xd8]
call fcn.004febd0
mov eax, dword [esi + 0x20]
jmp 0x5287c3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x5293c1
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0xc]
jmp 0x528634
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x527e7f
int3
mov edx, dword [ebx + 0x24]
mov edi, dword [ebx + 0x20]
mov dword [esi + 8], edi
add edi, 1
mov dword [esi + 0xc], edi
mov edi, edx
adc edi, 0x80000000
cmp dword [esi + 0xc], 2
sbb edi, 0
mov edi, dword [ebx + 0x18]
mov ebx, dword [ebx + 0x1c]
jae 0x52905e
xor edi, dword [esi + 8]
xor ebx, edx
or ebx, edi
je 0x528f88
mov edi, 0x80000000
xor ebx, ebx
inc ebx
shr edx, 0x1f
not edx
add edx, ebx
adc edi, 0xffffffff
jmp 0x527fdd
sub edi, dword [esi + 8]
mov dword [esi + 0xc], edi
sbb ebx, edx
seto byte [esi + 8]
mov edx, ebx
sar edx, 0x1f
cmp byte [esi + 8], 0
lea edi, [edx - 0x80000000]
cmove edx, dword [esi + 0xc]
cmp byte [esi + 8], 0
cmove edi, ebx
jmp 0x527fdd
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
je 0x528681
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x5293c4
mov edx, dword [esi + 4]
mov eax, dword [edx + 0xc]
jmp 0x5286f2
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528552
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528596
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x5285b0
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [esi + 4]
cmp edi, eax
je 0x528757
int3
call fcn.00562590
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 8]
cmp al, byte [edx + 0x35]
mov edx, 0
setbe dl
jmp 0x5285bc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x52857b
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x5285e2
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x52840f
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x52844b
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528465
int3
call fcn.00562590
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 8]
cmp al, byte [edx + 0x35]
mov edx, 0
setbe dl
jmp 0x528471
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528434
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x5285e2
int3
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:66:_assertion___loc___nullptr_failed:_null_pointer_given_to_destroy_at_n
push 0x624e92
call fcn.005912b0
mov ecx, dword [0x64b6c8]
mov dword [esi + 8], ecx
mov eax, dword [0x64b6cc]
mov dword [esi + 0xc], eax
push eax
push ecx
mov dword [esi + 0x18], edi
push edi
push edx
mov dword [esi + 0x10], edx
call fcn.005877d0
mov dword [esi + 0x24], edx
mov edi, eax
mov edx, dword [esi + 8]
mul edx
mov dword [esi + 0x1c], eax
mov eax, edi
mov ecx, edi
imul ecx, dword [esi + 0xc]
add edx, ecx
mov ecx, dword [esi + 0x24]
imul edi, ecx, 0xf4240
mov dword [esi + 0x14], edi
imul ecx, dword [esi + 8]
add ecx, edx
mov edx, ecx
mov edi, dword [esi + 0x10]
sub edi, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
sbb ecx, edx
mov edx, 0xf4240
mul edx
mov dword [esi + 0x18], eax
add edx, dword [esi + 0x14]
mov dword [esi + 0x10], edx
mov eax, edi
mov edx, 0xf4240
mul edx
imul ecx, ecx, 0xf4240
add edx, ecx
push dword [esi + 0xc]
push dword [esi + 8]
push edx
push eax
call fcn.005877d0
add eax, dword [esi + 0x18]
adc edx, dword [esi + 0x10]
jmp 0x527f8d
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x52857b
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x5285e2
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528434
int3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x5285e2
int3
int3
int3
push str....._third_partylibc_srcincludeoptional:785:_assertion_this__has_value___failed:_optional_operator___called_on_a_disengaged_value_n
push 0x624e92
call fcn.005912b0
xor edi, edi
inc edi
mov ebx, edx
add ebx, edi
mov edi, eax
adc edi, 0x80000000
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], 0
xor edi, edi
inc edi
cmp edi, ebx
mov edi, dword [esi + 0x14]
sbb edi, dword [esi + 0x10]
setb byte [esi + 0x10]
mov ebx, dword [esi + 0xc]
xor edx, ebx
mov edi, dword [esi + 8]
xor eax, edi
or eax, edx
sete al
or al, byte [esi + 0x10]
jne 0x528844
int3
mov edi, ecx
call fcn.00515f90
push edi
call fcn.00564050
add esp, 4
jmp 0x528ce9
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
jne 0x5293c7
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0xc]
jmp 0x528db2
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [esi + 4]
cmp edi, eax
je 0x528dca
int3
xor edx, edx
inc edx
mov edi, dword [esi + 0xc]
add edi, edx
mov dword [esi + 0x2c], edi
mov edx, dword [esi + 8]
mov dword [esi + 0x10], edx
adc dword [esi + 0x10], 0x80000000
mov dword [esi + 0x28], 0
xor edi, edi
inc edi
cmp edi, dword [esi + 0x2c]
mov edi, dword [esi + 0x28]
sbb edi, dword [esi + 0x10]
setb byte [esi + 0x10]
mov edi, dword [esi + 0xc]
xor edi, dword [esi + 0x1c]
xor edx, dword [esi + 0x14]
or edx, edi
sete dh
or dh, byte [esi + 0x10]
mov edx, dword [esi + 0x18]
jne 0x528b45
int3
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 4]
mov eax, dword [esi + 0xc]
sbb eax, dword [esi + 8]
jmp 0x528ad5
mov edx, dword [esi + 8]
cmp dword [esi + 0x1c], edx
mov edx, dword [esi + 0xc]
sbb dword [esi + 0x14], edx
jl 0x528809
jmp 0x528c34
int3
int3
int3