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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x230
mov esi, esp
mov dword [esi + 0x218], ebp
mov dword [esi + 0x21c], esp
mov dword [esi + 0x228], 0xffffffff
mov dword [esi + 0x224], 0x704730
mov edi, ecx
lea eax, [esi + 0x220]
mov dword [esi + 0xfc], edx
mov ecx, dword fs:[0]
mov dword [esi + 0x220], ecx
mov dword fs:[0], eax
mov ecx, dword [edx + 0xe0]
mov eax, dword [ecx + 8]
mov dword [esi + 8], ecx
add ecx, 8
mov dword [esi + 0x5c], ecx
test al, 8
jne 0x54cf7c
mov ecx, eax
add ecx, 0x10
jb 0x54cf7c
mov edx, dword [esi + 0x5c]
lock cmpxchg dword [edx], ecx
jne 0x54cf7c
mov eax, dword [esi + 8]
mov dword [esi + 0x58], edi
movsd xmm1, qword [eax + 0x2ec]
mov ecx, dword [eax + 0x2e8]
movsd xmm2, qword [eax + 0x2f8]
mov ebx, dword [eax + 0x2a4]
movsd xmm0, qword [eax + 0x2c0]
mov edx, dword [eax + 0x2a8]
movaps xmmword [esi + 0x200], xmm1
movups xmm1, xmmword [eax + 0x2c8]
mov dword [esi + 0x100], ecx
mov ecx, dword [eax + 0x2f4]
movaps xmmword [esi + 0x1f0], xmm2
movsd xmm2, qword [eax + 0x2b0]
test ebx, ebx
movsd qword [esi + 0x1d8], xmm0
mov dword [esi + 0x78], edx
mov dword [esi + 0x10], ebx
movaps xmmword [esi + 0x1e0], xmm1
movss xmm1, dword [eax + 0x2b8]
mov eax, dword [eax + 0x2ac]
movaps xmmword [esi + 0x90], xmm2
mov dword [esi + 0x70], ecx
movss dword [esi + 0x4c], xmm1
mov dword [esi + 0x74], eax
je 0x54ce98
mov edi, ebx
xor ebx, ebx
cmp edi, 0x8000000
setb al
jae 0x54db1a
mov bl, al
shl edi, 4
shl ebx, 3
test edi, edi
js 0x54db2b
je 0x54cf5a
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x54ce46
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x54cf64
mov dword [0x919820], eax
push edi
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x54cf64
mov ebx, dword [esi + 0x10]
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov dword [esi + 0x24], ebx
mov edx, dword [eax + 0x29c]
mov edi, dword [eax + 0x2a0]
xor eax, eax
cmp edi, edx
mov ecx, edx
cmovb ecx, eax
mov eax, edx
sub edi, ecx
mov ecx, ebx
sub eax, edi
sub ecx, eax
ja 0x54ceba
lea edx, [edi + ebx]
jmp 0x54ceb8
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x20], 8
mov dword [esi + 0x24], 0
xor edi, edi
xor edx, edx
xor ecx, ecx
mov eax, dword [esi + 8]
shl edi, 4
shl edx, 4
xor ebx, ebx
mov eax, dword [eax + 0x298]
add edi, eax
add edx, eax
mov dword [esi + 4], eax
mov dword [esi + 0x48], edx
sub edx, edi
mov dword [esi + 0x80], edi
mov edi, dword [esi + 0x10]
mov dword [esi + 0xc], edx
shr edx, 4
add edx, ecx
cmp edx, edi
mov edi, 0
jbe 0x54cfb9
mov dword [esi + 0x30], ecx
lea ecx, [esi + 0x20]
mov dword [esi + 0x228], 2
mov dword [esi + 0x68], edx
call fcn.00710640
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x2c]
mov edi, dword [esi + 0x28]
mov ecx, edx
sub ecx, eax
cmp edi, ecx
jbe 0x54cfb1
mov ebx, edi
mov ecx, edx
mov edi, dword [esi + 0x24]
sub ecx, ebx
mov dword [esi + 0x110], ebx
sub eax, ecx
cmp ecx, eax
jbe 0x54cf89
mov ebx, edi
sub ebx, edx
cmp ebx, eax
jb 0x54cf89
mov ecx, dword [esi + 0x20]
shl edx, 4
shl eax, 4
add edx, ecx
push eax
push ecx
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edi, dword [esi + 0x28]
jmp 0x54cfb1
mov eax, ebx
test eax, eax
jne 0x54ce58
mov ecx, ebx
mov edx, edi
mov dword [esi + 0x228], 0
call fcn.00709d20
jmp 0x54db77
mov ecx, dword [esi + 0x5c]
call fcn.00719890
jmp 0x54cd64
mov edx, dword [esi + 0x110]
mov eax, dword [esi + 0x20]
sub edi, ecx
shl ecx, 4
mov ebx, edi
shl ebx, 4
shl edx, 4
add ebx, eax
add edx, eax
push ecx
push edx
push ebx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov dword [esi + 0x28], edi
mov ecx, dword [esi + 0x30]
mov edx, dword [esi + 0x68]
xor ebx, ebx
shl ecx, 4
mov eax, dword [esi + 0x24]
mov dword [esi + 0x110], edi
mov dword [esi + 0x30], ecx
mov ecx, dword [esi + 0x2c]
add edi, ecx
mov dword [esi + 0x10], ecx
mov ecx, eax
cmp edi, eax
cmovae ebx, eax
sub edi, ebx
mov dword [esi + 0x68], ebx
lea ebx, [esi + 0x20]
sub ecx, edi
mov dword [esi + 0x50], ebx
mov dword [esi + 0x54], 0
cmp ecx, edx
mov ecx, dword [esi + 0x30]
mov edx, dword [esi + 4]
lea ecx, [edx + ecx]
jae 0x54d012
cmp eax, edi
mov dword [esi + 0x1c0], ecx
jne 0x54d053
mov eax, dword [esi + 0x80]
mov ecx, edx
lea edx, [esi + 0x54]
jmp 0x54d1ce
mov dword [esi + 0x7c], edi
mov eax, dword [esi + 0x80]
mov edi, dword [esi + 0x48]
mov dword [esi + 0x128], ebx
mov dword [esi + 0xa8], eax
mov dword [esi + 0xac], edi
mov dword [esi + 0xb0], edx
mov dword [esi + 0xb4], ecx
lea edx, [esi + 0x7c]
lea ecx, [esi + 0x54]
mov dword [esi + 0x12c], edx
mov dword [esi + 0x130], ecx
jmp 0x54d20b
mov ecx, dword [esi + 0x110]
mov edx, dword [esi + 0x10]
sub edi, eax
shl ecx, 4
shl edx, 4
add edx, ecx
mov ecx, dword [esi + 0x68]
shl ecx, 4
sub edx, ecx
xor ecx, ecx
mov dword [esi + 0x10], edx
mov edx, 1
nop dword [eax + eax]
mov eax, dword [esi + 0x80]
cmp dword [esi + 0xc], ecx
lea eax, [eax + ecx]
je 0x54d109
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
lea eax, [esi + 0xac]
lea ebx, [esi + 0x12c]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov eax, dword [esi + 0xb8]
movsd xmm0, qword [esi + 0xa8]
movsd xmm1, qword [esi + 0xb0]
mov dword [esi + 0x138], eax
mov eax, dword [esi + 0x20]
movsd qword [esi + 0x130], xmm1
movsd qword [esi + 0x128], xmm0
movsd xmm0, qword [ebx]
movsd xmm1, qword [ebx + 8]
add eax, dword [esi + 0x10]
movsd qword [ecx + eax + 8], xmm1
movsd qword [ecx + eax], xmm0
mov dword [esi + 0x54], edx
inc edx
add ecx, 0x10
inc edi
jne 0x54d080
mov eax, dword [esi + 0x80]
add eax, ecx
jmp 0x54d1c5
add dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x30]
mov dword [esi + 0xc], eax
nop word cs:[eax + eax]
nop dword [eax]
test ecx, ecx
je 0x54d1c2
mov ebx, dword [esi + 4]
mov dword [esi + 0x30], ecx
movsd xmm0, qword [ebx]
movsd xmm1, qword [ebx + 8]
lea eax, [ebx + 0x10]
lea ebx, [esi + 0xac]
mov dword [esi + 0x80], eax
movsd qword [ebx + 8], xmm1
movsd qword [ebx], xmm0
lea ebx, [esi + 0x12c]
mov ecx, dword [esi + 0xb8]
movsd xmm0, qword [esi + 0xa8]
movsd xmm1, qword [esi + 0xb0]
mov dword [esi + 0x138], ecx
movsd qword [esi + 0x130], xmm1
movsd qword [esi + 0x128], xmm0
mov ecx, dword [esi + 0x20]
movsd xmm0, qword [ebx]
movsd xmm1, qword [ebx + 8]
mov ebx, dword [esi + 0x10]
movsd qword [ecx + ebx + 8], xmm1
movsd qword [ecx + ebx], xmm0
mov ecx, dword [esi + 0x30]
add ebx, 0x10
mov dword [esi + 0x54], edx
inc edx
mov dword [esi + 0x10], ebx
mov ebx, dword [esi + 0x80]
add ecx, 0xfffffff0
inc edi
mov dword [esi + 4], ebx
jne 0x54d120
mov eax, dword [esi + 0xc]
mov ecx, ebx
jmp 0x54d1c8
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 4]
lea edx, [esi + 0x54]
lea ebx, [esi + 0x20]
mov dword [esi + 0xa8], eax
mov eax, dword [esi + 0x48]
mov edi, dword [esi + 0x1c0]
mov dword [esi + 0x128], ebx
mov dword [esi + 0x7c], 0
mov dword [esi + 0xac], eax
mov dword [esi + 0xb0], ecx
lea ecx, [esi + 0x7c]
mov dword [esi + 0xb4], edi
mov dword [esi + 0x12c], ecx
mov dword [esi + 0x130], edx
lea ecx, [esi + 0xa8]
lea edx, [esi + 0x128]
mov dword [esi + 0x134], 0
call fcn.0052c5d0
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
movaps xmm2, xmmword [esi + 0x90]
add dword [eax + 0xc], ecx
mov eax, dword [esi + 0x78]
movsd xmm1, qword [esi + 0x28]
movsd xmm0, qword [esi + 0x20]
movsd qword [esi + 0xb0], xmm1
movss xmm1, dword [esi + 0x4c]
movsd qword [esi + 0xa8], xmm0
movlps qword [esi + 0xc0], xmm2
movss dword [esi + 0xc8], xmm1
mov dword [esi + 0xb8], eax
mov eax, dword [esi + 0x74]
mov dword [esi + 0xbc], eax
mov eax, dword [esi + 8]
mov edx, dword [eax + 0x314]
mov ecx, dword [eax + 0x28c]
mov ebx, dword [eax + 0x288]
mov edi, dword [eax + 0x300]
movsd xmm2, qword [eax + 0x304]
movsd xmm3, qword [eax + 0x290]
movups xmm4, xmmword [eax + 0x2d8]
mov ah, byte [eax + 0x31d]
test edx, edx
mov dword [esi + 0x78], ecx
mov dword [esi + 0x90], edx
mov dword [esi + 0x4c], ebx
mov byte [esi + 0x74], ah
je 0x54d41a
xor ebx, ebx
cmp edx, 0x5555556
setb al
jae 0x54db3c
lea ecx, [edx*8]
mov bl, al
lea eax, [ecx + ecx*2]
shl ebx, 2
test eax, eax
mov dword [esi + 0xc], eax
js 0x54db4d
mov eax, dword [esi + 8]
mov dword [esi + 0x48], edi
mov eax, dword [eax + 0x30c]
mov dword [esi + 0x10], eax
je 0x54da46
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
mov edi, edx
movaps xmmword [esi + 0x110], xmm2
movsd qword [esi + 0x68], xmm3
movaps xmmword [esi + 0x1c0], xmm4
test eax, eax
jne 0x54d33f
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
mov ecx, ebx
je 0x54da52
mov dword [0x919820], eax
push dword [esi + 0xc]
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
movaps xmm2, xmmword [esi + 0x110]
movsd xmm3, qword [esi + 0x68]
movaps xmm4, xmmword [esi + 0x1c0]
mov edx, edi
mov ecx, ebx
test eax, eax
je 0x54da52
mov edi, edx
xor ecx, ecx
jmp 0x54d3ab
mov ebx, dword [esi + 0x10]
mov dh, dl
movsd xmm0, qword [ebx + ecx + 4]
xor ebx, ebx
mov byte [eax + ecx], bl
mov ebx, dword [esi + 0x80]
mov byte [eax + ecx + 1], dh
movlps qword [eax + ecx + 4], xmm0
mov dl, dh
mov dword [eax + ecx + 0xc], ebx
movzx ebx, byte [esi + 0x30]
mov byte [eax + ecx + 0x10], bl
mov ebx, dword [esi + 4]
mov dword [eax + ecx + 0x11], ebx
add ecx, 0x18
test edi, edi
je 0x54d412
cmp dword [esi + 0xc], ecx
je 0x54d412
mov ebx, dword [esi + 0x10]
dec edi
movzx ebx, byte [ebx + ecx]
test ebx, ebx
je 0x54d370
cmp ebx, 1
jne 0x54d3e0
mov edx, dword [esi + 0x10]
mov bl, 1
movsd xmm0, qword [edx + ecx + 4]
mov dh, byte [edx + ecx + 1]
jmp 0x54d37d
mov edx, dword [esi + 0x10]
movzx ebx, byte [edx + ecx + 0x10]
cmp bl, 2
mov byte [esi + 0x30], bl
je 0x54d407
mov ebx, dword [edx + ecx + 0xc]
movsd xmm0, qword [edx + ecx + 4]
mov dword [esi + 0x80], ebx
mov ebx, dword [edx + ecx + 0x11]
mov dword [esi + 4], ebx
mov dh, byte [edx + ecx + 1]
mov bl, 2
jmp 0x54d37d
mov ecx, dword [esi + 0x70]
mov edi, dword [esi + 0x48]
jmp 0x54d422
mov ecx, dword [esi + 0x70]
mov eax, 4
movsd xmm0, qword [esi + 0x1d8]
mov edx, dword [esi + 0x100]
movaps xmm1, xmmword [esi + 0x200]
movaps xmm5, xmmword [esi + 0x1f0]
mov ebx, dword [ebp + 0xc]
movsd qword [esi + 0x160], xmm0
mov dword [esi + 0x188], edx
movlps qword [esi + 0x18c], xmm1
movaps xmm1, xmmword [esi + 0x1e0]
mov dword [esi + 0x194], ecx
movlps qword [esi + 0x198], xmm5
movsd xmm5, qword [esi + 0xa8]
mov edx, dword [esi + 8]
movups xmmword [esi + 0x168], xmm1
movsd xmm1, qword [esi + 0xb0]
movsd qword [esi + 0x138], xmm5
movsd xmm5, qword [esi + 0xc0]
movsd qword [esi + 0x140], xmm1
movsd xmm1, qword [esi + 0xb8]
movsd qword [esi + 0x150], xmm5
movsd qword [esi + 0x148], xmm1
movsd xmm1, qword [esi + 0xc8]
movsd qword [esi + 0x158], xmm1
mov ecx, dword [edx + 0x318]
mov dword [esi + 0x1b8], ecx
movzx ecx, byte [edx + 0x31c]
mov byte [esi + 0x1bc], cl
mov ecx, dword [esi + 0x78]
mov dword [esi + 0x1a0], edi
movlps qword [esi + 0x1a4], xmm2
mov edi, dword [esi + 0x90]
mov dword [esi + 0x12c], ecx
mov ecx, dword [esi + 0x4c]
mov dword [esi + 0x128], ecx
movzx ecx, byte [esi + 0x74]
movsd qword [esi + 0x130], xmm3
mov byte [esi + 0x1bd], cl
movups xmmword [esi + 0x178], xmm4
mov dword [esi + 0x1ac], eax
mov dword [esi + 0x1b0], edi
mov dword [esi + 0x1b4], edi
mov ecx, 0xfffffff0
lock xadd dword [edx + 8], ecx
and ecx, 0xfffffff2
cmp ecx, 0x12
mov ecx, dword [ebp + 8]
je 0x54da69
mov edi, dword [esi + 0x58]
movss xmm1, dword [esi + 0x170]
movss xmm2, dword [esi + 0x174]
xorps xmm0, xmm0
mov eax, dword [edi + 0x20]
test eax, eax
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x18]
setne dh
xor eax, ecx
mov ecx, dword [edi + 0x1c]
xor ecx, ebx
or ecx, eax
sete cl
ucomiss xmm1, xmm0
jne 0x54d67b
jp 0x54d67b
ucomiss xmm2, xmm0
jne 0x54d67b
jp 0x54d67b
mov eax, dword [ebp + 0x10]
and dh, cl
lea ebx, [edi + 0x20]
movzx ecx, byte [eax + 0x3c]
test cl, cl
sete dl
or dl, dh
je 0x54d957
test cl, cl
mov ch, dh
sete al
test dh, al
je 0x54dacc
mov eax, dword [ebx]
test eax, eax
je 0x54dab8
cmp dword [esi + 0x188], 1
jne 0x54dab8
mov dword [esi + 4], eax
movsd xmm2, qword [esi + 0x18c]
lea ecx, [eax + 8]
mov eax, dword [eax + 8]
mov dword [esi + 0x10], ebx
mov dword [esi + 0x30], ecx
test al, 8
jne 0x54d5fb
mov edx, eax
add edx, 0x10
jb 0x54d5fb
lock cmpxchg dword [ecx], edx
je 0x54d61e
mov dword [esi + 0x228], 3
movaps xmmword [esi + 0x80], xmm2
call fcn.00719890
movaps xmm2, xmmword [esi + 0x80]
mov ecx, dword [esi + 0x30]
mov ebx, dword [esi + 0x10]
mov edx, dword [esi + 4]
movlps qword [esi + 0xa8], xmm2
movlhps xmm2, xmm2
movaps xmm1, xmm2
movups xmm0, xmmword [edx + 0x38]
cmpleps xmm1, xmm0
cmpleps xmm0, xmm2
shufps xmm0, xmm1, 0xe4
pslld xmm0, 0x1f
movmskps eax, xmm0
cmp al, 0xf
je 0x54da83
cmp dword [edx + 0x30], 0
je 0x54da87
add edx, 0x28
lea ecx, [esi + 0xa8]
mov dword [esi + 0x228], 5
call fcn.0054bcc0
mov ebx, dword [esi + 0x10]
mov ecx, dword [esi + 0x30]
jmp 0x54da89
cmp dword [esi + 0x10], 0
je 0x54d594
cmp dword [esi + 0x188], 1
jne 0x54d594
mov eax, dword [esi + 0x10]
movss xmm0, dword [esi + 0x190]
mov byte [esi + 0xc], cl
mov byte [esi + 0x80], dh
movss xmm3, dword [esi + 0x18c]
lea ecx, [eax + 8]
movss dword [esi + 0x30], xmm0
mov dword [esi + 4], ecx
mov eax, dword [eax + 8]
test al, 8
jne 0x54d6d0
mov ecx, eax
add ecx, 0x10
jb 0x54d6d0
mov edx, dword [esi + 4]
lock cmpxchg dword [edx], ecx
je 0x54d709
mov ecx, dword [esi + 4]
mov dword [esi + 0x228], 3
movss dword [esi + 8], xmm1
movss dword [esi + 0x5c], xmm2
movss dword [esi + 0x90], xmm3
call fcn.00719890
movss xmm3, dword [esi + 0x90]
movss xmm2, dword [esi + 0x5c]
movss xmm1, dword [esi + 8]
mov edi, dword [esi + 0x58]
mov ebx, dword [esi + 0x10]
cvtss2sd xmm1, xmm1
movss xmm0, dword [ebx + 0x38]
subss xmm0, xmm3
movss dword [esi + 0x5c], xmm0
movss xmm0, dword [ebx + 0x3c]
movss dword [esi + 0x90], xmm0
movss xmm0, dword [ebx + 0x44]
movss dword [esi + 8], xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm2
sub esp, 0x10
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_atan2
add esp, 0x10
fstp dword [esi + 0x10c]
movss xmm0, dword [esi + 0x10c]
movss xmm1, dword [esi + 0x5c]
movss dword [esi + 0x4c], xmm0
movss xmm0, dword [esi + 0x90]
cvtss2sd xmm1, xmm1
movsd qword [esi + 0x90], xmm1
subss xmm0, dword [esi + 0x30]
cvtss2sd xmm0, xmm0
sub esp, 0x10
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_atan2
add esp, 0x10
fstp xword [esi + 0x5c]
movss xmm0, dword [esi + 8]
subss xmm0, dword [esi + 0x30]
cvtss2sd xmm0, xmm0
sub esp, 0x10
movsd xmm1, qword [esi + 0x90]
movsd qword [esp], xmm0
movsd qword [esp + 8], xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll_atan2
add esp, 0x10
fstp dword [esi + 0x104]
mov eax, 0xfffffff0
movss xmm1, dword [esi + 0x104]
fld xword [esi + 0x5c]
fstp dword [esi + 0x108]
movss xmm2, dword [esi + 0x108]
lock xadd dword [ebx + 8], eax
and eax, 0xfffffff2
cmp eax, 0x12
jne 0x54d822
mov ecx, dword [esi + 4]
mov dword [esi + 0x228], 3
movaps xmmword [esi + 0x10], xmm1
movaps xmmword [esi + 0x30], xmm2
call fcn.00719c10
movaps xmm2, xmmword [esi + 0x30]
movaps xmm1, xmmword [esi + 0x10]
mov edi, dword [esi + 0x58]
movss xmm0, dword [esi + 0x4c]
mov dh, byte [esi + 0x80]
movzx ecx, byte [esi + 0xc]
subss xmm1, xmm0
subss xmm2, xmm0
xorps xmm0, xmm0
cmpleps xmm2, xmm0
cmpleps xmm0, xmm1
andps xmm0, xmm2
movd eax, xmm0
test al, 1
je 0x54d594
mov eax, dword [esi + 0xfc]
mov edx, 8
mov edi, dword [eax + 0xe0]
xor eax, eax
lock cmpxchg dword [edi + 8], edx
lea ecx, [edi + 8]
je 0x54d88b
mov dword [esi + 0x228], 3
mov dword [esi + 0x10], ecx
mov dword [esi + 0x30], edi
call fcn.007188f0
mov edi, dword [esi + 0x30]
mov ecx, dword [esi + 0x10]
mov dword [edi + 0x4a0], 2
mov eax, dword [edi + 0x480]
or eax, dword [edi + 0x484]
jne 0x54d8b0
cmp dword [edi + 0x488], 0
je 0x54d932
mov dword [edi + 0x484], 0
mov dword [edi + 0x480], 0
mov dword [edi + 0x488], 0
mov eax, dword [edi + 0x498]
test eax, eax
je 0x54d932
mov dword [esi + 0x10], ecx
mov ecx, dword [edi + 0x490]
mov edx, dword [edi + 0x494]
mov dword [esi + 0xac], edx
mov dword [esi + 0xa8], ecx
mov dword [esi + 0xb4], 0
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb8], 0
lea edx, [esi + 0xa8]
mov ecx, dword [edi + 0x49c]
mov dword [esi + 0x228], 4
push edx
push eax
call dword [ecx + 0x14]
add esp, 8
mov ecx, dword [esi + 0x10]
xor edx, edx
mov eax, 8
lock cmpxchg dword [ecx], edx
je 0x54dacc
mov dword [esi + 0x228], 3
call fcn.00719150
jmp 0x54dacc
mov edx, dword [edi + 0x20]
movsd xmm0, qword [eax + 0x1c]
test edx, edx
je 0x54d977
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
xor eax, dword [ebp + 8]
xor ecx, dword [ebp + 0xc]
or ecx, eax
je 0x54dacc
shufps xmm0, xmm0, 0xe1
xorps xmm1, xmm1
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb8], 1
mov dword [esi + 0xd8], 0
mov dword [esi + 0x30], edx
mov dword [esi + 0x10], ebx
addps xmm1, xmm0
movlps qword [esi + 0xe0], xmm0
movlps qword [esi + 0xe8], xmm1
mov dword [esi + 0xf0], 0
mov dword [esi + 0xa8], 1
mov dword [esi + 0xac], 1
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x54d9f4
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x54db5e
mov dword [0x919820], eax
push 0x50
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x54db5e
mov edi, eax
lea eax, [esi + 0xa8]
push 0x50
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x30]
test eax, eax
je 0x54da2f
lock dec dword [eax]
jne 0x54da2f
mov ecx, dword [esi + 0x10]
call fcn.00562500
mov eax, dword [esi + 0x58]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ebx, dword [esi + 0x10]
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], edx
jmp 0x54daca
mov ecx, ebx
mov eax, ebx
test eax, eax
jne 0x54d36a
mov edx, dword [esi + 0xc]
mov dword [esi + 0x228], 1
call fcn.00709d20
jmp 0x54db77
mov ecx, dword [esi + 0x5c]
mov dword [esi + 0x228], 0xffffffff
call fcn.00719c10
mov ecx, dword [ebp + 8]
jmp 0x54d546
mov al, 1
jmp 0x54da89
xor eax, eax
mov edx, 0xfffffff0
lock xadd dword [ecx], edx
and edx, 0xfffffff2
cmp edx, 0x12
jne 0x54dab2
mov dword [esi + 0x228], 3
mov dword [esi + 0x30], eax
call fcn.00719c10
mov eax, dword [esi + 0x30]
mov ebx, dword [esi + 0x10]
test al, al
jne 0x54dacc
mov eax, dword [ebx]
xor edi, edi
test eax, eax
je 0x54daca
lock dec dword [eax]
jne 0x54daca
mov ecx, ebx
call fcn.00562500
mov dword [ebx], edi
cmp dword [esi + 0x13c], 0
je 0x54dae9
push dword [esi + 0x138]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
cmp dword [esi + 0x1b0], 0
je 0x54db06
push dword [esi + 0x1ac]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esi + 0x220]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0x228], 0
call fcn.00425040
jmp 0x54db77
mov dword [esi + 0x228], 0
call fcn.00425040
jmp 0x54db77
mov dword [esi + 0x228], 1
call fcn.00425040
jmp 0x54db77
mov dword [esi + 0x228], 1
call fcn.00425040
jmp 0x54db77
mov ecx, 8
mov edx, 0x50
mov dword [esi + 0x228], 6
call fcn.00709d20
ud2