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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x170
mov esi, esp
mov dword [esi + 0x158], ebp
mov dword [esi + 0x15c], esp
mov dword [esi + 0x168], 0xffffffff
mov dword [esi + 0x164], 0x704320
unpcklps xmm0, xmm1
movaps xmm5, xmmword [0x726570]
xorps xmm1, xmm1
mov edi, edx
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
mov dword [esi + 0xec], ecx
mov eax, dword fs:[0]
mulps xmm0, xmmword [0x7255f0]
mov dword [esi + 0x4c], edi
movaps xmm4, xmm5
mov dword [esi + 0x160], eax
lea eax, [esi + 0x160]
addps xmm0, xmmword [0x726560]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, dword [edi]
maxps xmm1, xmm0
cmpordps xmm0, xmm0
movsd xmm3, qword [eax]
movsd xmm2, qword [eax + 8]
mov eax, dword [ebp + 0x20]
andps xmm0, xmm1
minps xmm4, xmm0
cmpunordps xmm0, xmm0
mov ecx, edi
andps xmm5, xmm0
andnps xmm0, xmm4
orps xmm0, xmm5
movsd xmm6, qword [eax]
movsd xmm4, qword [eax + 8]
lea eax, [esi + 0x68]
subps xmm6, xmm0
addps xmm4, xmm0
movaps xmm5, xmm6
maxps xmm6, xmm3
cmpunordps xmm3, xmm3
movaps xmm0, xmm4
minps xmm4, xmm2
cmpunordps xmm2, xmm2
andps xmm5, xmm3
andnps xmm3, xmm6
andps xmm0, xmm2
andnps xmm2, xmm4
orps xmm3, xmm5
orps xmm2, xmm0
movaps xmm0, xmm3
movaps xmmword [esi + 0xd0], xmm3
movaps xmmword [esi + 0xc0], xmm2
movlhps xmm0, xmm2
movaps xmmword [esi + 0x50], xmm0
movups xmmword [esi + 0x68], xmm0
push eax
mov eax, dword [ebp + 0x14]
push eax
push dword [ebp + 0x10]
call fcn.0051b510
add esp, 0xc
movaps xmm0, xmmword [esi + 0xd0]
mov ecx, eax
cmpnltps xmm0, xmmword [esi + 0xc0]
unpcklps xmm0, xmm0
movmskpd eax, xmm0
test al, 1
jne 0x519f85
shr al, 1
jne 0x519f85
mov eax, dword [ebp + 0x24]
movzx eax, ax
test eax, eax
je 0x519f85
mov byte [esi + 0x40], cl
lea ecx, [edi + 8]
mov eax, dword [edi + 8]
mov dword [esi + 0xc], ecx
test al, 8
jne 0x519f8a
mov edx, eax
add edx, 0x10
jb 0x519f8a
lock cmpxchg dword [ecx], edx
jne 0x519f8a
mov dword [esi + 0x10], edi
mov edi, dword [edi + 0x1fc]
lock inc dword [edi]
jle 0x51b45d
mov eax, 0xfffffff0
lock xadd dword [ecx], eax
and eax, 0xfffffff2
cmp eax, 0x12
je 0x519fa5
movzx ebx, byte [edi + 0x218]
lock dec dword [edi]
jne 0x519fb9
mov ecx, edi
call fcn.00562ee0
mov ecx, dword [esi + 0xc]
mov edi, dword [esi + 0x10]
test bl, bl
jne 0x519fc4
jmp 0x51a15e
jmp 0x51a9eb
call fcn.00719890
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x10], edi
mov edi, dword [edi + 0x1fc]
lock inc dword [edi]
jg 0x519f52
jmp 0x51b45d
call fcn.00719c10
mov ecx, dword [esi + 0xc]
movzx ebx, byte [edi + 0x218]
lock dec dword [edi]
je 0x519f6f
mov edi, dword [esi + 0x10]
test bl, bl
je 0x51a15e
mov eax, dword [ecx]
test al, 8
jne 0x51a686
mov edx, eax
add edx, 0x10
jb 0x51a686
lock cmpxchg dword [ecx], edx
jne 0x51a686
movq xmm0, qword [edi + 0x348]
movq xmm1, qword [edi + 0x350]
mov eax, 0xfffffff0
movq qword [esi + 0x70], xmm1
movq qword [esi + 0x68], xmm0
lock xadd dword [edi + 8], eax
and eax, 0xfffffff2
cmp eax, 0x12
je 0x51a6b6
lock inc dword [edi]
jle 0x51b45d
movsd xmm0, qword [esi + 0x68]
movsd xmm1, qword [esi + 0x70]
lea eax, [esi + 0x128]
lea edx, [esi + 0x68]
mov ecx, edi
mov dword [esi + 0x7c], 0
mov dword [esi + 0x78], 0
mov dword [esi + 0x84], 0
mov dword [esi + 0x80], 0
mov dword [esi + 0x168], 2
movsd qword [esi + 0x138], xmm0
movaps xmm0, xmmword [esi + 0x50]
movsd qword [esi + 0x140], xmm1
mov dword [esi + 0x148], edi
mov dword [esi + 0x12c], 0xdf999a5c
mov dword [esi + 0x128], 0xae3ad0e9
mov byte [esi + 0x130], 5
mov byte [esi + 0x14c], 0
movups xmmword [esi + 0xf0], xmm0
mov dword [esi + 0x104], 0
mov dword [esi + 0x100], 0
mov dword [esi + 0x10c], 0
mov dword [esi + 0x108], 0
mov dword [esi + 0x110], 0x3f800000
mov dword [esi + 0x114], 0x3f3f
mov dword [esi + 0x118], 0x1010
mov byte [esi + 0x11c], 7
movsd xmm1, qword [esi + 0x110]
movsd xmm0, qword [esi + 0x118]
movsd xmm2, qword [esi + 0xf0]
movsd qword [esi + 0x88], xmm1
movsd xmm1, qword [esi + 0xf8]
movsd qword [esi + 0x90], xmm0
movsd qword [esi + 0x68], xmm2
movsd qword [esi + 0x70], xmm1
mov dword [esi + 0x98], eax
mov dword [esi + 0xa0], eax
call fcn.005102a0
mov eax, dword [esi + 0x148]
lock dec dword [eax]
jne 0x51a158
mov ecx, dword [esi + 0x148]
mov dword [esi + 0x168], 0xffffffff
call fcn.00562540
mov edi, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x48], 0
mov edx, 8
xor eax, eax
lock cmpxchg dword [ecx], edx
jne 0x51a69f
mov eax, dword [ebp + 0x14]
mov ecx, edi
mov edi, dword [edi + 0x538]
mov edx, 0x2df45158
pcmpeqd xmm1, xmm1
mov ecx, dword [ecx + 0x53c]
movzx eax, al
xor edi, eax
mov dword [esi + 0x64], eax
mov eax, edi
mul edx
mov dword [esi + 0x20], eax
imul eax, edi, 0x2d7f954c
bswap edi
add eax, edx
imul edx, ecx, 0x2df45158
bswap ecx
add edx, eax
mov eax, ecx
imul ecx, ecx, 0xa7ae0bd2
mov dword [esi + 0x14], edx
mov edx, 0xb36a80d2
mul edx
mov ebx, eax
add ecx, edx
imul eax, edi, 0xb36a80d2
mov edx, 0x2df45158
add eax, ecx
mov ecx, dword [esi + 0x20]
bswap ebx
xor ebx, dword [ebp + 0x10]
bswap eax
xor ecx, dword [ebp + 0xc]
xor ebx, dword [esi + 0x14]
xor ecx, eax
mov eax, ecx
imul edi, ebx, 0x2df45158
bswap ebx
mul edx
mov dword [esi + 0x14], eax
imul eax, ecx, 0x2d7f954c
bswap ecx
add eax, edx
mov edx, 0xb36a80d2
imul ecx, ecx, 0xb36a80d2
add edi, eax
mov eax, ebx
mul edx
mov dword [esi + 0x20], eax
imul eax, ebx, 0xa7ae0bd2
add eax, edx
add ecx, eax
mov eax, dword [esi + 0x20]
bswap ecx
xor ecx, dword [esi + 0x14]
bswap eax
xor eax, edi
mov edi, ecx
mov dword [esi + 0x14], ecx
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x20], eax
mov eax, edi
bswap edi
mov dword [esi + 0x44], edi
mov edi, dword [ecx + 0x540]
mov ebx, dword [ecx + 0x544]
mov ecx, edi
mov dword [esi + 0x3c], ebx
bswap ebx
not edi
bswap ecx
mul ebx
imul ecx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x20]
mov dword [esi + 0x18], edx
add dword [esi + 0x18], ecx
mov ecx, dword [esi + 0x3c]
imul ebx, eax
bswap eax
mov dword [esi + 0x20], eax
mul edi
imul edi, dword [esi + 0x44]
add ebx, dword [esi + 0x18]
bswap eax
not ecx
imul ecx, dword [esi + 0x20]
xor eax, ebx
mov ebx, dword [esi + 0x10]
add edx, ecx
mov ecx, dword [esi + 0x14]
add edi, edx
bswap edi
xor edi, dword [esi + 0x1c]
test cl, 0x20
mov edx, edi
cmove edi, eax
cmovne edx, eax
lea eax, [ebx + 0x528]
shld edx, edi, cl
lea ecx, [ebx + 0x538]
mov dword [esi + 0x44], eax
mov edi, dword [ebx + 0x52c]
mov eax, edx
mov dword [esi + 0x124], ecx
mov ecx, dword [ebx + 0x528]
mov dword [esi + 0x3c], edx
shr eax, 0x19
movd xmm0, eax
mov dword [esi + 0x1c], eax
mov eax, ebx
punpcklbw xmm0, xmm0
mov dword [esi + 0x20], edi
pshuflw xmm0, xmm0, 0
lea eax, [ecx - 0x20]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x14], eax
pshufd xmm0, xmm0, 0
mov eax, edx
and eax, edi
movdqa xmm3, xmm0
movdqu xmm2, xmmword [ecx + eax]
pcmpeqb xmm3, xmm2
pmovmskb ecx, xmm3
nop word cs:[eax + eax]
nop dword [eax]
test cx, cx
je 0x51a350
mov edx, ecx
mov ebx, dword [esi + 0x14]
tzcnt edi, edx
lea ecx, [edx - 1]
add edi, eax
and ecx, edx
and edi, dword [esi + 0x20]
mov edx, edi
shl edx, 5
sub ebx, edx
mov edx, dword [ebp + 0x14]
cmp byte [ebx + 8], dl
jne 0x51a310
mov edx, dword [ebx]
mov ebx, dword [ebx + 4]
xor edx, dword [ebp + 0xc]
xor ebx, dword [ebp + 0x10]
or ebx, edx
jne 0x51a310
jmp 0x51a378
pcmpeqb xmm2, xmm1
pmovmskb ecx, xmm2
test ecx, ecx
jne 0x51a6c9
mov ecx, dword [esi + 0x48]
mov edi, dword [esi + 0x20]
lea eax, [eax + ecx + 0x10]
add ecx, 0x10
mov dword [esi + 0x48], ecx
mov ecx, dword [esi + 0x18]
jmp 0x51a2ef
mov eax, dword [esi + 0x18]
neg edi
shl edi, 5
add eax, edi
mov edx, dword [eax - 8]
cmp edx, dword [eax - 0xc]
jne 0x51a3a5
lea ecx, [eax - 0x10]
mov dword [esi + 0x168], 1
mov dword [esi + 0x20], eax
call fcn.00529650
mov eax, dword [esi + 0x20]
mov edx, dword [eax - 8]
mov edi, eax
lea ecx, [edx + edx*2]
mov ebx, dword [ebp + 0x18]
mov eax, dword [eax - 0x10]
mov edx, dword [ebp + 0x1c]
movaps xmm0, xmmword [esi + 0x50]
mov dword [eax + ecx*8 + 4], edx
mov dword [eax + ecx*8], ebx
movups xmmword [eax + ecx*8 + 8], xmm0
inc dword [edi - 8]
xor edx, edx
cmp byte [esi + 0x40], 0
je 0x51a5e2
mov eax, dword [esi + 0x10]
mov cl, 1
mov dword [esi + 0x50], ecx
mov ecx, dword [esi + 0xc]
cmp dword [eax + 0x2f4], 1
jne 0x51a67f
cmp dword [eax + 0x564], 0
mov edi, 0
je 0x51a7d5
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x64]
mov edx, 0x2df45158
pcmpeqd xmm2, xmm2
xor ecx, dword [eax + 0x568]
mov edi, eax
mov edi, dword [edi + 0x56c]
mov eax, ecx
mul edx
mov dword [esi + 0x20], eax
imul eax, ecx, 0x2d7f954c
bswap ecx
add eax, edx
imul edx, edi, 0x2df45158
bswap edi
add edx, eax
mov eax, edi
imul edi, edi, 0xa7ae0bd2
mov dword [esi + 0x14], edx
mov edx, 0xb36a80d2
mul edx
mov ebx, eax
imul eax, ecx, 0xb36a80d2
mov ecx, dword [esi + 0x20]
add edi, edx
mov edx, 0x2df45158
bswap ebx
add eax, edi
xor ebx, dword [ebp + 0x10]
bswap eax
xor ecx, dword [ebp + 0xc]
xor ebx, dword [esi + 0x14]
xor ecx, eax
mov eax, ecx
mov edi, ecx
mul edx
bswap edi
mov dword [esi + 0x14], eax
imul eax, ecx, 0x2d7f954c
imul ecx, ebx, 0x2df45158
bswap ebx
add eax, edx
add ecx, eax
mov eax, ebx
mov dword [esi + 0x50], ecx
mov ecx, 0xb36a80d2
mul ecx
imul ecx, ebx, 0xa7ae0bd2
mov dword [esi + 0x20], eax
add ecx, edx
imul eax, edi, 0xb36a80d2
add eax, ecx
mov ecx, dword [esi + 0x20]
bswap eax
xor eax, dword [esi + 0x14]
bswap ecx
xor ecx, dword [esi + 0x50]
mov dword [esi + 0x14], eax
mov dword [esi + 0x20], ecx
mov ecx, dword [esi + 0x10]
mov edi, dword [ecx + 0x570]
mov edx, dword [ecx + 0x574]
mov ecx, edi
mov dword [esi + 0x18], edx
bswap edx
not edi
bswap ecx
mov ebx, edx
imul ecx, eax
mul edx
mov dword [esi + 0x50], eax
add edx, ecx
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x20]
mov dword [esi + 0x18], 0
imul ebx, eax
bswap eax
not ecx
add ebx, edx
imul ecx, eax
mul edi
add edx, ecx
mov ecx, dword [esi + 0x14]
bswap eax
xor eax, ebx
mov ebx, dword [esi + 0x10]
bswap ecx
imul edi, ecx
mov ecx, dword [esi + 0x14]
movsd xmm0, qword [ebx + 0x2f8]
add edi, edx
mov edx, eax
bswap edi
xor edi, dword [esi + 0x50]
test cl, 0x20
movlhps xmm0, xmm0
cmovne edx, edi
cmovne edi, eax
shld edi, edx, cl
mov edx, dword [ebx + 0x558]
mov ecx, dword [ebx + 0x55c]
mov eax, edi
shr eax, 0x19
movd xmm1, eax
punpcklbw xmm1, xmm1
lea eax, [edx - 0x20]
mov dword [esi + 0x50], edx
mov dword [esi + 0x20], ecx
pshuflw xmm1, xmm1, 0
mov dword [esi + 0x14], eax
pshufd xmm1, xmm1, 0
and edi, ecx
movdqa xmm4, xmm1
movdqu xmm3, xmmword [edx + edi]
mov ecx, edi
pcmpeqb xmm4, xmm3
pmovmskb eax, xmm4
nop word cs:[eax + eax]
nop dword [eax + eax]
test ax, ax
je 0x51a5b8
tzcnt ebx, eax
mov edx, dword [esi + 0x14]
add ebx, ecx
and ebx, dword [esi + 0x20]
mov edi, ebx
shl edi, 5
sub edx, edi
lea edi, [eax - 1]
and edi, eax
mov eax, dword [ebp + 0x14]
cmp byte [edx + 8], al
mov eax, edi
jne 0x51a580
mov edi, dword [edx]
mov edx, dword [edx + 4]
xor edi, dword [ebp + 0xc]
xor edx, dword [ebp + 0x10]
or edx, edi
jne 0x51a580
jmp 0x51a5f3
pcmpeqb xmm3, xmm2
pmovmskb eax, xmm3
test eax, eax
jne 0x51a7c4
mov eax, dword [esi + 0x18]
mov edi, ecx
mov edx, dword [esi + 0x50]
lea edi, [ecx + eax + 0x10]
mov ecx, dword [esi + 0x20]
add eax, 0x10
mov dword [esi + 0x18], eax
jmp 0x51a55c
mov ecx, dword [esi + 0xc]
xor edi, edi
mov dword [esi + 0x50], 0
jmp 0x51a7d5
mov edx, dword [esi + 0x50]
neg ebx
xor edi, edi
shl ebx, 5
mov eax, dword [edx + ebx - 8]
lea ecx, [eax + eax*2]
shl eax, 3
shl ecx, 3
lea eax, [eax + eax*2]
add ecx, dword [edx + ebx - 0x10]
neg eax
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, dword [ebp + 0x18]
test eax, eax
je 0x51a693
mov edx, dword [ecx - 0x18]
xor edx, ebx
mov ebx, dword [ecx - 0x14]
xor ebx, dword [ebp + 0x1c]
or ebx, edx
je 0x51a7c6
movups xmm3, xmmword [ecx - 0x10]
movaps xmm1, xmm0
add ecx, 0xffffffe8
add eax, 0x18
movaps xmm2, xmm3
cmpleps xmm1, xmm3
cmpleps xmm2, xmm0
shufps xmm2, xmm1, 0xe4
pslld xmm2, 0x1f
movmskps edx, xmm2
cmp dl, 0xf
jne 0x51a620
mov eax, dword [esi + 0x10]
mov dword [esi + 0x50], 0
mov eax, dword [eax + 0x1fc]
movzx edi, byte [eax + 0x219]
jmp 0x51a7cd
xor edi, edi
jmp 0x51a7d5
call fcn.00719890
mov ecx, dword [esi + 0xc]
jmp 0x519fe3
movzx eax, byte [esi + 0x40]
mov dword [esi + 0x50], eax
jmp 0x51a7d0
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x168], 0xffffffff
call fcn.007188f0
jmp 0x51a176
call fcn.00719c10
lock inc dword [edi]
jg 0x51a01c
jmp 0x51b45d
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 0x18]
cmp dword [ecx + 0x530], 0
jne 0x51a702
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x124]
mov dword [esi + 0x168], 1
call fcn.0070e7c0
mov ecx, dword [esi + 0x10]
mov ebx, dword [ecx + 0x528]
mov eax, dword [ecx + 0x52c]
mov dword [esi + 0x20], eax
mov edx, dword [esi + 0x3c]
and edx, dword [esi + 0x20]
movdqu xmm0, xmmword [ebx + edx]
pmovmskb eax, xmm0
test eax, eax
jne 0x51a731
mov edi, dword [esi + 0x20]
mov ecx, 0x10
add edx, ecx
add ecx, 0x10
and edx, edi
movdqu xmm0, xmmword [ebx + edx]
pmovmskb eax, xmm0
test eax, eax
je 0x51a71d
tzcnt eax, eax
add eax, edx
and eax, dword [esi + 0x20]
movzx ecx, byte [ebx + eax]
test cl, cl
js 0x51a752
movdqa xmm0, xmmword [ebx]
pmovmskb eax, xmm0
tzcnt eax, eax
movzx ecx, byte [ebx + eax]
mov byte [esi + 0x14], cl
lea ecx, [eax - 0x10]
mov edi, dword [esi + 0x1c]
and ecx, dword [esi + 0x20]
mov edx, edi
mov edi, dword [esi + 0x10]
mov byte [ebx + eax], dl
mov byte [ecx + ebx + 0x10], dl
movzx ecx, byte [esi + 0x14]
shl eax, 5
mov edx, ebx
sub edx, eax
neg eax
and cl, 1
movzx ecx, cl
sub dword [edi + 0x530], ecx
mov ecx, dword [ebp + 0x10]
mov dword [edx - 0x1c], ecx
mov ecx, dword [ebp + 0xc]
mov dword [edx - 0x20], ecx
mov ecx, dword [ebp + 0x14]
mov byte [ebx + eax - 0x18], cl
mov dword [edx - 0x10], 8
mov dword [edx - 0xc], 0
mov dword [edx - 8], 0
inc dword [edi + 0x534]
mov eax, edx
mov edx, dword [eax - 8]
cmp edx, dword [eax - 0xc]
je 0x51a38a
jmp 0x51a3a5
xor edi, edi
movzx eax, byte [esi + 0x40]
mov dword [esi + 0x50], eax
mov ebx, dword [ebp + 0x18]
mov ecx, dword [esi + 0xc]
xor edx, edx
mov eax, 8
lock cmpxchg dword [ecx], edx
jne 0x51b3e3
test edi, edi
je 0x51a9e8
mov eax, dword [ecx]
movaps xmmword [esi + 0x20], xmm3
test al, 8
jne 0x51b378
mov edx, eax
add edx, 0x10
jb 0x51b378
lock cmpxchg dword [ecx], edx
jne 0x51b378
mov edi, dword [esi + 0x10]
mov eax, 0xfffffff0
movsd xmm0, qword [edi + 0x348]
movsd xmm1, qword [edi + 0x350]
movsd qword [esi + 0xf8], xmm1
movsd qword [esi + 0xf0], xmm0
lock xadd dword [edi + 8], eax
and eax, 0xfffffff2
cmp eax, 0x12
je 0x51b423
lock inc dword [edi]
jle 0x51b45d
movsd xmm1, qword [esi + 0xf8]
movsd xmm0, qword [esi + 0xf0]
movaps xmm2, xmmword [esi + 0xd0]
mov dword [esi + 0x168], 3
lea ecx, [esi + 0x68]
lea edx, [esi + 0xf0]
movsd qword [esi + 0x80], xmm1
movaps xmm1, xmmword [esi + 0xc0]
movsd qword [esi + 0x78], xmm0
mov dword [esi + 0x88], edi
movlps qword [esi + 0xf0], xmm2
mov dword [esi + 0x6c], 0xdf999a5c
mov dword [esi + 0x68], 0xae3ad0e9
mov byte [esi + 0x70], 5
mov byte [esi + 0x8c], 0
movlps qword [esi + 0xf8], xmm1
push 7
push 0x74097e
push 0xff00ff00
call fcn.00560cb0
add esp, 0xc
mov eax, dword [esi + 0x88]
lock dec dword [eax]
jne 0x51a8f0
mov ecx, dword [esi + 0x88]
mov dword [esi + 0x168], 0xffffffff
call fcn.00562540
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
lea edi, [eax + 0x348]
mov eax, dword [ecx]
movdqa xmm2, xmmword [esi + 0x20]
test al, 8
jne 0x51b38f
mov edx, eax
add edx, 0x10
jb 0x51b38f
lock cmpxchg dword [ecx], edx
jne 0x51b38f
movsd xmm0, qword [edi]
movsd xmm1, qword [edi + 8]
mov eax, 0xfffffff0
movsd qword [esi + 0xf8], xmm1
movsd qword [esi + 0xf0], xmm0
lock xadd dword [ecx], eax
and eax, 0xfffffff2
cmp eax, 0x12
je 0x51b43d
mov eax, dword [esi + 0x10]
lock inc dword [eax]
jle 0x51b45d
movsd xmm0, qword [esi + 0xf0]
movq xmm1, qword [esi + 0xf8]
movdqu xmmword [esi + 0xf0], xmm2
mov dword [esi + 0x168], 4
lea ecx, [esi + 0x68]
lea edx, [esi + 0xf0]
movq qword [esi + 0x80], xmm1
movsd qword [esi + 0x78], xmm0
mov dword [esi + 0x88], eax
mov dword [esi + 0x6c], 0xdf999a5c
mov dword [esi + 0x68], 0xae3ad0e9
mov byte [esi + 0x70], 5
mov byte [esi + 0x8c], 0
push 6
push 0x740985
push 0xffe6d8ad
call fcn.00560cb0
add esp, 0xc
mov eax, dword [esi + 0x88]
mov ebx, dword [ebp + 0x18]
lock dec dword [eax]
jne 0x51a9e8
mov ecx, dword [esi + 0x88]
mov dword [esi + 0x168], 0xffffffff
call fcn.00562540
mov ecx, dword [esi + 0x50]
xor eax, eax
mov dword [esi + 0x50], ecx
test cl, cl
mov ecx, dword [ebp + 0x20]
movq xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
movzx ecx, byte [ebp + 0x28]
cmove ecx, eax
mov eax, dword [esi + 0x4c]
movq qword [esi + 0x130], xmm1
movq qword [esi + 0x128], xmm0
mov dword [esi + 0x14], ecx
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
lea edi, [ecx + 8]
mov dword [esi + 0x10], ecx
test al, 8
jne 0x51ab14
mov ecx, eax
add ecx, 0x10
jb 0x51ab14
lock cmpxchg dword [edi], ecx
jne 0x51ab14
mov eax, dword [esi + 0x10]
mov dword [esi + 0xd0], edi
cmp dword [eax + 0x3fc], 0
je 0x51ab3b
mov edx, ebx
mov ecx, dword [eax + 0x3f4]
mov edi, dword [eax + 0x3f0]
pcmpeqd xmm1, xmm1
mov dword [esi + 0xc], 0
shr edx, 0x19
movd xmm0, edx
mov edx, ebx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
mov dword [esi + 0x20], ecx
pshufd xmm0, xmm0, 0
and edx, ecx
movdqa xmm3, xmm0
mov ecx, edi
movdqu xmm2, xmmword [edi + edx]
pcmpeqb xmm3, xmm2
pmovmskb edi, xmm3
nop word cs:[eax + eax]
nop dword [eax + eax]
test di, di
je 0x51aae0
tzcnt ebx, edi
mov eax, ecx
add ebx, edx
and ebx, dword [esi + 0x20]
shl ebx, 3
sub eax, ebx
lea ebx, [edi - 1]
and ebx, edi
mov edi, dword [eax - 4]
mov eax, dword [eax - 8]
xor edi, dword [ebp + 0x1c]
xor eax, dword [ebp + 0x18]
or eax, edi
mov edi, ebx
jne 0x51aab0
jmp 0x51ab04
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
test eax, eax
jne 0x51b417
mov eax, dword [esi + 0xc]
mov edi, ecx
mov ecx, dword [esi + 0x20]
lea edx, [edx + eax + 0x10]
add eax, 0x10
mov dword [esi + 0xc], eax
jmp 0x51aa8c
mov al, 1
mov dword [esi + 0xc], eax
mov ebx, dword [ebp + 0x18]
mov edi, dword [esi + 0xd0]
jmp 0x51ab42
mov ecx, edi
mov dword [esi + 0x168], 0xffffffff
call fcn.00719890
mov eax, dword [esi + 0x10]
mov dword [esi + 0xd0], edi
cmp dword [eax + 0x3fc], 0
jne 0x51aa59
mov dword [esi + 0xc], 0
mov eax, 0xfffffff0
mov ecx, dword [ebp + 0x24]
lock xadd dword [edi], eax
and eax, 0xfffffff2
cmp eax, 0x12
je 0x51b353
mov eax, dword [esi + 0x10]
lock inc dword [eax]
jle 0x51b45d
mov byte [esi + 0xaa], 0
mov dword [esi + 0xa6], 0
mov dword [esi + 0xab], 0
mov byte [esi + 0xaf], 0
mov dword [esi + 0xb0], 0
mov byte [esi + 0xb4], 0
mov dword [esi + 0x9c], eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
movsd xmm0, qword [esi + 0x128]
movsd xmm1, qword [esi + 0x130]
mov dword [esi + 0x68], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x6c], eax
mov byte [esi + 0x70], dl
mov edx, dword [ebp + 0x1c]
mov eax, ecx
mov dword [esi + 0x78], ebx
shr eax, 0x10
mov dword [esi + 0x7c], edx
movsd qword [esi + 0x80], xmm0
movsd qword [esi + 0x88], xmm1
mov byte [esi + 0xa0], cl
mov byte [esi + 0xa1], ch
movzx ecx, byte [ebp + 0x28]
mov byte [esi + 0xa2], al
mov byte [esi + 0xa3], cl
mov ecx, dword [esi + 0x14]
mov byte [esi + 0xa4], cl
mov ecx, dword [esi + 0xc]
mov byte [esi + 0xa5], cl
mov ecx, dword [ebp + 0x14]
mov dword [esi + 0x90], 0
mov dword [esi + 0xb5], 0
cmp cl, 4
je 0x51ad44
cmp byte [ebp + 0x28], 0
je 0x51ad44
test al, al
je 0x51ad44
movsd xmm0, qword [esi + 0x128]
movsd xmm1, qword [esi + 0x130]
mov ecx, dword [esi + 0x4c]
mov dword [esi + 0x168], 0
lea eax, [esi + 0xf0]
mov edx, ebx
movsd qword [esi + 0xf8], xmm1
movsd qword [esi + 0xf0], xmm0
push 6
push 0x74098b
push eax
push dword [ebp + 0x1c]
call fcn.00518fa0
mov ecx, dword [esi + 0xd0]
add esp, 0x10
mov eax, dword [ecx]
test al, 8
jne 0x51aca0
mov edx, eax
add edx, 0x10
jb 0x51aca0
lock cmpxchg dword [ecx], edx
je 0x51acab
call fcn.00719890
mov ecx, dword [esi + 0xd0]
mov ebx, dword [esi + 0x10]
mov eax, dword [ebx + 0x314]
mov edi, dword [ebx + 0x30c]
shl eax, 3
lea eax, [eax + eax*2]
test eax, eax
je 0x51adbc
mov edx, edi
add eax, 0xffffffe8
add edi, 0x18
cmp byte [edx], 2
jne 0x51acc0
cmp byte [edx + 0x10], 2
je 0x51acc0
xor eax, eax
cmp byte [esi + 0xa4], 0
jne 0x51adbe
cmp dword [ebx + 0x2f4], 1
jne 0x51adbe
movss xmm0, dword [ebx + 0x2f8]
mov al, 1
ucomiss xmm0, dword [esi + 0x80]
jb 0x51adbe
movss xmm1, dword [esi + 0x88]
ucomiss xmm1, xmm0
jb 0x51adbe
movss xmm0, dword [ebx + 0x2fc]
ucomiss xmm0, dword [esi + 0x84]
jb 0x51adbe
movss xmm1, dword [esi + 0x8c]
ucomiss xmm1, xmm0
setb al
jmp 0x51adbe
mov ecx, 8
xor eax, eax
lock cmpxchg dword [edi], ecx
je 0x51ad68
mov ecx, edi
mov dword [esi + 0x168], 0
call fcn.007188f0
mov edi, dword [esi + 0xd0]
mov edx, dword [esi + 0x10]
mov eax, dword [edx + 0x30]
or eax, dword [edx + 0x34]
je 0x51ad95
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
xor ecx, dword [edx + 0x38]
xor eax, dword [edx + 0x3c]
or eax, ecx
jne 0x51ad95
mov dword [edx + 0x34], 0
mov dword [edx + 0x30], 0
mov byte [edx + 0x71], 0
xor ecx, ecx
mov eax, 8
lock cmpxchg dword [edi], ecx
je 0x51b32b
mov ecx, edi
mov dword [esi + 0x168], 0
call fcn.00719150
jmp 0x51b32b
xor eax, eax
mov dword [esi + 0x44], eax
mov edx, 0xfffffff0
lock xadd dword [ecx], edx
and edx, 0xfffffff2
cmp edx, 0x12
jne 0x51ade7
mov dword [esi + 0x168], 0
call fcn.00719c10
mov ecx, dword [esi + 0xd0]
mov edx, 8
xor eax, eax
lock cmpxchg dword [ecx], edx
je 0x51ae03
mov dword [esi + 0x168], 0
call fcn.007188f0
mov ecx, dword [esi + 0x10]
movzx eax, byte [ecx + 0x70]
mov ebx, ecx
mov byte [esi + 0x20], al
test al, al
mov eax, dword [ebp + 0x18]
je 0x51ae35
mov ecx, dword [ebx + 0x40]
or ecx, dword [ebx + 0x44]
je 0x51af16
mov edx, dword [ebx + 0x4c]
mov ecx, dword [ebx + 0x48]
xor edx, dword [ebp + 0x1c]
xor ecx, eax
or edx, ecx
jne 0x51af16
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebx + 0x34]
mov eax, dword [ebx + 0x3c]
mov edi, dword [ebx + 0x38]
mov dword [esi + 0xc0], ecx
or ecx, edx
movzx ecx, byte [ebx + 0x72]
mov dword [esi + 0x18], edx
je 0x51aeb7
mov edx, edi
mov byte [esi + 0xc], cl
mov ecx, edi
mov edi, eax
xor edx, dword [ebp + 0x18]
xor edi, dword [ebp + 0x1c]
or edi, edx
mov edi, ecx
movzx ecx, byte [esi + 0xc]
jne 0x51aeb7
movzx eax, byte [ebx + 0x71]
test cl, cl
je 0x51af4e
test al, al
jne 0x51af4e
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x24]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
mov byte [ebx + 0x70], 1
mov byte [ebx + 0x72], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], edx
jmp 0x51af7a
cmp byte [esi + 0x20], 0
mov edx, eax
mov dword [esi + 0x1c], edi
jne 0x51af72
mov eax, dword [esi + 0xc0]
or eax, dword [esi + 0x18]
jne 0x51af72
test cl, cl
mov eax, edx
mov ecx, dword [ebp + 0x24]
mov edx, dword [ebp + 0x18]
je 0x51af7a
mov eax, dword [ebp + 0x1c]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 1
mov dword [ebx + 0x38], edx
mov dword [esi + 0x18], 0
mov dword [esi + 0xc0], 1
mov dword [esi + 0x1c], edx
mov dword [ebx + 0x3c], eax
mov byte [ebx + 0x72], 0
jmp 0x51af7a
mov edi, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x24]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 1
mov dword [ebx + 0x38], eax
mov dword [esi + 0x18], 0
mov dword [esi + 0xc0], 1
mov dword [esi + 0x1c], eax
mov edx, eax
mov dword [ebx + 0x3c], edi
mov byte [ebx + 0x70], 0
mov eax, edi
jmp 0x51af7a
cmp byte [ebx + 0x73], 0
mov ecx, dword [ebp + 0x24]
je 0x51af67
test al, al
jne 0x51af67
movups xmm0, xmmword [ebx + 0x60]
movups xmmword [ebx + 0x50], xmm0
mov byte [ebx + 0x73], 0
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x1c], edx
jmp 0x51af7a
mov eax, edx
mov ecx, dword [ebp + 0x24]
mov edx, dword [ebp + 0x18]
mov dword [ebx + 0x64], 0
mov dword [ebx + 0x60], 1
mov dword [ebx + 0x68], edx
mov edx, dword [ebp + 0x1c]
test cl, cl
mov dword [esi + 0x3c], eax
mov dword [ebx + 0x6c], edx
je 0x51aff3
mov eax, dword [esi + 0xc0]
or eax, dword [esi + 0x18]
je 0x51b018
mov eax, dword [esi + 0x78]
mov ecx, dword [esi + 0x7c]
xor eax, dword [esi + 0x1c]
xor ecx, dword [esi + 0x3c]
or ecx, eax
jne 0x51b018
mov eax, dword [ebx + 0x368]
test eax, eax
je 0x51b018
mov ecx, dword [ebx + 0x360]
xor edx, edx
mov ebx, eax
mov dword [esi + 0x20], eax
lea edi, [ecx + 2]
jmp 0x51afd8
add edx, eax
add edi, 0x20
dec ebx
je 0x51b003
cmp byte [edi - 2], 4
mov eax, 0
jne 0x51afd0
cmp byte [edi], 0
je 0x51afd0
xor eax, eax
cmp byte [edi - 1], 8
sete al
jmp 0x51afd0
test ch, ch
jne 0x51b018
movzx ecx, byte [esi + 0xb7]
jmp 0x51b200
mov ebx, dword [esi + 0x10]
mov edi, dword [esi + 0x20]
test edx, edx
je 0x51b3ab
mov byte [esi + 0xa6], 1
mov edx, dword [ebp + 0x24]
mov edi, dword [ebp + 0x18]
test dl, dl
setne al
cmp byte [esi + 0x50], 0
setne cl
and cl, byte [ebp + 0x28]
and cl, al
cmp byte [ebx + 0x79], 0
setne al
or al, cl
cmp byte [esi + 0x14], 0
mov byte [ebx + 0x79], al
setne al
test dh, dh
setne cl
and cl, al
cmp byte [ebx + 0x7a], 0
setne al
or al, cl
mov byte [ebx + 0x7a], al
mov eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
mov edx, dword [ebx + 0x2c]
mov dword [esi + 0x48], eax
or eax, ecx
mov eax, dword [ebx + 0x28]
mov dword [esi + 0x40], ecx
setne cl
xor edx, dword [ebp + 0x1c]
xor eax, edi
or edx, eax
sete al
and al, cl
mov byte [esi + 0xb5], al
mov dword [esi + 0x64], eax
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x18]
xor ecx, dword [ebp + 0x1c]
xor edx, edi
mov edi, dword [ebx + 0x10]
or edx, ecx
movzx edx, al
mov eax, dword [ebx + 0x14]
mov ecx, 1
mov dword [esi + 0x4c], edi
cmovne ecx, edx
or edi, eax
mov dword [esi + 0x50], eax
cmove ecx, edx
mov byte [esi + 0xb7], cl
mov edi, dword [ebx + 0x314]
test edi, edi
je 0x51b200
movzx eax, byte [esi + 0xb6]
mov dword [esi + 0x20], ecx
mov ebx, dword [ebx + 0x30c]
mov ecx, dword [ebp + 0x24]
shl edi, 3
lea edi, [edi + edi*2]
mov byte [esi + 0xc], al
mov eax, dword [esi + 0x64]
jmp 0x51b0f1
mov byte [esi + 0xc], al
xor eax, eax
add ebx, 0x18
add edi, 0xffffffe8
je 0x51b1e4
movzx edx, byte [ebx]
test edx, edx
je 0x51b0e5
cmp edx, 1
jne 0x51b1a0
cmp byte [esi + 0x14], 0
je 0x51b0e5
test cl, cl
je 0x51b146
mov edx, dword [esi + 0x4c]
or edx, dword [esi + 0x50]
jne 0x51b146
mov edx, dword [esi + 0x10]
mov ecx, dword [ebp + 0x18]
mov dword [esi + 0x50], 0
mov dword [esi + 0x4c], 1
mov dword [edx + 0x14], 0
mov dword [edx + 0x10], 1
mov dword [edx + 0x18], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [edx + 0x1c], ecx
mov ecx, dword [ebp + 0x24]
mov dl, 1
mov dword [esi + 0x20], edx
test ch, ch
je 0x51b0e5
mov edx, dword [esi + 0x48]
or edx, dword [esi + 0x40]
je 0x51b15b
mov edx, dword [esi + 0x10]
cmp byte [edx + 0x78], 0
je 0x51b0e5
mov edx, dword [esi + 0x10]
mov eax, dword [ebp + 0x18]
mov dword [esi + 0x40], 0
mov dword [esi + 0x48], 1
mov dword [edx + 0x24], 0
mov dword [edx + 0x20], 1
mov dword [edx + 0x28], eax
mov eax, dword [ebp + 0x1c]
mov dword [edx + 0x2c], eax
mov al, 1
mov byte [edx + 0x78], 0
mov byte [edx + 0xeb], 2
mov dword [esi + 0x20], eax
mov al, 1
jmp 0x51b0e5
cmp byte [esi + 0x14], 0
je 0x51b0e0
cmp byte [esi + 0x20], 0
je 0x51b0e0
cmp byte [ebx + 0x10], 2
je 0x51b0e0
movzx edx, byte [ebx + 1]
lea ecx, [esi + 0x68]
or edx, ecx
mov byte [edx + 0x3e], 1
mov ecx, dword [ebx + 0xc]
cmp ecx, 2
sete byte [edx + 0x43]
cmp ecx, 3
mov ecx, dword [ebp + 0x24]
sete byte [edx + 0x48]
jmp 0x51b0e0
movzx ecx, byte [esi + 0xc]
mov byte [esi + 0xb5], al
mov ebx, dword [esi + 0x10]
mov byte [esi + 0xb6], cl
mov ecx, dword [esi + 0x20]
mov byte [esi + 0xb7], cl
mov edi, dword [esi + 0x1c]
test cl, cl
je 0x51b226
mov eax, dword [ebx + 0x2fc]
mov edx, ecx
lea ecx, [esi + 0x90]
mov dword [ecx + 8], eax
movsd xmm0, qword [ebx + 0x2f4]
movsd qword [ecx], xmm0
mov ecx, edx
cmp dword [ebx + 0x318], 0
jne 0x51b238
cmp byte [ebx + 0x31c], 0
je 0x51b24f
test cl, cl
setne al
cmp byte [esi + 0xa4], 0
setne cl
and cl, al
mov byte [esi + 0xa4], cl
mov edx, dword [esi + 0xc0]
mov ebx, dword [esi + 0x78]
mov eax, dword [esi + 0x7c]
or edx, dword [esi + 0x18]
je 0x51b2ba
mov ecx, dword [esi + 0x3c]
mov edx, edi
xor edx, ebx
xor ecx, eax
or ecx, edx
mov ecx, dword [esi + 0xd0]
jne 0x51b2c0
mov edi, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
xor edi, dword [esi + 0x1c]
xor edx, dword [esi + 0x3c]
or edx, edi
sete dl
test byte [esi + 0x44], dl
je 0x51b2f5
mov edx, dword [esi + 0x10]
mov dword [esi + 0xc0], 0
mov dword [esi + 0x18], 0
mov dword [edx + 0x34], 0
mov dword [edx + 0x30], 0
mov byte [edx + 0x71], 0
cmp byte [esi + 0xb5], 0
jne 0x51b2c9
jmp 0x51b30f
mov ecx, dword [esi + 0xd0]
cmp byte [esi + 0xb5], 0
je 0x51b30f
mov edx, dword [esi + 0x18]
or dword [esi + 0xc0], edx
je 0x51b2e2
mov edx, dword [esi + 0x1c]
mov edi, dword [esi + 0x3c]
xor edx, ebx
xor edi, eax
or edi, edx
je 0x51b30f
mov eax, dword [esi + 0x10]
mov dword [eax + 0x34], 0
mov dword [eax + 0x30], 0
jmp 0x51b30f
mov dword [esi + 0x18], 0
mov dword [esi + 0xc0], 1
cmp byte [esi + 0xb5], 0
jne 0x51b2c9
xor edx, edx
mov eax, 8
lock cmpxchg dword [ecx], edx
je 0x51b32b
mov dword [esi + 0x168], 0
call fcn.00719150
push 0x58
lea eax, [esi + 0x68]
push eax
push dword [esi + 0xec]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x160]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edi
mov dword [esi + 0x168], 0xffffffff
call fcn.00719c10
mov ecx, dword [ebp + 0x24]
mov eax, dword [esi + 0x10]
lock inc dword [eax]
jg 0x51ab66
jmp 0x51b45d
mov dword [esi + 0x168], 0xffffffff
call fcn.00719890
mov ecx, dword [esi + 0xc]
jmp 0x51a80f
mov dword [esi + 0x168], 0xffffffff
call fcn.00719890
movdqa xmm2, xmmword [esi + 0x20]
mov ecx, dword [esi + 0xc]
jmp 0x51a920
test edi, edi
je 0x51b018
add ecx, 2
xor edx, edx
jmp 0x51b3c8
add edx, eax
add ecx, 0x20
dec edi
je 0x51b40a
cmp byte [ecx - 2], 4
mov eax, 0
jne 0x51b3c0
cmp byte [ecx], 0
je 0x51b3c0
xor eax, eax
cmp byte [ecx - 1], 7
sete al
jmp 0x51b3c0
mov dword [esi + 0x168], 0xffffffff
movaps xmmword [esi + 0x20], xmm3
call fcn.00719150
movaps xmm3, xmmword [esi + 0x20]
mov ecx, dword [esi + 0xc]
test edi, edi
jne 0x51a7ec
jmp 0x51a9e8
test edx, edx
jne 0x51b011
jmp 0x51b018
mov dword [esi + 0xc], 0
jmp 0x51ab09
mov dword [esi + 0x168], 0xffffffff
call fcn.00719c10
lock inc dword [edi]
jg 0x51a851
jmp 0x51b45d
mov dword [esi + 0x168], 0xffffffff
call fcn.00719c10
movdqa xmm2, xmmword [esi + 0x20]
mov eax, dword [esi + 0x10]
lock inc dword [eax]
jg 0x51a95a
ud2