Function at 0x512720
Capabilities:
Load assembly via iassembly

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x8f0
mov esi, esp
mov dword [esi + 0x8d8], ebp
mov dword [esi + 0x8dc], esp
mov dword [esi + 0x8e8], 0xffffffff
mov dword [esi + 0x8e4], 0x7042f0
lea ebx, [esi + 0x870]
mov edi, ecx
mov eax, dword fs:[0]
mov dword [esi + 0x8e0], eax
lea eax, [esi + 0x8e0]
mov dword fs:[0], eax
call 0x512776
pop eax
mov dword [esi + 0x328], eax
push 0x68
push edx
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, 8
xor eax, eax
mov dword [esi + 0x88], edi
lea ecx, [edi + 8]
lock cmpxchg dword [edi + 8], edx
mov dword [esi + 0x124], ecx
je 0x5127bb
mov dword [esi + 0x8e8], 0
call fcn.007188f0
lea ebx, [esi + 0x870]
lea eax, [esi + 0x6d8]
push 0x68
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x88]
mov dword [eax + 0x484], 0xffffffff
mov dword [eax + 0x480], 0xffffffff
mov dword [eax + 0x488], 0x3b9ac9ff
movss xmm0, dword [eax + 0xc4]
cmp dword [eax + 0xc0], 0
mov dword [eax + 0xc0], 0
je 0x512853
mov dword [esi + 0x6e8], 1
movss dword [esi + 0x6ec], xmm0
movss xmm1, dword [eax + 0x37c]
mov dword [esi + 0x6f8], 1
divss xmm1, xmm0
movups xmm0, xmmword [eax + 0x348]
mov dword [esi + 0x8e8], 5
shufps xmm1, xmm1, 0
mulps xmm1, xmm0
movups xmmword [esi + 0x6fc], xmm1
mov byte [esi + 0xf], 1
mov dword [esi + 0x8e8], 5
call fcn.0052c730
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov byte [esi + 0xf], 1
push ecx
call dword [eax + 0xc]
add esp, 4
lea edi, [0x89c390]
lea ecx, [esi + 0x3f8]
mov edx, 0x85a308d3
push eax
push edi
push 0x13198a2e
push 0x3707344
push 0x243f6a88
call fcn.00410e80
add esp, 0x14
mov edi, dword [esi + 0x88]
movsd xmm0, qword [edi + 0x550]
lea ecx, [edi + 0x558]
movsd qword [esi + 0x150], xmm0
movsd xmm0, qword [edi + 0x548]
movsd qword [esi + 0x148], xmm0
movsd xmm0, qword [edi + 0x540]
movsd qword [esi + 0x140], xmm0
movsd xmm0, qword [edi + 0x538]
movsd qword [esi + 0x138], xmm0
movsd xmm0, qword [edi + 0x528]
movsd xmm1, qword [edi + 0x530]
movsd qword [esi + 0x130], xmm1
movsd qword [esi + 0x128], xmm0
mov dword [edi + 0x528], 0x8cdfe0
mov dword [edi + 0x52c], 0
mov dword [edi + 0x530], 0
mov dword [edi + 0x534], 0
movsd xmm0, qword [esi + 0x3f8]
movsd xmm1, qword [esi + 0x400]
movsd qword [edi + 0x538], xmm0
movsd qword [edi + 0x540], xmm1
movsd xmm0, qword [esi + 0x408]
movsd qword [edi + 0x548], xmm0
movsd xmm0, qword [esi + 0x410]
movsd qword [edi + 0x550], xmm0
call fcn.00445580
movsd xmm0, qword [esi + 0x150]
movsd qword [edi + 0x580], xmm0
movsd xmm0, qword [esi + 0x148]
movsd qword [edi + 0x578], xmm0
movsd xmm0, qword [esi + 0x140]
movsd qword [edi + 0x570], xmm0
movsd xmm0, qword [esi + 0x138]
movsd qword [edi + 0x568], xmm0
movsd xmm0, qword [esi + 0x128]
movsd xmm1, qword [esi + 0x130]
movsd qword [edi + 0x560], xmm1
movsd qword [edi + 0x558], xmm0
mov word [edi + 0x79], 0
cmp byte [edi + 0x31c], 0
setne cl
cmp dword [edi + 0x318], 0
setne al
or al, cl
cmp al, 1
jne 0x512a3c
cmp byte [edi + 0x31d], 0
jne 0x512a3c
mov ecx, dword [esi + 0x88]
mov edx, dword [esi + 0x88]
mov edi, dword [esi + 0x88]
mov ecx, dword [ecx + 0x288]
or ecx, dword [edx + 0x28c]
je 0x512a4a
movsd xmm0, qword [edi + 0x2c0]
subsd xmm0, qword [edi + 0x290]
ucomisd xmm0, qword [0x726490]
jbe 0x512a4a
mov dword [edi + 0x14], 0
mov dword [edi + 0x10], 0
cmp dword [edi + 0x2e8], 1
mov ebx, dword [esi + 0x88]
sete cl
test al, cl
jne 0x512a7a
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x20], 0
movups xmm0, xmmword [ebx + 0x30]
movups xmmword [ebx + 0x40], xmm0
mov edi, dword [ebx + 0x50]
mov ecx, dword [ebx + 0x5c]
mov edx, dword [ebx + 0x58]
mov dword [ebx + 0x50], 0
or edi, dword [ebx + 0x54]
mov dword [ebx + 0x54], 0
je 0x512ab2
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 1
mov dword [ebx + 0x38], edx
mov dword [ebx + 0x3c], ecx
mov word [ebx + 0x72], 0
mov ecx, dword [esi + 0x714]
test ecx, ecx
je 0x512b11
mov edi, dword [esi + 0x88]
mov edx, dword [esi + 0x70c]
cmp byte [edi + 0x71], 0
je 0x5157f1
add edx, 2
shl ecx, 5
jmp 0x512ae8
add edx, 0x20
add ecx, 0xffffffe0
je 0x512b11
cmp byte [edx - 2], 4
jne 0x512ae0
cmp byte [edx - 1], 4
jne 0x512ae0
cmp byte [edx], 0
je 0x512ae0
mov ecx, dword [esi + 0x88]
mov dword [ecx + 0x34], 0
mov dword [ecx + 0x30], 0
mov byte [ecx + 0x71], 0
test al, al
jne 0x512b2c
mov eax, dword [esi + 0x88]
mov byte [eax + 0xeb], 2
mov dword [esi + 0x8e8], 5
lea ecx, [esi + 0x128]
mov byte [esi + 0xf], 1
mov dword [esi + 0x8e8], 5
call fcn.00532da0
mov edi, dword [esi + 0x88]
lea ebx, [edi + 0x220]
push 0x178
push ebx
lea eax, [esi + 0x3f8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 0x178
lea eax, [esi + 0x128]
push eax
mov dword [esi + 0xfc], ebx
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x570]
push 0x68
lea ecx, [esi + 0x6d8]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esi + 0x570]
movzx eax, byte [edi + 0x4a4]
or ecx, dword [esi + 0x574]
je 0x512bc0
movsd xmm2, qword [esi + 0x578]
movsd xmm0, qword [esi + 0x530]
jmp 0x512bd8
movss xmm1, dword [esi + 0x5c8]
movsd xmm0, qword [esi + 0x530]
cvtss2sd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm1, xmm2
test al, al
lea edi, [esi + 0x128]
subsd xmm1, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
je 0x512c1c
movss dword [esi + 0x118], xmm0
cmp dword [esi + 0x590], 0
movss dword [esi + 0x120], xmm0
je 0x512c3d
movsd xmm0, qword [esi + 0x594]
movsd xmm1, qword [esi + 0x59c]
jmp 0x512c4d
movss xmm1, dword [esi + 0x5c8]
movss dword [esi + 0x118], xmm1
cmp dword [esi + 0x590], 0
movss dword [esi + 0x120], xmm0
jne 0x512c0a
movsd xmm0, qword [esi + 0x520]
movsd xmm1, qword [esi + 0x528]
mov eax, dword [esi + 0x5ac]
movsd qword [esi + 0x3d8], xmm1
movsd qword [esi + 0x3d0], xmm0
movsd qword [esi + 0x100], xmm2
test eax, eax
je 0x51398a
mov ecx, dword [esi + 0x5a4]
shl eax, 5
add eax, ecx
mov dword [esi + 0x114], eax
jmp 0x512cb3
lea eax, [esi + 0x544]
mov dword [esi + 0x3e0], eax
mov eax, dword [esi + 0x114]
mov ecx, dword [esi + 0xa0]
add ecx, 0x20
cmp ecx, eax
je 0x51398a
cmp byte [ecx], 0xd
jne 0x512ca8
mov ebx, dword [esi + 0x544]
mov eax, dword [ecx + 8]
mov dword [esi + 0xa0], ecx
mov ecx, dword [ecx + 0xc]
test ebx, ebx
mov dword [esi + 8], eax
mov dword [esi + 0x60], ecx
je 0x512d97
mov eax, dword [esi + 0x548]
mov dword [esi + 0x90], eax
movzx eax, word [ebx + 0x4d6]
mov ecx, 0xffffffff
mov dword [esi + 0x40], ebx
lea edx, [eax*8]
mov dword [esi + 0x70], eax
nop dword [eax]
test edx, edx
je 0x512d70
mov eax, dword [esi + 0x40]
mov edi, dword [eax + ecx*8 + 8]
mov ebx, dword [eax + ecx*8 + 0xc]
xor eax, eax
mov dword [esi + 0x10], edi
mov dword [esi + 0x30], ebx
xor ebx, dword [esi + 0x60]
mov edi, dword [esi + 0x10]
xor edi, dword [esi + 8]
or edi, ebx
mov edi, dword [esi + 8]
mov ebx, 0xff
setne al
cmp edi, dword [esi + 0x10]
mov edi, dword [esi + 0x60]
sbb edi, dword [esi + 0x30]
lea edi, [esi + 0x128]
cmovb eax, ebx
inc ecx
add edx, 0xfffffff8
cmp al, 1
je 0x512d00
movzx eax, al
test eax, eax
je 0x512c90
mov eax, dword [esi + 0x90]
mov ebx, dword [esi + 0x40]
sub eax, 1
jae 0x512d85
jmp 0x512fba
mov ecx, dword [esi + 0x70]
mov ebx, dword [esi + 0x40]
mov eax, dword [esi + 0x90]
sub eax, 1
jb 0x512fba
mov ebx, dword [ebx + ecx*4 + 0x4d8]
mov dword [esi + 0x90], eax
jmp 0x512ce4
mov ecx, dword [esi + 0xc0]
xor ebx, ebx
mov dword [esi + 0xc0], ecx
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x60]
test ebx, ebx
mov dword [esi + 0x6c0], eax
mov dword [esi + 0x6c4], ecx
mov dword [esi + 0x6c8], 0
mov dword [esi + 0x6d0], 0
mov dword [esi + 0x670], 2
je 0x512e4f
push 0x68
lea eax, [esi + 0x670]
push eax
lea eax, [esi + 0x2a0]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 0x68
lea eax, [esi + 0x670]
push eax
lea eax, [esi + 0x5d8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx edx, word [ebx + 0x4d6]
cmp edx, 0xb
jae 0x512ede
mov eax, dword [esi + 0xc0]
mov dword [esi + 0x10], edx
lea ecx, [eax + 1]
lea eax, [ebx + eax*8]
cmp ecx, edx
jbe 0x512efd
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x60]
mov dword [eax], ecx
mov dword [eax + 4], edx
push 0x68
lea eax, [esi + 0x2a0]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
jmp 0x512f6f
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x512e72
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x51822e
mov dword [0x919820], eax
push 0x4d8
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x51822e
mov dword [eax + 0x4d0], 0
mov word [eax + 0x4d6], 1
mov ebx, eax
mov eax, dword [esi + 8]
mov dword [ebx], eax
mov eax, dword [esi + 0x60]
mov dword [ebx + 4], eax
mov eax, ebx
add eax, 0x58
push 0x68
lea ecx, [esi + 0x670]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [esi + 0x544], ebx
mov dword [esi + 0x548], 0
mov dword [esi + 0x54c], 1
jmp 0x512c9c
mov eax, dword [esi + 0xc0]
mov dl, 1
cmp eax, 5
jae 0x512fa1
mov dword [esi + 0x10], 4
mov ecx, eax
jmp 0x512fd5
mov dword [esi + 0x90], eax
mov eax, edx
mov dword [esi + 0x30], ecx
lea ecx, [ebx + ecx*8]
sub eax, dword [esi + 0xc0]
lea edx, [eax*8]
mov dword [esi + 0x40], eax
push edx
push dword [esi + 0x90]
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0xc0]
mov dword [ebx + ecx*8 + 4], eax
mov eax, dword [esi + 8]
mov dword [ebx + ecx*8], eax
push 0x68
lea eax, [esi + 0x2a0]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
imul eax, dword [esi + 0xc0], 0x68
imul ecx, dword [esi + 0x30], 0x68
imul edx, dword [esi + 0x40], 0x68
lea eax, [ebx + eax + 0x58]
lea ecx, [ebx + ecx + 0x58]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
imul eax, dword [esi + 0xc0], 0x68
inc dword [esi + 0x10]
lea eax, [ebx + eax + 0x58]
push 0x68
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x10]
mov word [ebx + 0x4d6], ax
inc dword [esi + 0x54c]
jmp 0x512c9c
mov ecx, eax
mov dword [esi + 0x10], eax
je 0x512fd5
cmp eax, 6
jne 0x512fc9
xor edx, edx
xor ecx, ecx
mov dword [esi + 0x10], 5
jmp 0x512fd5
mov dword [esi + 0x3e0], 0
jmp 0x512d9f
lea ecx, [eax - 7]
mov dword [esi + 0x10], 6
xor edx, edx
mov dword [esi + 0x70], edx
mov dword [esi + 0x30], ecx
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x512ffe
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x51824f
mov dword [0x919820], eax
push 0x4d8
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x51824f
mov dword [eax + 0x4d0], 0
mov word [eax + 0x4d6], 0
mov edx, dword [esi + 0x10]
mov dword [esi + 0x24], eax
movzx ecx, word [ebx + 0x4d6]
mov dword [esi + 0x10], edx
mov dword [esi + 0x40], ecx
mov ecx, edx
not ecx
add ecx, dword [esi + 0x40]
mov word [eax + 0x4d6], cx
mov dword [esi + 0x90], ecx
mov eax, dword [ebx + edx*8]
mov ecx, dword [ebx + edx*8 + 4]
mov dword [esi + 0x20], eax
imul eax, edx, 0x68
mov dword [esi + 0x28], ecx
lea eax, [ebx + eax + 0x58]
push 0x68
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [esi + 0x90]
add esp, 0xc
cmp ecx, 0xb
ja 0x518299
mov eax, dword [esi + 0x10]
lea edx, [eax + 1]
mov eax, dword [esi + 0x40]
sub eax, edx
cmp eax, ecx
jne 0x518270
lea eax, [ebx + 0x58]
mov dword [esi + 0x40], eax
lea eax, [ebx + edx*8]
mov dword [esi + 0xd0], eax
lea eax, [ecx*8]
push eax
push dword [esi + 0xd0]
push dword [esi + 0x24]
mov dword [esi + 0xd0], edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
imul eax, dword [esi + 0xd0], 0x68
mov ecx, dword [esi + 0x24]
imul edx, dword [esi + 0x90], 0x68
add eax, dword [esi + 0x40]
add ecx, 0x58
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x10]
mov word [ebx + 0x4d6], ax
mov eax, dword [esi + 0x128]
mov dword [esi + 0x90], eax
push 0x64
lea eax, [esi + 0x12c]
push eax
lea eax, [esi + 0x7a8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp byte [esi + 0x70], 0
mov eax, dword [esi + 0x24]
cmovne eax, ebx
mov dword [esi + 0x10], eax
push 0x68
lea eax, [esi + 0x5d8]
push eax
lea eax, [esi + 0x338]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [esi + 0x10]
add esp, 0xc
movzx eax, word [ecx + 0x4d6]
mov dword [esi + 0x70], eax
movzx eax, ax
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x30]
lea edx, [eax + 1]
lea eax, [ecx + eax*8]
cmp edx, dword [esi + 0x40]
mov dword [esi + 0xd0], edx
jbe 0x513176
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x60]
mov dword [eax], ecx
mov dword [eax + 4], edx
push 0x68
lea eax, [esi + 0x338]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
jmp 0x5131e8
mov edx, ecx
mov ecx, dword [esi + 0xd0]
lea ecx, [edx + ecx*8]
mov edx, dword [esi + 0x40]
mov dword [esi + 0x5c], ecx
sub edx, dword [esi + 0x30]
lea ecx, [edx*8]
mov dword [esi + 0x40], edx
push ecx
push eax
push dword [esi + 0x5c]
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x30]
mov dword [ecx + edx*8 + 4], eax
mov eax, dword [esi + 8]
mov dword [ecx + edx*8], eax
push 0x68
lea eax, [esi + 0x338]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
imul eax, dword [esi + 0x30], 0x68
mov edx, dword [esi + 0x10]
imul ecx, dword [esi + 0xd0], 0x68
lea eax, [edx + eax + 0x58]
lea ecx, [edx + ecx + 0x58]
imul edx, dword [esi + 0x40], 0x68
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
imul eax, dword [esi + 0x30], 0x68
mov ecx, dword [esi + 0x10]
inc dword [esi + 0x70]
lea eax, [ecx + eax + 0x58]
push 0x68
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x10]
mov word [ecx + 0x4d6], ax
push 0x64
lea eax, [esi + 0x7a8]
push eax
lea eax, [esi + 0x80c]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esi + 0x90], 3
jne 0x51323e
inc dword [esi + 0x54c]
jmp 0x512c9c
push 0x64
lea eax, [esi + 0x80c]
push eax
lea eax, [esi + 0x740]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x3e0]
mov edi, ebx
xor ebx, ebx
mov dword [esi + 0x40], edi
mov dword [esi + 0x70], eax
mov eax, dword [edi + 0x4d0]
test eax, eax
mov dword [esi + 8], eax
je 0x5136c9
nop word [eax + eax]
movzx edi, word [edi + 0x4d4]
mov eax, dword [esi + 0x90]
mov dword [esi + 0x5d8], eax
push 0x64
lea eax, [esi + 0x740]
push eax
lea eax, [esi + 0x5dc]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esi + 0x70], ebx
jne 0x51806e
mov eax, dword [esi + 8]
movzx ecx, di
movzx eax, word [eax + 0x4d6]
cmp eax, 0xb
mov dword [esi + 0x30], eax
jb 0x51383b
mov ebx, 4
cmp di, 5
jae 0x5132f0
mov al, 1
mov dword [esi + 0xd0], eax
jmp 0x513321
je 0x513303
movzx eax, di
cmp eax, 6
jne 0x51330f
mov ebx, 5
xor ecx, ecx
jmp 0x513317
mov al, 1
mov ebx, ecx
mov dword [esi + 0xd0], eax
jmp 0x513321
add ecx, 0xfffffff9
mov ebx, 6
mov dword [esi + 0xd0], 0
mov dword [esi + 0xe0], ecx
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x51334a
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518050
mov dword [0x919820], eax
push 0x508
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518050
mov ecx, dword [esi + 8]
mov dword [eax + 0x4d0], 0
mov word [eax + 0x4d6], 0
mov edi, ebx
mov dword [esi + 0x60], eax
mov dword [esi + 0x10], eax
not edi
movzx edx, word [ecx + 0x4d6]
add edi, edx
mov dword [esi + 0x90], edx
mov word [eax + 0x4d6], di
imul eax, ebx, 0x68
mov edx, dword [ecx + ebx*8]
lea eax, [ecx + eax + 0x58]
mov ecx, dword [ecx + ebx*8 + 4]
mov dword [esi + 0x2c], edx
mov dword [esi + 0x5c], ecx
push 0x68
push eax
lea eax, [esi + 0x338]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp edi, 0xb
ja SetCursor
mov ecx, dword [esi + 0x90]
mov dword [esi + 0xc8], ebx
inc ebx
sub ecx, ebx
cmp ecx, edi
jne CloseTouchInputHandle
mov ecx, dword [esi + 8]
lea edx, [ecx + 0x58]
lea eax, [ecx + ebx*8]
lea ecx, [edi*8]
mov dword [esi + 0x90], edx
push ecx
push eax
push dword [esi + 0x10]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esi + 0x60]
imul eax, ebx, 0x68
imul edx, edi, 0x68
mov dword [esi + 0xcc], ebx
add eax, dword [esi + 0x90]
add ecx, 0x58
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esi + 0xc8]
mov eax, dword [esi + 8]
mov word [eax + 0x4d6], bx
push 0x68
lea eax, [esi + 0x338]
push eax
lea eax, [esi + 0x130]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x5c]
mov edx, dword [esi + 0x2c]
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x12c], eax
mov dword [esi + 0x128], edx
movzx edi, word [ecx + 0x4d6]
lea ecx, [edi + 1]
cmp edi, 0xc
jae ImmReleaseContext
mov edx, dword [esi + 0x30]
sub edx, ebx
cmp edx, ecx
jne 0x518094
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 8]
mov ebx, dword [esi + 0xcc]
inc dword [esi + 0x70]
shl edx, 2
add eax, 0x4d8
lea ecx, [ecx + ebx*4 + 0x4d8]
push edx
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor eax, eax
nop word [eax + eax]
mov ebx, dword [esi + 0x10]
mov ecx, eax
cmp eax, edi
mov edx, dword [ebx + eax*4 + 0x4d8]
adc eax, 0
cmp ecx, edi
mov dword [edx + 0x4d0], ebx
mov word [edx + 0x4d4], cx
jae 0x5134d6
cmp eax, edi
jbe 0x5134b0
mov eax, dword [esi + 0x130]
mov dword [esi + 0x90], eax
push 0x64
lea eax, [esi + 0x134]
push eax
lea eax, [esi + 0x338]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp byte [esi + 0xd0], 0
mov ecx, dword [esi + 0x60]
mov ebx, dword [esi + 0xe0]
cmovne ecx, dword [esi + 8]
lea edx, [ebx + 1]
mov dword [esi + 0xd0], edx
movzx edi, word [ecx + 0x4d6]
lea eax, [ecx + ebx*8]
mov dword [esi + 0x60], ecx
cmp edx, edi
mov dword [esi + 0x30], edi
jbe 0x513550
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x28]
mov dword [eax], ecx
mov dword [eax + 4], edx
push 0x68
lea eax, [esi + 0x5d8]
push eax
lea eax, [esi + 0x128]
push eax
call sub.VCRUNTIME140.dll_memcpy
jmp 0x5135ca
mov edi, ecx
lea ecx, [ecx + edx*8]
mov dword [esi + 0xcc], ecx
mov ecx, eax
mov eax, dword [esi + 0x30]
sub eax, ebx
lea edx, [eax*8]
mov dword [esi + 0xc8], eax
push edx
push ecx
push dword [esi + 0xcc]
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x28]
mov dword [edi + ebx*8 + 4], eax
mov eax, dword [esi + 0x20]
mov dword [edi + ebx*8], eax
push 0x68
lea eax, [esi + 0x5d8]
push eax
lea eax, [esi + 0x128]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esi + 0xd0]
imul eax, ebx, 0x68
imul edx, dword [esi + 0xc8], 0x68
lea eax, [edi + eax + 0x58]
imul ecx, ecx, 0x68
lea ecx, [edi + ecx + 0x58]
mov edi, dword [esi + 0x30]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov ecx, dword [esi + 0x60]
imul eax, ebx, 0x68
inc edi
lea eax, [ecx + eax + 0x58]
push 0x68
lea ecx, [esi + 0x128]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x30]
lea edx, [eax + 2]
lea eax, [ebx + 2]
cmp eax, edx
jae 0x513625
mov ecx, dword [esi + 0x60]
mov dword [esi + 0x20], edx
mov edx, dword [esi + 0xd0]
add ecx, 0x4d8
lea eax, [ecx + eax*4]
lea ecx, [ecx + edx*4]
mov edx, dword [esi + 0x30]
sub edx, ebx
shl edx, 2
push edx
push ecx
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esi + 0x20]
add esp, 0xc
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x60]
cmp dword [esi + 0xd0], edx
mov dword [ecx + ebx*4 + 0x4dc], eax
mov word [ecx + 0x4d6], di
jae 0x513669
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [ecx + ebx*4 + 0x4dc]
inc ebx
cmp edi, ebx
mov dword [eax + 0x4d0], ecx
mov word [eax + 0x4d4], bx
jne 0x513650
push 0x64
lea eax, [esi + 0x338]
push eax
lea edi, [esi + 0x7a8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esi + 0x90], 3
je 0x513979
push 0x64
push edi
lea eax, [esi + 0x740]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0x2c]
mov ecx, dword [esi + 0x5c]
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x70]
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], edx
mov dword [esi + 0x28], ecx
mov eax, dword [edi + 0x4d0]
test eax, eax
mov dword [esi + 8], eax
jne 0x513280
push 0x64
lea eax, [esi + 0x740]
push eax
lea eax, [esi + 0x134]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x544]
mov dword [esi + 0x12c], eax
mov eax, dword [esi + 0x20]
test ecx, ecx
mov dword [esi + 0x30], ecx
mov dword [esi + 0x128], eax
mov eax, dword [esi + 0x90]
mov dword [esi + 0x130], eax
mov eax, dword [esi + 0x70]
mov dword [esi + 0x198], edi
mov dword [esi + 0x19c], eax
mov eax, dword [esi + 0x24]
mov dword [esi + 0x1a0], eax
lea eax, [esi + 0x544]
mov dword [esi + 0x1a4], ebx
cmove eax, ecx
je 0x5184bc
mov dword [esi + 8], eax
mov eax, dword [eax]
mov dword [esi + 0x60], eax
mov eax, dword [esi + 0x548]
mov dword [esi + 0x10], eax
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x51376b
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518452
mov dword [0x919820], eax
push 0x508
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518452
mov edi, eax
mov dword [eax + 0x4d0], 0
mov word [eax + 0x4d6], 0
mov eax, dword [esi + 0x60]
mov dword [edi + 0x4d8], eax
mov dword [eax + 0x4d0], edi
mov word [eax + 0x4d4], 0
mov eax, dword [esi + 8]
mov dword [eax], edi
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 0x548], eax
push 0x68
lea eax, [esi + 0x130]
push eax
lea eax, [esi + 0x338]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esi + 0x10], ebx
jne 0x518470
movzx ebx, word [edi + 0x4d6]
cmp ebx, 0xa
ja 0x518496
lea eax, [ebx + 1]
mov word [edi + 0x4d6], ax
mov eax, dword [esi + 0x28]
mov dword [edi + ebx*8 + 4], eax
mov eax, dword [esi + 0x20]
mov dword [edi + ebx*8], eax
imul eax, ebx, 0x68
lea eax, [edi + eax + 0x58]
push 0x68
lea ecx, [esi + 0x130]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x24]
mov dword [edi + ebx*4 + 0x4dc], eax
inc ebx
mov dword [eax + 0x4d0], edi
mov word [eax + 0x4d4], bx
jmp 0x513979
mov edx, dword [esi + 0x30]
lea ebx, [ecx + 1]
mov dword [esi + 0xe0], ecx
mov dword [esi + 0x10], ebx
lea eax, [edx + 1]
cmp dx, di
mov dword [esi + 0x60], eax
jbe 0x513903
mov ebx, dword [esi + 8]
lea eax, [ebx + ecx*8]
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x10]
lea eax, [ebx + eax*8]
mov dword [esi + 0x70], eax
mov eax, edx
sub eax, ecx
lea edx, [eax*8]
mov dword [esi + 0x40], eax
push edx
push dword [esi + 0x90]
push dword [esi + 0x70]
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0xe0]
mov dword [ebx + ecx*8 + 4], eax
mov eax, dword [esi + 0x20]
mov dword [ebx + ecx*8], eax
imul eax, ecx, 0x68
imul ecx, dword [esi + 0x40], 0x68
lea edx, [ebx + eax + 0x58]
imul eax, dword [esi + 0x10], 0x68
mov dword [esi + 0x90], edx
lea eax, [ebx + eax + 0x58]
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
push 0x68
lea eax, [esi + 0x5d8]
push eax
push dword [esi + 0x90]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xe0]
shl edx, 2
lea eax, [ebx + eax*4 + 0x4d8]
lea ecx, [ebx + ecx*4 + 0x4e0]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
jmp 0x513929
mov eax, dword [esi + 0x20]
mov ebx, dword [esi + 8]
mov dword [ebx + ecx*8], eax
mov eax, dword [esi + 0x28]
mov dword [ebx + ecx*8 + 4], eax
imul eax, ecx, 0x68
lea eax, [ebx + eax + 0x58]
push 0x68
lea ecx, [esi + 0x5d8]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esi + 0x30]
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 8]
lea eax, [ebx + 2]
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0xe0]
mov dword [edx + eax*4 + 0x4dc], ecx
mov ecx, dword [esi + 0x60]
mov word [edx + 0x4d6], cx
mov ecx, dword [esi + 0x40]
cmp dword [esi + 0x10], ecx
jae 0x513979
movzx eax, di
inc ebx
nop
mov ecx, dword [edx + eax*4 + 0x4dc]
inc eax
cmp ebx, eax
mov dword [ecx + 0x4d0], edx
mov word [ecx + 0x4d4], ax
jne 0x513960
inc dword [esi + 0x54c]
lea edi, [esi + 0x128]
jmp 0x512c9c
mov eax, dword [esi + 0x544]
test eax, eax
je 0x5139b8
mov ecx, dword [esi + 0x548]
mov edx, dword [esi + 0x54c]
mov dword [esi + 0xc8], 1
mov dword [esi + 0xcc], ecx
mov dword [esi + 0xc0], edx
jmp 0x5139cc
mov dword [esi + 0xc8], 0
mov dword [esi + 0xc0], 0
movss xmm0, dword [0x7255e0]
xor edx, edx
movss dword [esi + 0x10c], xmm0
jmp 0x5139e4
mov dword [ecx], eax
xor eax, eax
cmp dword [esi + 0xc0], 0
je 0x51508a
cmp dword [esi + 0xc8], 0
je 0x513a30
test edx, edx
jne 0x513a30
mov ecx, eax
mov eax, dword [esi + 0xcc]
sub eax, 1
jb 0x513a1b
nop dword [eax + eax]
mov ecx, dword [ecx + 0x4d8]
sub eax, 1
jae 0x513a10
mov edi, ecx
xor edx, edx
xor eax, eax
mov dword [esi + 0xc8], 1
jmp 0x513a45
mov edi, edx
cmp dword [esi + 0xc8], 0
mov edx, dword [esi + 0xcc]
je 0x517ff6
movzx ecx, word [edi + 0x4d6]
cmp edx, ecx
mov ecx, edi
jb 0x513a81
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [ecx + 0x4d0]
test edi, edi
je reloc.kernel32.dll_QueryPerformanceFrequency
movzx edx, word [ecx + 0x4d4]
inc eax
cmp dx, word [edi + 0x4d6]
mov ecx, edi
jae 0x513a60
test eax, eax
je 0x513ab0
mov edi, dword [ecx + edx*4 + 0x4dc]
dec eax
mov dword [esi + 0xcc], 0
mov dword [esi + 0x2c], edi
je 0x513abc
mov edi, dword [esi + 0x2c]
nop
mov edi, dword [edi + 0x4d8]
dec eax
jne 0x513aa0
mov dword [esi + 0x2c], edi
jmp 0x513abc
lea eax, [edx + 1]
mov dword [esi + 0x2c], ecx
mov dword [esi + 0xcc], eax
imul eax, edx, 0x68
movsd xmm0, qword [esi + 0x4d0]
lea eax, [ecx + eax + 0x58]
mov ecx, dword [esi + 0x4cc]
mov dword [esi + 0xd0], eax
movaps xmmword [esi + 0x3e0], xmm0
mov dword [esi + 0x114], ecx
mov ecx, dword [esi + 0x5ac]
test ecx, ecx
je 0x514b40
mov ebx, dword [esi + 0x5a4]
mov edx, dword [esi + 0x2c]
shl ecx, 5
add eax, 0x58
mov dword [esi + 0x28], 0
mov dword [esi + 0x24], eax
add ecx, ebx
mov eax, ecx
mov dword [esi + 0x5c], ecx
jmp 0x513b3e
mov eax, dword [esi + 0xa0]
mov edx, dword [esi + 0x2c]
movlps qword [eax + edi - 8], xmm1
movss dword [eax + edi], xmm0
nop word [eax + eax]
mov eax, dword [esi + 0x5c]
add ebx, 0x20
cmp ebx, eax
je 0x514b4a
cmp byte [ebx], 0xd
jne 0x513b33
mov eax, dword [ebx + 8]
mov edi, dword [esi + 0xd0]
mov ecx, dword [ebx + 0xc]
xor ecx, dword [edi + 0x54]
xor eax, dword [edi + 0x50]
or eax, ecx
jne 0x513b30
mov eax, dword [ebx + 0x14]
mov edi, dword [ebx + 0x10]
mov dword [esi + 0x90], ebx
mov dword [esi + 0x10], eax
movzx eax, byte [ebx + 1]
mov dword [esi + 0x60], edi
lea ecx, [eax - 2]
cmp ecx, 2
jae 0x513c60
mov eax, dword [esi + 0x24]
mov edi, dword [eax]
mov al, 1
mov dword [esi + 0x28], eax
test edi, edi
je 0x513b30
mov eax, dword [esi + 0xd0]
mov eax, dword [eax + 0x5c]
mov dword [esi + 0xa0], eax
movzx eax, word [edi + 0xe2]
mov edx, 0xffffffff
mov dword [esi + 0x70], edi
lea ebx, [eax*8]
mov dword [esi + 0x20], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
test ebx, ebx
je 0x513c30
mov eax, dword [esi + 0x70]
mov dword [esi + 0x30], edx
mov ecx, dword [eax + edx*8 + 8]
mov edi, dword [eax + edx*8 + 0xc]
mov edx, dword [esi + 0x60]
xor eax, eax
mov dword [esi + 8], ecx
mov dword [esi + 0x40], edi
xor edi, dword [esi + 0x10]
mov ecx, dword [esi + 8]
xor ecx, edx
or ecx, edi
mov ecx, dword [esi + 0x10]
setne al
cmp edx, dword [esi + 8]
mov edx, dword [esi + 0x30]
sbb ecx, dword [esi + 0x40]
mov ecx, 0xff
cmovb eax, ecx
inc edx
add ebx, 0xfffffff8
cmp al, 1
je 0x513bc0
movzx eax, al
test eax, eax
je 0x513d55
mov eax, dword [esi + 0x5c]
mov edi, dword [esi + 0x70]
mov ebx, dword [esi + 0x90]
mov ecx, dword [esi + 0xa0]
test ecx, ecx
jne 0x513c4d
jmp 0x514062
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x5c]
mov ebx, dword [esi + 0x90]
mov edi, dword [esi + 0x70]
mov ecx, dword [esi + 0xa0]
test ecx, ecx
je 0x514062
mov edi, dword [edi + edx*4 + 0xe8]
dec ecx
mov dword [esi + 0xa0], ecx
jmp 0x513b98
movsd xmm1, qword [ebx + 0x18]
movss xmm0, dword [ebx + 4]
cmp eax, 1
jne 0x513e2c
mov eax, dword [esi + 0x24]
mov ecx, dword [eax]
test ecx, ecx
je 0x513b30
mov eax, dword [esi + 0xd0]
mov eax, dword [eax + 0x5c]
mov dword [esi + 0xe0], eax
movzx eax, word [ecx + 0xe2]
mov dword [esi + 0xa0], ecx
mov edx, 0xffffffff
mov edi, 0x58
lea ecx, [eax*8]
mov dword [esi + 0x20], eax
test ecx, ecx
je 0x513d30
mov eax, dword [esi + 0xa0]
mov dword [esi + 0x40], edi
mov dword [esi + 0x30], edx
mov ebx, dword [eax + edx*8 + 8]
mov eax, dword [eax + edx*8 + 0xc]
mov edx, dword [esi + 0x60]
mov dword [esi + 8], ebx
mov edi, eax
mov dword [esi + 0x70], eax
xor eax, eax
mov ebx, dword [esi + 8]
xor edi, dword [esi + 0x10]
xor ebx, edx
or ebx, edi
mov edi, dword [esi + 0x10]
mov ebx, dword [esi + 0x90]
setne al
cmp edx, dword [esi + 8]
mov edx, dword [esi + 0x30]
sbb edi, dword [esi + 0x70]
mov edi, 0xff
cmovb eax, edi
mov edi, dword [esi + 0x40]
inc edx
add ecx, 0xfffffff8
add edi, 0xc
cmp al, 1
je 0x513cb0
movzx eax, al
test eax, eax
je 0x513b14
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0xa0]
sub dword [esi + 0xe0], 1
jae 0x513d49
jmp 0x514062
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0xa0]
sub dword [esi + 0xe0], 1
jb 0x514062
mov ecx, dword [ecx + edx*4 + 0xe8]
jmp 0x513c8f
mov ecx, edx
mov edx, dword [esi + 0xa0]
mov eax, dword [esi + 0x70]
mov byte [esi + 0x670], 0
test edx, edx
je 0x513f1f
mov ecx, dword [eax + ecx*4 + 0xe8]
dec edx
je 0x513d91
nop dword [eax]
movzx eax, word [ecx + 0xe2]
mov ecx, dword [ecx + eax*4 + 0xe8]
dec edx
jne 0x513d80
movzx eax, word [ecx + 0xe2]
mov dword [esi + 0x2a0], ecx
mov dword [esi + 0x2a4], 0
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
lea ecx, [esi + 0x128]
lea edx, [esi + 0x2a0]
dec eax
mov dword [esi + 0x2a8], eax
lea eax, [esi + 0x670]
push eax
call fcn.00528580
add esp, 4
mov eax, dword [esi + 0x128]
mov ebx, dword [esi + 0x140]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x130]
movsd xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [esi + 0x5e0], eax
movsd qword [esi + 0x5d8], xmm0
mov eax, dword [esi + 0x148]
movzx ecx, word [ebx + 0xe2]
cmp eax, ecx
mov ecx, dword [esi + 0x12c]
jae 0x513f6b
mov edx, ebx
jmp 0x513fa0
mov eax, dword [esi + 0x24]
mov edi, dword [eax]
test edi, edi
je 0x5140af
mov eax, dword [esi + 0xd0]
mov eax, dword [eax + 0x5c]
mov dword [esi + 0x20], eax
movzx eax, word [edi + 0xe2]
mov dword [esi + 0xa0], edi
mov ecx, 0xffffffff
mov edi, 0x58
lea edx, [eax*8]
mov dword [esi + 0x28], eax
nop word cs:[eax + eax]
test edx, edx
je 0x513ee0
mov eax, dword [esi + 0xa0]
mov dword [esi + 0x40], edi
mov dword [esi + 0x30], ecx
mov ebx, dword [eax + ecx*8 + 8]
mov eax, dword [eax + ecx*8 + 0xc]
mov ecx, dword [esi + 0x60]
mov dword [esi + 8], ebx
mov edi, eax
mov dword [esi + 0x70], eax
xor eax, eax
mov ebx, dword [esi + 8]
xor edi, dword [esi + 0x10]
xor ebx, ecx
or ebx, edi
mov edi, dword [esi + 0x40]
mov ebx, dword [esi + 0x90]
setne al
cmp ecx, dword [esi + 8]
mov ecx, dword [esi + 0x10]
sbb ecx, dword [esi + 0x70]
mov ecx, 0xff
cmovb eax, ecx
mov ecx, dword [esi + 0x30]
add edx, 0xfffffff8
add edi, 0xc
inc ecx
cmp al, 1
je 0x513e70
movzx eax, al
test eax, eax
je 0x513f07
jmp 0x513ee3
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 0x2c]
mov edi, dword [esi + 0xa0]
sub eax, 1
jb 0x51406a
mov edi, dword [edi + ecx*4 + 0xe8]
mov dword [esi + 0x20], eax
jmp 0x513e45
mov eax, dword [esi + 0xa0]
mov edx, dword [esi + 0x2c]
movlps qword [eax + edi - 8], xmm1
movss dword [eax + edi], xmm0
jmp 0x514135
mov dword [esi + 0x128], eax
lea eax, [esi + 0x670]
mov dword [esi + 0x12c], 0
mov dword [esi + 0x130], ecx
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
lea ecx, [esi + 0x338]
lea edx, [esi + 0x128]
push eax
call fcn.00528580
add esp, 4
jmp 0x514005
mov edi, dword [esi + 0x144]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, dword [ebx + 0x58]
test edx, edx
je 0x513f9c
movzx eax, word [ebx + 0xe0]
inc edi
mov ebx, edx
cmp ax, word [edx + 0xe2]
jae 0x513f80
jmp 0x513fa0
xor edx, edx
mov eax, edi
movsd xmm0, qword [edx + eax*8]
mov dword [edx + eax*8 + 4], ecx
mov ecx, dword [esi + 0x10]
mov dword [edx + eax*8], ecx
lea eax, [eax + eax*2]
mov ecx, dword [edx + eax*4 + 0x64]
mov dword [esi + 0x130], ecx
mov ecx, dword [esi + 0x5e0]
movsd xmm1, qword [edx + eax*4 + 0x5c]
movsd qword [esi + 0x128], xmm1
mov dword [edx + eax*4 + 0x64], ecx
lea ecx, [esi + 0x340]
movsd xmm1, qword [esi + 0x5d8]
movsd qword [edx + eax*4 + 0x5c], xmm1
mov eax, dword [esi + 0x130]
movsd xmm1, qword [esi + 0x128]
mov dword [ecx + 8], eax
movsd qword [ecx], xmm1
movsd qword [esi + 0x338], xmm0
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x2c]
mov ebx, dword [esi + 0x90]
dec dword [ecx + 8]
cmp byte [esi + 0x670], 0
je 0x513b30
mov eax, dword [ecx]
test eax, eax
je 0x517f68
mov edi, ecx
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x517f9a
mov edx, dword [eax + 0xe8]
dec ecx
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [edx + 0x58], 0
push eax
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [esi + 0x2c]
jmp 0x513b30
mov edx, dword [esi + 0x2c]
jmp 0x513b33
test edi, edi
je 0x5140af
movzx eax, word [edi + 0xe2]
cmp eax, 0xb
jae 0x51413f
mov dword [esi + 8], eax
lea eax, [ecx + 1]
mov dword [esi + 0x30], ecx
mov dword [esi + 0x90], eax
mov eax, dword [esi + 8]
cmp dword [esi + 0x90], eax
lea eax, [edi + ecx*8]
jbe 0x514159
mov ecx, dword [esi + 0x60]
mov dword [eax], ecx
mov ecx, dword [esi + 0x10]
mov dword [eax + 4], ecx
jmp 0x5141e2
movaps xmmword [esi + 0x70], xmm1
movss dword [esi + 0x40], xmm0
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x5140db
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x517fcc
mov dword [0x919820], eax
push 0xe8
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x517fcc
mov ecx, dword [esi + 0x60]
mov dword [eax + 0x58], 0
mov word [eax + 0xe2], 1
movaps xmm0, xmmword [esi + 0x70]
movss xmm1, dword [esi + 0x40]
mov edx, dword [esi + 0x2c]
mov dword [eax], ecx
mov ecx, dword [esi + 0x10]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x24]
movlps qword [eax + 0x5c], xmm0
movss dword [eax + 0x64], xmm1
mov dword [ecx], eax
mov dword [ecx + 4], 0
mov eax, 1
mov dword [ecx + 8], eax
mov al, 1
mov dword [esi + 0x28], eax
jmp 0x513b30
mov bl, 1
cmp ecx, 5
jae 0x514203
mov dword [esi + 0xe0], 4
jmp 0x514231
mov ecx, dword [esi + 0x90]
lea ecx, [edi + ecx*8]
mov edi, dword [esi + 8]
sub edi, dword [esi + 0x30]
lea edx, [edi*8]
push edx
push eax
push ecx
movss dword [esi + 0x40], xmm0
movaps xmmword [esi + 0x70], xmm1
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0xa0]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x30]
shl edi, 2
mov dword [eax + edx*8 + 4], ecx
mov eax, dword [esi + 0xa0]
mov ecx, dword [esi + 0x60]
mov dword [eax + edx*8], ecx
mov ecx, dword [esi + 0xa0]
lea eax, [edx + edx*2]
mov edx, dword [esi + 0xa0]
lea eax, [ecx + eax*4 + 0x5c]
mov ecx, dword [esi + 0x90]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*4 + 0x5c]
lea edx, [edi + edi*2]
mov edi, dword [esi + 0xa0]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
movaps xmm1, xmmword [esi + 0x70]
movss xmm0, dword [esi + 0x40]
mov edx, dword [esi + 0x2c]
add esp, 0xc
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0x30]
lea eax, [eax + eax*2]
inc ecx
movlps qword [edi + eax*4 + 0x5c], xmm1
movss dword [edi + eax*4 + 0x64], xmm0
mov word [edi + 0xe2], cx
jmp 0x5149ab
je 0x51421a
cmp ecx, 6
jne 0x514222
xor ebx, ebx
xor ecx, ecx
mov dword [esi + 0xe0], 5
jmp 0x514231
mov dword [esi + 0xe0], ecx
jmp 0x514231
add ecx, 0xfffffff9
mov dword [esi + 0xe0], 6
xor ebx, ebx
mov dword [esi + 0x30], ecx
movaps xmmword [esi + 0x70], xmm1
movss dword [esi + 0x40], xmm0
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x514260
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x5182f3
mov dword [0x919820], eax
push 0xe8
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x5182f3
mov edx, dword [esi + 0xe0]
mov dword [eax + 0x58], 0
mov word [eax + 0xe2], 0
mov dword [esi + 0xf8], ebx
mov dword [esi + 8], eax
movzx ecx, word [edi + 0xe2]
mov ebx, edx
mov dword [esi + 0xe0], edx
not ebx
mov dword [esi + 0xc4], ecx
add ebx, ecx
mov word [eax + 0xe2], bx
cmp ebx, 0xc
mov ecx, dword [edi + edx*8]
mov dword [esi + 0x28], ecx
mov ecx, dword [edi + edx*8 + 4]
mov dword [esi + 0x20], ecx
lea ecx, [edx + edx*2]
mov edx, dword [edi + ecx*4 + 0x64]
mov dword [esi + 0x130], edx
movsd xmm0, qword [edi + ecx*4 + 0x5c]
movsd qword [esi + 0x128], xmm0
jae 0x518343
mov eax, dword [esi + 0xe0]
mov ecx, dword [esi + 0xc4]
lea edi, [eax + 1]
sub ecx, edi
cmp ecx, ebx
jne CoCreateInstance
mov eax, dword [esi + 0xa0]
lea ecx, [ebx*8]
lea edx, [eax + 0x5c]
lea eax, [eax + edi*8]
mov dword [esi + 0xc4], edx
push ecx
push eax
push dword [esi + 8]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [edi + edi*2]
mov ecx, dword [esi + 0xc4]
mov edi, dword [esi + 8]
shl ebx, 2
lea edx, [ebx + ebx*2]
lea eax, [ecx + eax*4]
lea ecx, [edi + 0x5c]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0xe0]
mov ecx, dword [esi + 0xa0]
cmp byte [esi + 0xf8], 0
mov edx, dword [esi + 0x30]
mov word [ecx + 0xe2], ax
cmovne edi, ecx
lea ecx, [edx + 1]
movsd xmm0, qword [esi + 0x128]
mov eax, dword [esi + 0x130]
movsd qword [esi + 0x338], xmm0
mov dword [esi + 0x340], eax
movzx eax, word [edi + 0xe2]
movzx ebx, ax
mov dword [esi + 0xe0], eax
lea eax, [edi + edx*8]
cmp ecx, ebx
jbe 0x5143ad
mov ecx, dword [esi + 0x60]
mov ebx, dword [esi + 0x10]
mov dword [eax], ecx
mov dword [eax + 4], ebx
mov eax, edx
jmp 0x514402
sub ebx, edx
mov dword [esi + 0xc4], ecx
lea ecx, [edi + ecx*8]
lea edx, [ebx*8]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x30]
shl ebx, 2
lea edx, [ebx + ebx*2]
mov dword [edi + ecx*8 + 4], eax
mov eax, dword [esi + 0x60]
mov dword [edi + ecx*8], eax
lea eax, [ecx + ecx*2]
mov ecx, dword [esi + 0xc4]
lea eax, [edi + eax*4 + 0x5c]
lea ecx, [ecx + ecx*2]
lea ecx, [edi + ecx*4 + 0x5c]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [esi + 0x30]
add esp, 0xc
mov ecx, dword [esi + 0xe0]
movss xmm0, dword [esi + 0x40]
movaps xmm1, xmmword [esi + 0x70]
lea eax, [eax + eax*2]
mov ebx, dword [esi + 0x28]
inc ecx
movlps qword [edi + eax*4 + 0x5c], xmm1
movss dword [edi + eax*4 + 0x64], xmm0
mov word [edi + 0xe2], cx
mov ecx, dword [esi + 0xa0]
mov edi, dword [esi + 8]
mov eax, dword [esi + 0x340]
movsd xmm0, qword [esi + 0x338]
mov dword [esi + 0x2a8], eax
movsd qword [esi + 0x2a0], xmm0
mov eax, dword [ecx + 0x58]
test eax, eax
je 0x5148ab
mov edx, dword [esi + 0x20]
mov dword [esi + 0x11c], 0
mov dword [esi + 0xe0], edi
mov dword [esi + 0x70], ebx
mov dword [esi + 0xc4], edx
jmp 0x5144c5
mov eax, dword [esi + 0x5e0]
movsd xmm0, qword [esi + 0x5d8]
mov ecx, dword [esi + 0xa0]
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x28]
mov edx, dword [esi + 0x20]
mov dword [esi + 0x2a8], eax
movsd qword [esi + 0x2a0], xmm0
mov dword [esi + 0xe0], edi
mov dword [esi + 0x70], ebx
mov dword [esi + 0xc4], edx
mov eax, dword [ecx + 0x58]
test eax, eax
je 0x5148b8
movzx ebx, word [eax + 0xe2]
movzx edi, word [ecx + 0xe0]
mov dword [esi + 0xa0], eax
movzx edx, di
cmp ebx, 0xb
mov dword [esi + 0x40], ebx
jb 0x5149b7
cmp di, 5
jae 0x514510
mov al, 1
mov dword [esi + 0xf8], 4
mov dword [esi + 0x110], eax
jmp 0x514560
je 0x514532
movzx eax, di
cmp eax, 6
jne 0x514542
xor edx, edx
mov dword [esi + 0x110], 0
mov dword [esi + 0xf8], 5
jmp 0x514560
mov al, 1
mov dword [esi + 0xf8], edx
mov dword [esi + 0x110], eax
jmp 0x514560
add edx, 0xfffffff9
mov dword [esi + 0xf8], 6
mov dword [esi + 0x110], 0
nop dword [eax]
mov dword [esi + 0x60], edx
mov edi, dword [esi + 0xa0]
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x51458c
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518124
mov dword [0x919820], eax
push 0x118
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518124
mov ebx, dword [esi + 0xf8]
mov dword [eax + 0x58], 0
mov word [eax + 0xe2], 0
mov edx, eax
mov dword [esi + 0x10], eax
mov ecx, edi
movzx eax, word [edi + 0xe2]
mov dword [esi + 8], edx
mov edi, ebx
not edi
add edi, eax
mov word [edx + 0xe2], di
cmp edi, 0xc
mov edx, dword [ecx + ebx*8]
mov dword [esi + 0x28], edx
mov edx, dword [ecx + ebx*8 + 4]
mov dword [esi + 0x20], edx
lea edx, [ebx + ebx*2]
mov dword [esi + 0x30], edx
mov edx, dword [esi + 0x30]
mov edx, dword [ecx + edx*4 + 0x64]
mov dword [esi + 0x130], edx
mov edx, dword [esi + 0x30]
movsd xmm0, qword [ecx + edx*4 + 0x5c]
movsd qword [esi + 0x128], xmm0
jae 0x5181bb
lea ecx, [ebx + 1]
sub eax, ecx
cmp eax, edi
jne 0x51814e
mov eax, dword [esi + 0xa0]
mov dword [esi + 0x30], ecx
lea edx, [eax + 0x5c]
lea eax, [eax + ecx*8]
lea ecx, [edi*8]
mov dword [esi + 0x324], edx
push ecx
push eax
push dword [esi + 8]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x324]
shl edi, 2
lea edx, [edi + edi*2]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
mov ecx, dword [esi + 0x10]
add ecx, 0x5c
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0xa0]
mov ecx, dword [esi + 8]
mov word [eax + 0xe2], bx
movsd xmm0, qword [esi + 0x128]
mov eax, dword [esi + 0x130]
movsd qword [esi + 0x338], xmm0
mov dword [esi + 0x340], eax
movzx edi, word [ecx + 0xe2]
lea ecx, [edi + 1]
cmp edi, 0xc
jae 0x51819a
mov edx, dword [esi + 0x40]
sub edx, ebx
cmp edx, ecx
jne 0x518174
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xa0]
mov ebx, dword [esi + 0x30]
inc dword [esi + 0x11c]
shl edx, 2
add eax, 0xe8
lea ecx, [ecx + ebx*4 + 0xe8]
push edx
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor eax, eax
nop word cs:[eax + eax]
mov ebx, dword [esi + 8]
mov ecx, eax
cmp eax, edi
mov edx, dword [ebx + eax*4 + 0xe8]
adc eax, 0
cmp ecx, edi
mov dword [edx + 0x58], ebx
mov word [edx + 0xe0], cx
jae 0x514713
cmp eax, edi
jbe 0x5146f0
cmp byte [esi + 0x110], 0
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x340]
movsd xmm0, qword [esi + 0x338]
mov edx, dword [esi + 0x60]
cmovne ebx, dword [esi + 0xa0]
mov dword [esi + 0x5e0], eax
movsd qword [esi + 0x5d8], xmm0
lea ecx, [edx + 1]
mov dword [esi + 0x40], ecx
movzx edi, word [ebx + 0xe2]
lea eax, [ebx + edx*8]
mov dword [esi + 0x10], ebx
cmp ecx, edi
mov dword [esi + 0x30], edi
jbe 0x514790
mov ecx, dword [esi + 0x70]
mov ebx, dword [esi + 0xc4]
mov dword [eax], ecx
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x2a8]
movsd xmm0, qword [esi + 0x2a0]
mov dword [esi + 0x130], eax
movsd qword [esi + 0x128], xmm0
jmp 0x514807
mov edi, dword [esi + 0x30]
lea ecx, [ebx + ecx*8]
sub edi, edx
lea edx, [edi*8]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0xc4]
shl edi, 2
lea edx, [edi + edi*2]
mov edi, dword [esi + 0x30]
mov dword [ebx + eax*8 + 4], ecx
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x70]
mov dword [ebx + eax*8], ecx
mov ecx, dword [esi + 0x40]
mov eax, dword [esi + 0x2a8]
movsd xmm0, qword [esi + 0x2a0]
lea ecx, [ecx + ecx*2]
mov dword [esi + 0x130], eax
mov eax, dword [esi + 0x60]
movsd qword [esi + 0x128], xmm0
lea ecx, [ebx + ecx*4 + 0x5c]
lea eax, [eax + eax*2]
lea eax, [ebx + eax*4 + 0x5c]
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esi + 0x60]
add esp, 0xc
lea ecx, [edx + edx*2]
mov ebx, dword [esi + 0x10]
inc edi
mov dword [esi + 0x70], ecx
mov ecx, dword [esi + 0x130]
mov eax, dword [esi + 0x70]
mov dword [ebx + eax*4 + 0x64], ecx
mov ecx, dword [esi + 0x70]
mov eax, dword [esi + 0x30]
movsd xmm0, qword [esi + 0x128]
movsd qword [ebx + ecx*4 + 0x5c], xmm0
lea ecx, [eax + 2]
lea eax, [edx + 2]
cmp eax, ecx
jae 0x514872
mov dword [esi + 0x70], ecx
lea ecx, [ebx + 0xe8]
lea eax, [ecx + eax*4]
mov dword [esi + 0xc4], eax
mov eax, dword [esi + 0x40]
lea ecx, [ecx + eax*4]
mov eax, dword [esi + 0x30]
sub eax, edx
shl eax, 2
push eax
push ecx
push dword [esi + 0xc4]
call sub.VCRUNTIME140.dll_memmove
mov ecx, dword [esi + 0x70]
mov edx, dword [esi + 0x60]
add esp, 0xc
mov eax, dword [esi + 0xe0]
cmp dword [esi + 0x40], ecx
mov dword [ebx + edx*4 + 0xec], eax
mov word [ebx + 0xe2], di
jae 0x514480
nop
mov eax, dword [ebx + edx*4 + 0xec]
inc edx
cmp edi, edx
mov dword [eax + 0x58], ebx
mov word [eax + 0xe0], dx
jne 0x514890
jmp 0x514480
mov edx, dword [esi + 0x20]
mov dword [esi + 0x11c], 0
mov eax, dword [esi + 0x24]
mov dword [esi + 8], edi
mov dword [esi + 0x20], edx
mov dword [esi + 0x28], ebx
mov edi, dword [eax]
test edi, edi
cmovne edi, eax
je 0x5183e8
mov eax, dword [edi + 4]
mov ebx, dword [edi]
mov dword [esi + 0x10], eax
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x5148fc
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518366
mov dword [0x919820], eax
push 0x118
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518366
mov edx, dword [esi + 0x10]
mov dword [eax + 0x58], 0
mov word [eax + 0xe2], 0
mov dword [eax + 0xe8], ebx
mov dword [ebx + 0x58], eax
mov word [ebx + 0xe0], 0
mov dword [edi], eax
cmp edx, dword [esi + 0x11c]
lea ecx, [edx + 1]
mov dword [edi + 4], ecx
jne 0x518384
movzx ecx, word [eax + 0xe2]
mov ebx, dword [esi + 0x90]
mov edi, dword [esi + 0x20]
cmp ecx, 0xa
ja GetConsoleMode
lea edx, [ecx + 1]
mov word [eax + 0xe2], dx
mov edx, dword [esi + 0x28]
mov dword [eax + ecx*8 + 4], edi
mov dword [eax + ecx*8], edx
lea edx, [ecx + ecx*2]
mov edi, dword [esi + 0x2a8]
mov dword [eax + edx*4 + 0x64], edi
movsd xmm0, qword [esi + 0x2a0]
movsd qword [eax + edx*4 + 0x5c], xmm0
mov edx, dword [esi + 8]
mov dword [eax + ecx*4 + 0xec], edx
inc ecx
mov dword [edx + 0x58], eax
mov word [edx + 0xe0], cx
mov edx, dword [esi + 0x2c]
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 8]
inc eax
jmp 0x514132
lea eax, [ebx + 1]
lea ecx, [edx + 1]
cmp bx, di
mov dword [esi + 0x60], edx
mov dword [esi + 8], eax
mov dword [esi + 0x10], ecx
jbe 0x514a85
mov eax, dword [esi + 0xa0]
lea ecx, [eax + edx*8]
mov dword [esi + 0x20], ecx
mov ecx, dword [esi + 0x10]
lea eax, [eax + ecx*8]
mov ecx, ebx
mov ebx, edx
sub ecx, edx
lea edx, [ecx*8]
mov dword [esi + 0x30], ecx
push edx
push dword [esi + 0x20]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 0xc4]
mov edx, dword [esi + 0xa0]
mov dword [edx + ebx*8 + 4], eax
mov eax, dword [esi + 0x70]
mov dword [edx + ebx*8], eax
lea eax, [ebx + ebx*2]
mov dword [esi + 0x70], eax
lea eax, [edx + eax*4 + 0x5c]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x10]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x30]
lea ecx, [edx + ecx*4 + 0x5c]
shl eax, 2
lea edx, [eax + eax*2]
mov dword [esi + 0x30], eax
push edx
push dword [esi + 0x20]
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
movsd xmm0, qword [esi + 0x2a0]
mov ecx, dword [esi + 0xa0]
mov edx, dword [esi + 0x70]
movsd qword [ecx + edx*4 + 0x5c], xmm0
mov eax, dword [esi + 0x2a8]
mov dword [ecx + edx*4 + 0x64], eax
mov eax, dword [esi + 0x10]
lea eax, [ecx + eax*4 + 0xe8]
lea ecx, [ecx + ebx*4 + 0xf0]
push dword [esi + 0x30]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
jmp 0x514acb
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x70]
mov ebx, dword [esi + 0xa0]
mov dword [ecx + edx*8], eax
mov eax, dword [esi + 0xc4]
mov dword [ecx + edx*8 + 4], eax
lea eax, [edx + edx*2]
mov dword [esi + 0x30], eax
mov ecx, dword [esi + 0x2a8]
mov eax, dword [esi + 0x30]
mov dword [ebx + eax*4 + 0x64], ecx
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0xa0]
movsd xmm0, qword [esi + 0x2a0]
movsd qword [ecx + eax*4 + 0x5c], xmm0
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0xe0]
mov ebx, dword [esi + 0x60]
mov edx, dword [esi + 0x2c]
add eax, 2
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0xa0]
mov dword [eax + ebx*4 + 0xec], ecx
mov ebx, dword [esi + 0x30]
mov ecx, dword [esi + 8]
cmp dword [esi + 0x10], ebx
mov ebx, dword [esi + 0x90]
mov word [eax + 0xe2], cx
jae 0x5149ab
inc dword [esi + 0x40]
mov ecx, eax
movzx eax, di
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edi, ecx
mov ecx, dword [ecx + eax*4 + 0xec]
inc eax
cmp dword [esi + 0x40], eax
mov dword [ecx + 0x58], edi
mov word [ecx + 0xe0], ax
mov ecx, edi
jne 0x514b20
jmp 0x5149ab
mov edx, dword [esi + 0x2c]
mov dword [esi + 0x28], 0
mov ecx, dword [esi + 0xd0]
dec dword [esi + 0xc0]
mov eax, 2
mov edi, dword [ecx + 0x60]
cmp edi, 2
jb 0x5139e0
mov eax, dword [ecx + 0x58]
mov dword [esi + 0x60], edi
test eax, eax
je 0x514ba9
mov ecx, dword [ecx + 0x5c]
mov dword [esi + 0x12c], 0
mov dword [esi + 0x130], eax
mov dword [esi + 0x134], ecx
mov dword [esi + 0x13c], 0
mov dword [esi + 0x140], eax
mov dword [esi + 0x144], ecx
mov eax, 1
mov ecx, edi
jmp 0x514bad
xor eax, eax
xor ecx, ecx
xorps xmm0, xmm0
mov dword [esi + 0x128], eax
mov dword [esi + 0x138], eax
mov dword [esi + 0x148], ecx
mov dword [esi + 0x8e8], 0x13
movaps xmmword [esi + 0x10], xmm0
xorps xmm0, xmm0
movss dword [esi + 8], xmm0
nop dword [eax + eax]
lea ecx, [esi + 0x128]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
call fcn.0052a5d0
test eax, eax
je 0x514c20
movss xmm0, dword [esi + 8]
movsd xmm2, qword [eax]
movaps xmm1, xmmword [esi + 0x10]
addss xmm0, dword [eax + 8]
addps xmm1, xmm2
movaps xmmword [esi + 0x10], xmm1
movss dword [esi + 8], xmm0
jmp 0x514be0
movss xmm0, dword [esi + 0x60]
mov eax, dword [esi + 0xd0]
movsd xmm1, qword [0x725628]
movaps xmm2, xmmword [esi + 0x10]
orpd xmm0, xmmword [0x7259c0]
mov ecx, dword [eax + 0x58]
subsd xmm0, xmm1
test ecx, ecx
je 0x514c83
mov edx, dword [eax + 0x5c]
mov eax, dword [eax + 0x60]
mov dword [esi + 0x12c], 0
mov dword [esi + 0x130], ecx
mov dword [esi + 0x134], edx
mov dword [esi + 0x13c], 0
mov dword [esi + 0x140], ecx
mov ecx, 1
mov dword [esi + 0x144], edx
jmp 0x514c87
xor ecx, ecx
xor eax, eax
movss xmm1, dword [0x7255e0]
cvtsd2ss xmm0, xmm0
mov dword [esi + 0x128], ecx
mov dword [esi + 0x138], ecx
mov dword [esi + 0x148], eax
divss xmm1, xmm0
movaps xmm0, xmm1
movaps xmmword [esi + 0xa0], xmm1
shufps xmm0, xmm1, 0
mulps xmm2, xmm0
movaps xmmword [esi + 0x70], xmm0
xorps xmm0, xmm0
movaps xmmword [esi + 0x10], xmm2
shufps xmm2, xmm2, 0x55
movaps xmmword [esi + 0x30], xmm0
xorps xmm0, xmm0
movaps xmmword [esi + 0x90], xmm2
movss dword [esi + 0x60], xmm0
nop dword [eax]
lea ecx, [esi + 0x128]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
call fcn.0052a5d0
test eax, eax
je 0x514d80
movaps xmm0, xmmword [esi + 0x10]
movaps xmm1, xmmword [esi + 0x90]
subss xmm0, dword [eax]
subss xmm1, dword [eax + 4]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
sub esp, 8
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
mov dword [esi + 0x40], eax
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
mov eax, dword [esi + 0x40]
add esp, 8
fstp dword [esi + 0x334]
movss xmm0, dword [esi + 0x60]
movaps xmm1, xmmword [esi + 0x10]
addss xmm0, dword [esi + 0x334]
movss dword [esi + 0x60], xmm0
movsd xmm0, qword [eax]
subps xmm1, xmm0
movaps xmm0, xmmword [esi + 0x30]
andps xmm1, xmmword [0x725610]
addps xmm0, xmm1
movaps xmmword [esi + 0x30], xmm0
jmp 0x514ce0
mov eax, dword [esi + 0xd0]
mov ecx, dword [eax + 0x58]
test ecx, ecx
je 0x514dc6
mov edx, dword [eax + 0x5c]
mov eax, dword [eax + 0x60]
mov dword [esi + 0x12c], 0
mov dword [esi + 0x130], ecx
mov dword [esi + 0x134], edx
mov dword [esi + 0x13c], 0
mov dword [esi + 0x140], ecx
mov ecx, 1
mov dword [esi + 0x144], edx
jmp 0x514dca
xor ecx, ecx
xor eax, eax
mov dword [esi + 0x128], ecx
mov dword [esi + 0x138], ecx
lea ecx, [esi + 0x128]
mov dword [esi + 0x148], eax
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
call fcn.0052a5d0
test eax, eax
je timeEndPeriod
movaps xmm0, xmmword [esi + 0xa0]
movss xmm1, dword [esi + 8]
mulss xmm1, xmm0
movss dword [esi + 8], xmm1
movaps xmm1, xmmword [esi + 0x70]
mulps xmm1, xmmword [esi + 0x30]
movaps xmmword [esi + 0x70], xmm1
movss xmm1, dword [esi + 0x60]
mulss xmm1, xmm0
movss xmm0, dword [eax]
movss dword [esi + 0x60], xmm1
movaps xmm1, xmmword [esi + 0x10]
subss xmm1, xmm0
movaps xmm0, xmmword [esi + 0x90]
cvtss2sd xmm1, xmm1
subss xmm0, dword [eax + 4]
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 dword [esi + 0x330]
mov ecx, dword [esi + 0xd0]
movd xmm5, dword [esi + 0x330]
cmp dword [ecx], 2
jne 0x514f10
xor eax, eax
cmp dword [esi + 0x114], 0
movsd xmm0, qword [esi + 0x100]
mov edx, dword [esi + 0x2c]
je 0x5139e4
cmp dword [ecx + 0x60], 2
movss xmm1, dword [esi + 8]
movapd xmm2, xmmword [esi + 0x10]
movapd xmm3, xmmword [esi + 0x70]
movss xmm4, dword [esi + 0x60]
mov al, 2
jne 0x515041
mov eax, dword [ecx + 0x58]
movd dword [esi + 0x30], xmm5
test eax, eax
je 0x514f7a
mov ecx, dword [ecx + 0x5c]
mov dword [esi + 0x12c], 0
mov dword [esi + 0x130], eax
mov dword [esi + 0x134], ecx
mov dword [esi + 0x13c], 0
mov dword [esi + 0x140], eax
mov dword [esi + 0x144], ecx
mov ecx, 2
mov eax, 1
jmp 0x514f7e
mov eax, dword [ecx + 0x48]
movss xmm2, dword [esi + 0x60]
mov edx, dword [esi + 0x2c]
mov dword [ecx + 0x1c], eax
movsd xmm0, qword [ecx + 0x40]
movsd qword [ecx + 0x14], xmm0
movsd xmm1, qword [ecx + 0x38]
movsd xmm0, qword [ecx + 0x30]
movsd qword [ecx + 0xc], xmm1
movaps xmm1, xmmword [esi + 0x70]
movsd qword [ecx + 4], xmm0
mov dword [ecx], 1
unpcklpd xmm1, xmmword [esi + 0x10]
movups xmmword [ecx + 0x30], xmm1
movss xmm1, dword [esi + 8]
movss dword [ecx + 0x40], xmm2
movss dword [ecx + 0x44], xmm1
movd dword [ecx + 0x48], xmm5
xor eax, eax
test byte [esi + 0x28], 1
mov ecx, dword [esi + 0xd0]
je 0x5139e4
jmp 0x5139e0
xor eax, eax
xor ecx, ecx
mov dword [esi + 0x128], eax
mov dword [esi + 0x138], eax
mov dword [esi + 0x148], ecx
lea ecx, [esi + 0x128]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
call fcn.0052a5d0
test eax, eax
je RtlNtStatusToDosError
movsd xmm0, qword [eax]
lea ecx, [esi + 0x128]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
movaps xmmword [esi + 0x40], xmm0
call fcn.0052a5d0
test eax, eax
je SetThreadErrorMode
movsd xmm0, qword [eax]
movaps xmm1, xmmword [esi + 0x40]
mov dl, 2
movapd xmm2, xmmword [esi + 0x10]
movapd xmm3, xmmword [esi + 0x70]
movss xmm4, dword [esi + 0x60]
movd xmm5, dword [esi + 0x30]
subps xmm1, xmm0
andps xmm1, xmmword [0x725610]
movaps xmm0, xmm1
mulps xmm0, xmmword [0x7264a0]
shufps xmm0, xmm0, 0xe1
cmpltps xmm0, xmm1
movss xmm1, dword [esi + 8]
unpcklps xmm0, xmm0
movmskpd ecx, xmm0
movsd xmm0, qword [esi + 0x100]
mov eax, ecx
shr al, 1
sub dl, al
test cl, 1
mov ecx, 0
movzx eax, dl
mov edx, dword [esi + 0x2c]
cmovne eax, ecx
mov ecx, dword [esi + 0xd0]
movaps xmm6, xmmword [esi + 0x3e0]
mov dword [ecx], 0
movsd qword [ecx + 0x20], xmm0
movlps qword [ecx + 0x28], xmm6
movlpd qword [ecx + 0x30], xmm3
movlpd qword [ecx + 0x38], xmm2
movss dword [ecx + 0x40], xmm4
movss dword [ecx + 0x44], xmm1
movd dword [ecx + 0x48], xmm5
mov byte [ecx + 0x4c], al
xor eax, eax
test byte [esi + 0x28], 1
mov ecx, dword [esi + 0xd0]
je 0x5139e4
jmp 0x5139e0
lea eax, [esi + 0x460]
push 0x98
push eax
lea eax, [esi + 0x128]
push eax
call sub.VCRUNTIME140.dll_memcpy
movsd xmm3, qword [esi + 0x100]
add esp, 0xc
movsd qword [esi + 0x160], xmm3
mov dword [esi + 0x1b4], 0
mov ecx, dword [esi + 0x5ac]
mov ebx, dword [esi + 0x5a4]
xor edx, edx
movsd xmm0, qword [esi + 0x18c]
mov eax, dword [esi + 0x188]
mov dword [esi + 0xc0], ecx
mov ecx, ecx
mov dword [esi + 0x20], ebx
movaps xmmword [esi + 0x60], xmm0
movsd xmm0, qword [esi + 0x188]
mov dword [esi + 8], eax
shl ecx, 5
lea edi, [ebx + ecx]
mov dword [esi + 0x28], ecx
mov ecx, ebx
mov dword [esi + 0x24], edi
movsd qword [esi + 0x194], xmm0
mov eax, dword [esi + 0x190]
mov dword [esi + 0x19c], eax
jmp 0x51512d
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x188], 0
cmp ecx, edi
je 0x515501
mov eax, ecx
add ecx, 0x20
mov dword [esi + 0x10], ecx
movzx ecx, byte [eax]
cmp ecx, 7
je 0x515120
cmp ecx, 5
je 0x51525d
cmp ecx, 6
mov ecx, dword [esi + 0x10]
jne 0x51512d
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
movq xmm5, qword [eax + 8]
movzx ebx, ch
test cl, cl
mov byte [esi + 0x30], cl
mov byte [esi + 0x90], ch
mov dword [esi + 0x40], ebx
movzx ebx, byte [eax + 3]
mov eax, dword [eax + 4]
mov dword [esi + 0x188], 1
movq qword [esi + 0x18c], xmm5
mov dword [esi + 0x194], 1
movq qword [esi + 0x198], xmm5
je 0x515377
cmp dword [esi + 0x144], 0
je 0x5151b6
mov dword [esi + 0x144], 0
mov dword [esi + 0x140], 0
mov dword [esi + 0x1a0], 1
movq qword [esi + 0x1a4], xmm5
mov dword [esi + 0x12c], 0
mov dword [esi + 0x128], 1
movsd qword [esi + 0x130], xmm3
mov byte [esi + 0x1bd], 0
cmp edx, dword [esi + 0x1b0]
jne 0x51522d
lea ecx, [esi + 0x1ac]
movdqa xmmword [esi + 0x70], xmm5
mov dword [esi + 0x8e8], 0x18
call fcn.00486190
mov edx, dword [esi + 0x1b4]
movsd xmm3, qword [esi + 0x100]
mov edi, dword [esi + 0x24]
movdqa xmm5, xmmword [esi + 0x70]
lea ecx, [edx + edx*2]
mov eax, dword [esi + 0x1ac]
movzx edx, byte [esi + 0x90]
mov byte [eax + ecx*8], 1
mov byte [eax + ecx*8 + 1], dl
movq qword [eax + ecx*8 + 4], xmm5
mov edx, dword [esi + 0x1b4]
inc edx
mov dword [esi + 0x1b4], edx
jmp 0x5154eb
movsd xmm2, qword [eax + 4]
mov dword [esi + 0x188], 1
movsd qword [esi + 0x18c], xmm2
mov dword [esi + 0x194], 1
movsd qword [esi + 0x198], xmm2
movaps xmmword [esi + 0x30], xmm2
cmp dword [esi + 0x1a0], 0
je 0x51531e
movss xmm0, dword [esi + 0x1a4]
movss xmm1, dword [esi + 0x1a8]
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 0
mov dword [esi + 0x8e8], 0x13
subss xmm0, xmm2
shufps xmm2, xmm2, 0x55
subss xmm1, xmm2
sub esp, 8
movss dword [esp], xmm0
movss dword [esp + 4], xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
add esp, 8
fstp dword [esi + 0x32c]
movss xmm0, dword [esi + 0x32c]
movsd xmm3, qword [esi + 0x100]
mov edi, dword [esi + 0x24]
movaps xmm2, xmmword [esi + 0x30]
ucomiss xmm0, dword [0x7259dc]
seta al
cmp byte [esi + 0x1bd], 0
setne cl
or cl, al
mov byte [esi + 0x1bd], cl
mov edx, dword [esi + 0x1b4]
cmp edx, dword [esi + 0x1b0]
jne 0x515350
lea ecx, [esi + 0x1ac]
mov dword [esi + 0x8e8], 0x18
call fcn.00486190
mov edx, dword [esi + 0x1b4]
movsd xmm3, qword [esi + 0x100]
mov edi, dword [esi + 0x24]
movaps xmm2, xmmword [esi + 0x30]
mov eax, dword [esi + 0x1ac]
lea ecx, [edx + edx*2]
mov byte [eax + ecx*8], 0
movlps qword [eax + ecx*8 + 4], xmm2
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x1b4]
inc edx
mov dword [esi + 0x1b4], edx
jmp 0x51512d
cmp byte [esi + 0x1bc], 0
setne cl
cmp dword [esi + 0x1b8], 0
setne ch
or ch, cl
cmp ch, 1
jne 0x5153c3
cmp byte [esi + 0x1bd], 0
jne 0x5153c3
mov ecx, dword [esi + 0x128]
or ecx, dword [esi + 0x12c]
je 0x5153d2
movsd xmm0, qword [esi + 0x160]
subsd xmm0, qword [esi + 0x130]
ucomisd xmm0, qword [0x726490]
jbe 0x5153d2
mov bl, 2
cmp edx, dword [esi + 0x1b0]
je 0x515443
jmp 0x515470
movsd xmm1, qword [esi + 0x178]
movsd xmm4, qword [str.333333]
movapd xmm2, xmm3
movapd xmm0, xmm3
mov dword [esi + 0x70], eax
xor eax, eax
mov ecx, 3
movdqa xmmword [esi + 0xd0], xmm5
subsd xmm0, qword [esi + 0x180]
subsd xmm2, xmm1
movsd qword [esi + 0x180], xmm1
movsd qword [esi + 0x178], xmm3
ucomisd xmm4, xmm2
movsd xmm4, qword [0x726490]
seta al
inc eax
ucomisd xmm4, xmm0
cmova eax, ecx
mov ecx, dword [esi + 0x70]
mov dword [esi + 0xa0], eax
mov dword [esi + 0x5c], ecx
cmp edx, dword [esi + 0x1b0]
jne 0x515470
lea ecx, [esi + 0x1ac]
mov byte [esi + 0x70], bl
mov dword [esi + 0x8e8], 0x18
call fcn.00486190
mov edx, dword [esi + 0x1b4]
movsd xmm3, qword [esi + 0x100]
mov edi, dword [esi + 0x24]
movzx ebx, byte [esi + 0x70]
lea eax, [edx + edx*2]
mov ecx, dword [esi + 0x1ac]
movzx edx, byte [esi + 0x90]
movaps xmm0, xmmword [esi + 0xd0]
mov byte [ecx + eax*8], 2
mov byte [ecx + eax*8 + 1], dl
mov edx, dword [esi + 0xa0]
movlps qword [ecx + eax*8 + 4], xmm0
mov dword [ecx + eax*8 + 0xc], edx
mov edx, dword [esi + 0x5c]
mov byte [ecx + eax*8 + 0x10], bl
mov dword [ecx + eax*8 + 0x11], edx
movzx edx, word [esi + 0x338]
mov word [ecx + eax*8 + 0x15], dx
movzx edx, byte [esi + 0x33a]
mov byte [ecx + eax*8 + 0x17], dl
mov edx, dword [esi + 0x1b4]
inc edx
mov dword [esi + 0x1b4], edx
mov dword [esi + 0x1a0], 0
mov dword [esi + 0x128], 0
mov dword [esi + 0x12c], 0
movzx eax, byte [esi + 0x30]
mov ecx, dword [esi + 0x40]
mov byte [esi + ecx + 0x1b8], al
mov ecx, dword [esi + 0x10]
jmp 0x51512d
mov eax, dword [esi + 0x188]
cmp dword [esi + 8], 1
jne 0x51552a
cmp eax, 1
jne 0x51552a
movsd xmm1, qword [esi + 0x18c]
movaps xmm0, xmm1
subps xmm0, xmmword [esi + 0x60]
movlps qword [esi + 0x168], xmm0
jmp 0x515544
xorps xmm0, xmm0
test eax, eax
movlps qword [esi + 0x168], xmm0
je 0x515842
movsd xmm1, qword [esi + 0x18c]
add dword [esi + 0x148], 1
adc dword [esi + 0x14c], 0
mov eax, dword [esi + 0x13c]
mov edi, dword [esi + 0x144]
cmp edi, eax
jne 0x515593
lea ecx, [esi + 0x138]
movaps xmmword [esi + 0x10], xmm1
mov dword [esi + 0x8e8], 0x18
call fcn.005623b0
mov eax, dword [esi + 0x13c]
mov edi, dword [esi + 0x144]
movsd xmm3, qword [esi + 0x100]
movaps xmm1, xmmword [esi + 0x10]
mov ecx, dword [esi + 0x140]
xor ebx, ebx
lea edx, [ecx + edi]
cmp edx, eax
cmovb eax, ebx
sub edx, eax
mov eax, dword [esi + 0x138]
shl edx, 4
movsd qword [eax + edx], xmm3
movlps qword [eax + edx + 8], xmm1
lea eax, [edi + 1]
mov dword [esi + 0x144], eax
mov edx, dword [esi + 0x154]
cmp eax, edx
mov dword [esi + 0x10], edx
jbe 0x515600
mov ebx, dword [esi + 0x13c]
mov edx, 0
nop dword [eax]
inc ecx
mov eax, edi
mov edi, ebx
cmp ecx, ebx
cmovb edi, edx
sub ecx, edi
cmp eax, dword [esi + 0x10]
lea edi, [eax - 1]
mov dword [esi + 0x140], ecx
mov dword [esi + 0x144], eax
ja 0x5155e0
mov edi, dword [esi + 0x150]
cmp eax, edi
mov dword [esi + 8], edi
jbe 0x515687
movss xmm0, dword [esi + 0x158]
mov edi, dword [esi + 0x138]
mov ebx, dword [esi + 0x13c]
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
movapd xmm0, xmm3
mov dword [esi + 0x60], edi
mov edi, eax
mov dword [esi + 0x30], ebx
subsd xmm0, xmm1
nop dword [eax + eax]
sub edi, 1
jb 0x515687
cmp ecx, ebx
mov edx, 0
cmovb ebx, edx
mov edx, ecx
sub edx, ebx
mov ebx, dword [esi + 0x60]
shl edx, 4
ucomisd xmm0, qword [ebx + edx]
jbe 0x515687
mov ebx, dword [esi + 0x30]
inc ecx
mov edx, 0
cmp ecx, ebx
mov eax, ebx
cmovb eax, edx
sub ecx, eax
cmp edi, dword [esi + 8]
mov eax, edi
mov dword [esi + 0x140], ecx
mov dword [esi + 0x144], edi
ja 0x515640
mov eax, edi
cmp eax, dword [esi + 0x10]
jbe 0x5156cc
mov ecx, dword [esi + 0x154]
mov ebx, dword [esi + 0x13c]
mov edx, dword [esi + 0x140]
mov edi, 0
mov dword [esi + 0x10], ecx
nop word cs:[eax + eax]
inc edx
mov ecx, ebx
cmp edx, ebx
cmovb ecx, edi
dec eax
sub edx, ecx
cmp eax, dword [esi + 0x10]
mov dword [esi + 0x140], edx
mov dword [esi + 0x144], eax
ja 0x5156b0
mov ecx, dword [esi + 0x150]
cmp eax, ecx
mov dword [esi + 8], ecx
jbe 0x515757
mov ecx, dword [esi + 0x138]
movss xmm0, dword [esi + 0x158]
mov edi, dword [esi + 0x13c]
xor ebx, ebx
mov edx, eax
mov dword [esi + 0x60], ecx
mov ecx, dword [esi + 0x140]
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
movapd xmm0, xmm3
mov dword [esi + 0x10], edi
subsd xmm0, xmm1
nop dword [eax]
sub edx, 1
jb 0x51585f
cmp ecx, edi
mov edi, dword [esi + 0x10]
cmovb edi, ebx
mov ebx, ecx
sub ebx, edi
mov edi, dword [esi + 0x60]
shl ebx, 4
ucomisd xmm0, qword [edi + ebx]
mov edi, dword [esi + 0x10]
mov ebx, 0
jbe 0x515757
inc ecx
mov eax, edi
cmp ecx, edi
cmovb eax, ebx
sub ecx, eax
cmp edx, dword [esi + 8]
mov eax, edx
mov dword [esi + 0x140], ecx
mov dword [esi + 0x144], edx
ja 0x515710
xorpd xmm0, xmm0
cmp eax, 3
jb 0x515863
mov edi, dword [esi + 0x140]
mov edx, dword [esi + 0x13c]
xor ecx, ecx
lea eax, [eax + edi - 1]
mov ebx, edx
cmp eax, edx
cmovb ebx, ecx
sub eax, ebx
cmp edi, edx
mov ebx, edx
cmovb ebx, ecx
mov ecx, edi
shl eax, 4
sub ecx, ebx
mov ebx, dword [esi + 0x138]
shl ecx, 4
movsd xmm1, qword [ebx + eax]
movapd xmm2, xmm1
subsd xmm2, qword [ebx + ecx]
cvtsd2ss xmm2, xmm2
ucomiss xmm2, dword [0x7264b8]
jbe 0x515863
cmp edi, edx
mov ecx, 0
xorps xmm2, xmm2
cmovae ecx, edx
sub edi, ecx
shl edi, 4
subsd xmm1, qword [ebx + edi]
cvtsd2ss xmm1, xmm1
ucomiss xmm1, xmm2
jbe 0x515863
movsd xmm0, qword [ebx + eax + 8]
movsd xmm2, qword [ebx + edi + 8]
shufps xmm1, xmm1, 0
subps xmm0, xmm2
divps xmm0, xmm1
jmp 0x515863
shl ecx, 5
jmp 0x51580c
mov edi, dword [esi + 0x88]
mov byte [edi + 0x73], 1
add edx, 0x20
add ecx, 0xffffffe0
je 0x512b11
cmp byte [edx], 4
jne 0x515800
movzx edi, byte [edx + 1]
cmp edi, 5
je 0x51582a
cmp edi, 4
jne 0x515800
cmp byte [edx + 2], 0
je 0x515800
jmp 0x512af9
cmp byte [edx + 2], 0
je 0x515800
cmp byte [edx + 6], 0
jne 0x5157f6
mov edi, dword [esi + 0x88]
mov byte [edi + 0x72], 1
jmp 0x515800
mov ecx, dword [esi + 0x154]
mov eax, dword [esi + 0x144]
mov dword [esi + 0x10], ecx
cmp eax, dword [esi + 0x10]
ja 0x51568c
jmp 0x5156cc
xorpd xmm0, xmm0
lea ecx, [esi + 0x5d8]
movlpd qword [esi + 0x170], xmm0
push 0x98
lea eax, [esi + 0x128]
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm0, qword [esi + 0x510]
movq xmm1, qword [esi + 0x500]
mov ecx, dword [esi + 0x20]
mov edi, dword [esi + 0x24]
pcmpeqd xmm5, xmm5
movsd qword [esi + 0x2b8], xmm0
movsd xmm0, qword [esi + 0x508]
movq qword [esi + 0x2a8], xmm1
movsd qword [esi + 0x2b0], xmm0
movq xmm0, qword [esi + 0x4f8]
movq qword [esi + 0x2a0], xmm0
pxor xmm0, xmm0
movdqa xmmword [esi + 0xe0], xmm0
jmp 0x515900
mov eax, dword [esi + 0x10]
mov byte [edx + ebx], cl
mov byte [eax + edx + 0x10], cl
dec dword [esi + 0x2ac]
mov ecx, dword [esi + 0x70]
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp ecx, edi
je 0x5160b5
mov edx, ecx
add ecx, 0x20
movzx eax, byte [edx]
cmp eax, 4
je 0x515940
cmp eax, 8
je 0x516038
cmp eax, 9
jne 0x515900
movss xmm0, dword [esi + 0x10c]
mulss xmm0, dword [edx + 4]
movss dword [esi + 0x10c], xmm0
jmp 0x515900
cmp byte [edx + 2], 0
mov dword [esi + 0x70], ecx
je 0x515c94
mov eax, dword [esi + 0x2b4]
mov ecx, dword [esi + 0x2b0]
mov ebx, dword [esi + 0x2b8]
mov dword [esi + 0x5c], edx
movzx edx, byte [edx + 1]
mov dword [esi + 0x30], eax
xor eax, 0x736f6d65
mov dword [esi + 8], ecx
xor ecx, 0x70736575
xor dword [esi + 0x30], 0x6c796765
xor dword [esi + 8], 0x6e657261
mov dword [esi + 0x60], edx
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x2bc]
mov dword [esi + 0x40], ecx
mov ecx, ebx
xor ebx, edx
xor ecx, 0x6e646f6d
xor ebx, 0x79746573
mov edx, ecx
mov edi, eax
xor eax, 0x70656462
xor edi, 0x646f7261
add dword [esi + 0x40], ecx
adc dword [esi + 0x10], edi
shld edx, edi, 0xd
shrd ecx, edi, 0x13
mov edi, ebx
xor ecx, dword [esi + 0x10]
xor edx, dword [esi + 0x40]
add dword [esi + 8], ebx
adc dword [esi + 0x30], eax
shld edi, eax, 0x10
shld eax, ebx, 0x10
xor edi, dword [esi + 8]
xor eax, dword [esi + 0x30]
add dword [esi + 0x10], edi
mov ebx, edi
adc dword [esi + 0x40], eax
shld ebx, eax, 0x15
shrd edi, eax, 0xb
mov eax, edx
xor edi, dword [esi + 0x40]
xor ebx, dword [esi + 0x10]
add dword [esi + 8], edx
adc dword [esi + 0x30], ecx
shld eax, ecx, 0x11
shrd edx, ecx, 0xf
mov ecx, dword [esi + 0x40]
xor eax, dword [esi + 8]
xor edx, dword [esi + 0x30]
xor dword [esi + 0x30], 0xff
xor ecx, 0x4000000
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x60]
xor dword [esi + 0x10], eax
mov eax, dword [esi + 0x90]
add dword [esi + 0x10], eax
adc ecx, edx
mov dword [esi + 0x40], ecx
mov ecx, eax
shrd eax, edx, 0x13
shld ecx, edx, 0xd
xor eax, dword [esi + 0x40]
mov edx, ebx
xor ecx, dword [esi + 0x10]
add dword [esi + 0x30], ebx
adc dword [esi + 8], edi
shld edx, edi, 0x10
shrd ebx, edi, 0x10
xor edx, dword [esi + 0x30]
xor ebx, dword [esi + 8]
add dword [esi + 0x40], edx
mov edi, edx
adc dword [esi + 0x10], ebx
shld edi, ebx, 0x15
shrd edx, ebx, 0xb
mov ebx, ecx
xor edx, dword [esi + 0x10]
xor edi, dword [esi + 0x40]
add dword [esi + 0x30], ecx
adc dword [esi + 8], eax
shld ebx, eax, 0x11
shrd ecx, eax, 0xf
xor ebx, dword [esi + 0x30]
xor ecx, dword [esi + 8]
add dword [esi + 0x40], ebx
mov eax, ebx
adc dword [esi + 0x10], ecx
shld eax, ecx, 0xd
shrd ebx, ecx, 0x13
mov dword [esi + 0x90], eax
mov eax, dword [esi + 8]
xor ebx, dword [esi + 0x10]
mov ecx, dword [esi + 0x90]
xor ecx, dword [esi + 0x40]
add eax, edi
adc dword [esi + 0x30], edx
mov dword [esi + 8], eax
mov dword [esi + 0x90], ecx
mov ecx, edi
shrd edi, edx, 0x10
shld ecx, edx, 0x10
mov edx, dword [esi + 0x30]
xor ecx, eax
mov eax, ecx
xor edi, edx
add dword [esi + 0x10], ecx
adc dword [esi + 0x40], edi
shrd ecx, edi, 0xb
shld eax, edi, 0x15
mov edi, dword [esi + 0x10]
xor ecx, dword [esi + 0x40]
xor eax, edi
mov dword [esi + 0xa0], ecx
mov ecx, dword [esi + 0x90]
mov dword [esi + 0xd0], eax
add dword [esi + 8], ecx
mov eax, ecx
adc edx, ebx
shld eax, ebx, 0x11
shrd ecx, ebx, 0xf
xor eax, dword [esi + 8]
xor ecx, edx
add edi, eax
mov ebx, eax
mov dword [esi + 0x10], edi
mov edi, dword [esi + 0x40]
adc edi, ecx
shld ebx, ecx, 0xd
shrd eax, ecx, 0x13
mov ecx, dword [esi + 8]
xor eax, edi
xor ebx, dword [esi + 0x10]
add edx, dword [esi + 0xd0]
mov dword [esi + 0x40], eax
adc ecx, dword [esi + 0xa0]
mov edi, ebx
mov dword [esi + 0x30], edx
add edi, edx
mov dword [esi + 0x90], edi
adc eax, ecx
cmp dword [esi + 0x2a8], 0
mov edx, ecx
mov dword [esi + 0x2c], eax
jne 0x515b88
mov dword [esi + 8], edx
lea ecx, [esi + 0x2a0]
lea edx, [esi + 0x2b0]
mov byte [esi + 0x8e], 0
mov byte [esi + 0x8f], 1
mov dword [esi + 0x8e8], 0x14
mov dword [esi + 0x10], ebx
call fcn.0070ddc0
mov ebx, dword [esi + 0x10]
mov edx, dword [esi + 8]
pcmpeqd xmm5, xmm5
mov ecx, dword [esi + 0xa0]
mov edi, dword [esi + 0xd0]
mov eax, ecx
shld eax, edi, 0x10
shld edi, ecx, 0x10
mov ecx, dword [esi + 0x40]
mov dword [esi + 0x40], 0
xor edi, dword [esi + 0x30]
xor eax, edx
mov dword [esi + 0x30], 0
shld ebx, ecx, 0x11
mov ecx, dword [esi + 0x2a4]
xor ebx, dword [esi + 0x2c]
shrd eax, edi, 0xb
mov dword [esi + 8], ecx
xor ebx, eax
mov eax, dword [esi + 0x2a0]
xor ebx, dword [esi + 0x90]
mov edx, ebx
shr edx, 0x19
movd xmm0, edx
mov dword [esi + 0x90], edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
and ebx, ecx
movdqa xmm2, xmm0
movdqu xmm1, xmmword [eax + ebx]
mov dword [esi + 0x10], ebx
pcmpeqb xmm2, xmm1
pmovmskb ebx, xmm2
nop dword [eax]
mov edi, ebx
test bx, bx
je 0x515c40
tzcnt edx, edi
mov ecx, eax
mov eax, dword [esi + 0x60]
lea ebx, [edi - 1]
add edx, dword [esi + 0x10]
and ebx, edi
and edx, dword [esi + 8]
not edx
cmp al, byte [edx + ecx]
mov eax, ecx
jne 0x515c10
jmp 0x5160a0
cmp dword [esi + 0x30], 1
mov ebx, dword [esi + 0x10]
mov ecx, dword [esi + 8]
mov dword [esi + 0x30], 1
je 0x515c72
pmovmskb edx, xmm1
xor ecx, ecx
test edx, edx
setne cl
tzcnt edx, edx
mov dword [esi + 0x30], ecx
mov ecx, dword [esi + 8]
add edx, ebx
and edx, ecx
mov dword [esi + 0xa0], edx
pcmpeqb xmm1, xmm5
pmovmskb edx, xmm1
test edx, edx
jne 0x516053
mov edx, dword [esi + 0x40]
lea ebx, [ebx + edx + 0x10]
add edx, 0x10
mov dword [esi + 0x40], edx
jmp 0x515bf3
mov eax, dword [esi + 0x2b0]
mov edi, edx
mov edx, dword [esi + 0x2b4]
mov dword [esi + 0x30], 0
movzx ebx, byte [edi + 1]
mov edi, 0x4000000
mov ecx, eax
xor eax, 0x6e657261
movd xmm1, eax
mov eax, dword [esi + 0x2bc]
xor ecx, 0x70736575
mov dword [esi + 0x60], ebx
xor eax, edi
movd xmm2, eax
mov eax, dword [esi + 0x2b8]
xor eax, ebx
movd xmm0, eax
mov eax, edx
xor edx, 0x6c796765
punpckldq xmm0, xmm2
movq xmm2, qword [esi + 0x2b8]
xor eax, 0x736f6d65
movd xmm3, eax
punpcklqdq xmm0, xmm2
movd xmm2, edx
mov edx, dword [esi + 0x2a0]
pxor xmm0, xmmword [str.setybdetmodnarod]
punpcklqdq xmm2, xmm1
movd xmm1, ecx
punpcklqdq xmm3, xmm1
movdqa xmm1, xmm0
shufps xmm2, xmm0, 0xe2
shufps xmm1, xmm3, 0x24
movdqa xmm3, xmm0
paddq xmm1, xmm2
movdqa xmm2, xmm0
psrlq xmm3, 0x33
psrlq xmm2, 0x30
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x4b
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
movd ecx, xmm1
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
xor ecx, ebx
psllq xmm2, 0x15
movd xmm4, ecx
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
movd eax, xmm2
pshufd xmm2, xmm1, 0x55
orpd xmm0, xmm3
pxor xmm2, xmmword [0x7264d0]
xor eax, 0xff
xorpd xmm0, xmm1
movd xmm3, eax
shufpd xmm1, xmm3, 1
movapd xmm3, xmm0
psrlq xmm3, 0x33
shufps xmm1, xmm0, 0xe2
punpcklqdq xmm2, xmm4
movaps xmm4, xmm0
shufps xmm4, xmm2, 0x24
movaps xmm2, xmm0
psrlq xmm2, 0x30
paddq xmm1, xmm4
movsd xmm3, xmm2
movaps xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x4b
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
psllq xmm2, 0x15
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x4b
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x30
psrlq xmm3, 0x33
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x4b
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
psllq xmm2, 0x15
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
pshufd xmm1, xmm1, 0x4b
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x30
psrlq xmm3, 0x33
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
movapd xmm2, xmm0
movapd xmm3, xmm0
movapd xmm4, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
psllq xmm4, 0x11
movsd xmm3, xmm2
movapd xmm2, xmm0
psllq xmm2, 0x15
movsd xmm4, xmm2
orpd xmm4, xmm3
movapd xmm2, xmm4
shufpd xmm2, xmm1, 1
xorpd xmm4, xmm2
paddq xmm2, xmm0
pshufd xmm0, xmm2, 0xee
movd edi, xmm4
movd eax, xmm0
pshufd xmm0, xmm2, 0xff
movd ecx, xmm0
xor edi, ecx
xor edi, eax
mov eax, edi
shr eax, 0x19
movd xmm0, eax
mov eax, dword [esi + 0x2a4]
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
mov dword [esi + 0x10], eax
and edi, eax
movdqa xmm2, xmm0
movdqu xmm1, xmmword [edx + edi]
mov dword [esi + 8], edi
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
nop word [eax + eax]
test ax, ax
je 0x515fb0
tzcnt ebx, eax
mov edi, edx
mov edx, dword [esi + 0x60]
lea ecx, [eax - 1]
add ebx, dword [esi + 8]
and ecx, eax
and ebx, dword [esi + 0x10]
mov eax, ebx
not eax
cmp dl, byte [eax + edi]
mov edx, edi
mov eax, ecx
jne 0x515f80
jmp 0x515fd5
pcmpeqb xmm1, xmm5
pmovmskb eax, xmm1
test eax, eax
jne 0x5160aa
mov edi, dword [esi + 8]
mov eax, dword [esi + 0x30]
lea edi, [edi + eax + 0x10]
add eax, 0x10
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x10]
jmp 0x515f64
mov ecx, dword [esi + 0x10]
lea eax, [ebx - 0x10]
and ecx, eax
movdqu xmm0, xmmword [edx + ecx]
mov dword [esi + 0x10], ecx
pcmpeqb xmm0, xmm5
psllw xmm0, 7
pmovmskb eax, xmm0
test eax, eax
je 0x515fff
bsr ax, ax
xor eax, 0xf
jmp 0x516003
mov ax, 0x10
movdqu xmm0, xmmword [edx + ebx]
mov edi, dword [esi + 0x24]
pcmpeqb xmm0, xmm5
pmovmskb ecx, xmm0
or ecx, 0x10000
tzcnt ecx, ecx
add eax, ecx
mov cl, 0x80
cmp ax, 0xf
ja 0x5158de
inc dword [esi + 0x2a8]
mov cl, 0xff
jmp 0x5158de
movsd xmm0, qword [edx + 4]
movaps xmm1, xmmword [esi + 0xe0]
addps xmm1, xmm0
movaps xmmword [esi + 0xe0], xmm1
jmp 0x515900
mov ebx, dword [esi + 0xa0]
movzx edx, byte [eax + ebx]
test dl, dl
js 0x516071
movdqa xmm0, xmmword [eax]
pmovmskb edx, xmm0
tzcnt ebx, edx
movzx edx, byte [eax + ebx]
and dl, 1
movzx edx, dl
sub dword [esi + 0x2a8], edx
lea edx, [ebx - 0x10]
and ecx, edx
mov edx, dword [esi + 0x90]
mov byte [eax + ebx], dl
mov byte [ecx + eax + 0x10], dl
mov ecx, eax
mov eax, dword [esi + 0x60]
inc dword [esi + 0x2ac]
not ebx
mov byte [ebx + ecx], al
nop
mov eax, dword [esi + 0x5c]
test di, di
setne byte [eax + 3]
mov edi, dword [esi + 0x24]
mov ecx, dword [esi + 0x70]
jmp 0x515900
cmp byte [esi + 0x568], 0
movzx ecx, byte [esi + 0x5d1]
setne al
test cl, cl
mov byte [esi + 0x60], cl
setne cl
xor cl, al
jne 0x516122
movzx eax, byte [esi + 0x5cc]
movzx ecx, byte [esi + 0x5d0]
movzx edx, byte [esi + 0x5cd]
movzx ebx, byte [esi + 0x5ce]
mov dword [esi + 0x40], eax
movzx eax, byte [esi + 0x5cf]
mov dword [esi + 0x90], ecx
mov ecx, dword [esi + 0x20]
mov dword [esi + 0x30], eax
xor eax, eax
nop word cs:[eax + eax]
cmp dword [esi + 0x28], eax
je 0x516225
cmp byte [ecx + eax], 0xf
lea eax, [eax + 0x20]
jne 0x516110
mov byte [esi + 0x8e], 0
mov byte [esi + 0x8f], 1
mov dword [esi + 0x8e8], 0x14
call fcn.006bc750
test eax, eax
je 0x5182bd
movdqu xmm1, xmmword [eax]
movd edx, xmm1
pshufd xmm0, xmm1, 0x55
add edx, 1
movd ecx, xmm0
adc ecx, 0
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x2a4]
test ecx, ecx
je 0x5161bc
lea eax, [ecx + 0x10]
and eax, 0xfffffff0
add ecx, eax
cmp ecx, 0xffffffef
je 0x5161bc
mov ecx, dword [esi + 0x2a0]
sub ecx, eax
push dword [ecx - 4]
push 0
push dword [0x919820]
movdqa xmmword [esi + 0x10], xmm1
call dword [sym.imp.kernel32.dll_HeapFree]
movdqa xmm1, xmmword [esi + 0x10]
movzx eax, byte [esi + 0x5d1]
mov edx, dword [esi + 0x5a4]
mov ecx, dword [esi + 0x5ac]
mov byte [esi + 0x60], al
mov dword [esi + 0x20], edx
mov dword [esi + 0xc0], ecx
mov dword [esi + 0x2a0], 0x8cdfe0
mov dword [esi + 0x2a4], 0
mov dword [esi + 0x2a8], 0
mov dword [esi + 0x2ac], 0
mov dword [esi + 0x70], 0x8cdfe0
movdqu xmmword [esi + 0x2b0], xmm1
mov dword [esi + 0xa0], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x90], 0
jmp 0x51624a
mov eax, dword [esi + 0x2a0]
mov ecx, dword [esi + 0x2a4]
mov dword [esi + 0x28], ebx
mov dword [esi + 0x24], edx
mov dword [esi + 0x8e8], 0x15
mov dword [esi + 0x70], eax
mov dword [esi + 0xa0], ecx
push 0x98
lea eax, [esi + 0x5d8]
push eax
lea eax, [esi + 0x338]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea ecx, [esi + 0x544]
mov edx, dword [esi + 0x580]
mov dword [esi + 0x8e8], 0x15
movsd xmm0, qword [ecx]
mov eax, dword [ecx + 8]
mov ecx, dword [esi + 0x588]
mov dword [esi + 0xd0], edx
mov edx, dword [esi + 0x558]
movsd qword [esi + 0x740], xmm0
movss xmm0, dword [esi + 0x554]
mov dword [esi + 0x2c], ecx
mov ecx, dword [esi + 0x58c]
mov dword [esi + 0x748], eax
mov dword [esi + 0x5c], edx
mov edx, dword [esi + 0x20]
movss dword [esi + 8], xmm0
movss xmm0, dword [esi + 0x584]
mov dword [esi + 0x10], ecx
lea ecx, [esi + 0x80c]
movss dword [esi + 0xcc], xmm0
movd xmm0, dword [esi + 0x5c8]
movd dword [esi + 0xc8], xmm0
push dword [esi + 0xc0]
call fcn.005299d0
add esp, 4
cmp dword [esi + 0x2c], 0
mov eax, dword [esi + 0x10]
cmove eax, dword [esi + 0x5c]
cmp dword [esi + 0xd0], 0
mov dword [esi + 0x10], eax
je 0x516319
movd xmm0, dword [esi + 0xcc]
movd dword [esi + 8], xmm0
push 0x68
lea eax, [esi + 0x570]
push eax
lea eax, [esi + 0x128]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x190]
push 0x98
lea ecx, [esi + 0x5d8]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x748]
movsd xmm1, qword [esi + 0x3d8]
movsd xmm2, qword [esi + 0x3d0]
movsd xmm0, qword [esi + 0x740]
lea ecx, [esi + 0x3f8]
mov dword [esi + 0x8e8], 0x23
mov dword [esi + 0x310], eax
lea eax, [esi + 0x2b0]
movsd qword [esi + 0x7b0], xmm1
movsd qword [esi + 0x7a8], xmm2
movsd qword [esi + 0x308], xmm0
movsd xmm1, qword [eax]
movq xmm3, qword [eax - 8]
movsd xmm2, qword [eax + 8]
mov eax, dword [esi + 0x814]
movsd qword [esi + 0x678], xmm1
movsd xmm1, qword [esi + 0x80c]
movq qword [esi + 0x670], xmm3
movsd qword [esi + 0x680], xmm2
mov dword [esi + 0x320], eax
movsd qword [esi + 0x318], xmm1
call fcn.0050f0d0
mov edi, dword [esi + 0x540]
mov ecx, dword [esi + 0xfc]
test edi, edi
je 0x51643f
mov ebx, dword [esi + 0x538]
add ebx, 8
jmp 0x516406
add ebx, 0x20
dec edi
je 0x51643f
movzx eax, byte [ebx - 8]
add eax, 0xfffffffe
cmp eax, 0xa
ja 0x516400
mov eax, dword [eax*4 + 0x518f60]
add eax, dword [esi + 0x328]
jmp eax
cmp dword [esi + 0x53c], 0
je 0x51646c
push dword [esi + 0x538]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov ecx, dword [esi + 0xfc]
mov dword [esi + 0x8e8], 0x26
mov dword [esi + 0x8e8], 0x26
call fcn.0050e9b0
push pe_nt_image_headers32
lea eax, [esi + 0x128]
push eax
push dword [esi + 0xfc]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esi + 0x88]
mov eax, dword [esi + 0x70]
movss xmm2, dword [esi + 8]
mov dword [ecx + 0x320], eax
mov eax, dword [esi + 0xa0]
lea edi, [ecx + 0x410]
lea ebx, [ecx + 0x430]
lea edx, [ecx + 0x400]
mov dword [ecx + 0x324], eax
movsd xmm0, qword [esi + 0x670]
movsd xmm1, qword [esi + 0x678]
movsd qword [ecx + 0x328], xmm0
movsd qword [ecx + 0x330], xmm1
movsd xmm0, qword [esi + 0x680]
movsd qword [ecx + 0x338], xmm0
movaps xmm0, xmmword [esi + 0xe0]
movlps qword [ecx + 0x340], xmm0
movsd xmm0, qword [esi + 0x7a8]
movsd xmm1, qword [esi + 0x7b0]
movsd qword [ecx + 0x348], xmm0
movsd xmm0, qword [esi + 0x100]
movsd qword [ecx + 0x350], xmm1
movss xmm1, dword [esi + 0x10c]
movsd qword [ecx + 0x358], xmm0
mov eax, dword [esi + 0x320]
mov dword [ecx + 0x368], eax
movsd xmm0, qword [esi + 0x318]
movsd qword [ecx + 0x360], xmm0
mov eax, dword [esi + 0x310]
mov dword [ecx + 0x374], eax
mov eax, dword [esi + 0x10]
movsd xmm0, qword [esi + 0x308]
movsd qword [ecx + 0x36c], xmm0
movss dword [ecx + 0x378], xmm1
movss xmm1, dword [esi + 0x120]
movss dword [ecx + 0x37c], xmm2
mov dword [ecx + 0x380], eax
movss xmm2, dword [esi + 0xc8]
movzx eax, byte [esi + 0x60]
movss dword [ecx + 0x384], xmm1
movss xmm1, dword [esi + 0x118]
movss dword [ecx + 0x388], xmm2
movss dword [ecx + 0x38c], xmm1
mov byte [ecx + 0x390], al
mov eax, dword [esi + 0x40]
mov byte [ecx + 0x391], al
mov eax, dword [esi + 0x24]
mov byte [ecx + 0x392], al
mov eax, dword [esi + 0x28]
mov byte [ecx + 0x393], al
mov eax, dword [esi + 0x30]
mov byte [ecx + 0x394], al
mov eax, dword [esi + 0x90]
mov byte [ecx + 0x395], al
lea eax, [ecx + 0x420]
cmp dword [ecx + 0x3ec], 0
je 0x516669
mov dword [esi + 8], edi
mov edi, dword [ecx + 0x3e4]
mov dword [esi + 0x10], eax
test edi, edi
je 0x51663a
lea eax, [edi + 0x11]
push eax
push 0xff
push dword [ecx + 0x3e0]
mov dword [esi + 0x60], edx
call sub.VCRUNTIME140.dll_memset
mov edx, dword [esi + 0x60]
mov ecx, dword [esi + 0x88]
add esp, 0xc
lea eax, [edi + 1]
mov dword [ecx + 0x3ec], 0
mov ecx, eax
and eax, 0xfffffff8
shr ecx, 3
sub eax, ecx
mov ecx, dword [esi + 0x88]
cmp edi, 8
cmovb eax, edi
mov edi, dword [esi + 8]
mov dword [ecx + 0x3e8], eax
mov eax, dword [esi + 0x10]
movsd xmm0, qword [ecx + 0x348]
movsd xmm1, qword [ecx + 0x350]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
lea edi, [ecx + 0x3f0]
movsd xmm0, qword [ecx + 0x348]
movsd xmm1, qword [ecx + 0x350]
movsd qword [eax], xmm0
movaps xmm0, xmmword [esi + 0xe0]
movsd qword [eax + 8], xmm1
mov dword [ebx + 8], 0xff800000
mov dword [ebx], 0x7f800000
mov dword [ebx + 0xc], 0xff800000
mov dword [ebx + 4], 0x7f800000
mov dword [ecx + 0x398], 0
mov dword [ecx + 0x39c], 0
movlps qword [ecx + 0x440], xmm0
mov byte [ecx + 0x3c8], 2
mov byte [ecx + 0x3d8], 2
movsd xmm0, qword [edx]
movsd xmm1, qword [edx + 8]
movsd qword [esi + 0x130], xmm1
movsd qword [esi + 0x128], xmm0
mov dword [ecx + 0x400], 0x8cdfe0
mov dword [ecx + 0x404], 0
mov dword [ecx + 0x408], 0
mov dword [ecx + 0x40c], 0
mov ecx, dword [ecx + 0x3f4]
test ecx, ecx
je 0x51675d
lea eax, [ecx*8 + 0x17]
and eax, 0xfffffff0
add ecx, eax
cmp ecx, 0xffffffef
je 0x51675d
mov ecx, dword [edi]
sub ecx, eax
push dword [ecx - 4]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
movsd xmm0, qword [esi + 0x128]
movsd xmm1, qword [esi + 0x130]
mov eax, dword [esi + 0x88]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
movss xmm0, dword [eax + 0x37c]
mov ecx, dword [eax + 0x380]
cmp dword [eax + 0x1e0], 0
mov dword [eax + 0x1e0], 0
movss dword [esi + 0x10], xmm0
mov dword [esi + 8], ecx
je 0x516855
movsd xmm0, qword [eax + 0x1f4]
lea edx, [esi + 0x5d8]
movsd qword [esi + 0x5e8], xmm0
movsd xmm0, qword [eax + 0x1e4]
movsd xmm1, qword [eax + 0x1ec]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
movsd qword [esi + 0x5d8], xmm0
movss xmm0, dword [esi + 0x10]
movsd qword [esi + 0x5e0], xmm1
call fcn.005a0210
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x88]
lea ecx, [eax + 0x658]
mov eax, dword [eax + 0x658]
mov dword [esi + 0xe0], ecx
test eax, eax
je 0x516848
lock dec dword [eax]
jne 0x516848
mov eax, dword [esi + 0xe0]
mov ecx, dword [eax]
mov dword [esi + 0x8e8], 0x25
call fcn.00562990
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
mov ebx, dword [esi + 0x70]
mov eax, dword [esi + 0xe0]
mov dword [eax], ebx
jmp 0x516875
mov ebx, dword [eax + 0x658]
lea edi, [eax + 0x658]
mov dword [esi + 0xe0], edi
test ebx, ebx
je 0x51765d
lea edi, [esi + 0x3f8]
lea eax, [ebx + 8]
mov cl, 1
mov dword [esi + 0xa0], eax
xor eax, eax
lock cmpxchg byte [ebx + 8], cl
mov dword [esi + 0x70], ebx
je 0x5168b3
mov ecx, dword [esi + 0xa0]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
call fcn.0071aab0
mov ebx, dword [esi + 0x70]
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
movss xmm1, dword [ebx + 0xa4]
mov eax, dword [ebx + 0xa8]
mov edx, dword [ebx + 0xa0]
mov dword [esi + 0x60], eax
xor eax, eax
movapd xmmword [esi + 0x30], xmm1
mov ah, 1
lea ecx, [edx + 8]
lock cmpxchg byte [edx + 8], ah
je 0x51690c
mov dword [esi + 0x8e8], 6
mov dword [esi + 0x40], ecx
mov dword [esi + 0x90], edx
call fcn.0071aab0
mov edx, dword [esi + 0x90]
mov ecx, dword [esi + 0x40]
mov ebx, dword [esi + 0x70]
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
cmp byte [edx + 0x48], 0
je 0x516926
movss xmm2, dword [0x7255e0]
xor edx, edx
mov al, 1
lock cmpxchg byte [ecx], dl
jne 0x516968
jmp 0x51698f
mov eax, dword [edx + 0x44]
movq xmm1, qword [0x725628]
add eax, dword [edx + 0x40]
movd xmm0, eax
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm2, xmm0
movss xmm0, dword [edx + 0x18]
orpd xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
divss xmm2, xmm0
movss xmm0, dword [esi + 0x10]
xor edx, edx
mov al, 1
lock cmpxchg byte [ecx], dl
je 0x51698f
mov dword [esi + 0x8e8], 6
movss dword [esi + 0x40], xmm2
call fcn.0071ade0
movss xmm2, dword [esi + 0x40]
mov ebx, dword [esi + 0x70]
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
mov eax, dword [esi + 0x60]
cmp eax, dword [esi + 8]
jne 0x5169d2
movaps xmm1, xmmword [esi + 0x30]
subss xmm1, xmm0
andps xmm1, xmmword [0x725610]
ucomiss xmm1, dword [0x726510]
ja 0x5169d2
ucomiss xmm2, dword [0x726514]
ja 0x5169d2
mov eax, dword [ebx + 0xc0]
mov edx, dword [ebx + 0xb0]
mov edi, dword [ebx + 0xbc]
mov dword [esi + 0x40], eax
jmp 0x516b96
cmp dword [ebx + 0x90], 0
je 0x516a4d
mov edx, dword [ebx + 0x88]
mov dword [esi + 0x8e8], 6
test edx, edx
je 0x51841a
lea ecx, [esi + 0x3f8]
push dword [ebx + 0x8c]
call fcn.005b1d50
mov ebx, dword [esi + 0x70]
add esp, 4
lea edi, [esi + 0x3f8]
cmp dword [ebx + 0x9c], 0
je 0x516a6a
mov edx, dword [ebx + 0x94]
mov dword [esi + 0x8e8], 8
test edx, edx
je 0x518436
lea ecx, [esi + 0x128]
push dword [ebx + 0x98]
call fcn.004aae40
add esp, 4
lea edi, [esi + 0x3f8]
jmp 0x516a88
mov dword [esi + 0x3f8], 0
mov dword [esi + 0x400], 0
cmp dword [ebx + 0x9c], 0
jne 0x516a19
mov dword [esi + 0x128], 0
mov dword [esi + 0x130], 0
mov dword [esi + 0x8e8], 6
movsd xmm0, qword [esi + 0x3f8]
mov eax, dword [esi + 0x400]
movsd xmm1, qword [esi + 0x128]
mov ecx, dword [esi + 0x130]
mov edx, dword [esi + 8]
mov dword [esi + 0x8e8], 6
mov dword [esi + 0x340], eax
movsd qword [esi + 0x338], xmm0
mov dword [esi + 0x34c], ecx
movsd qword [esi + 0x344], xmm1
movsd qword [esi + 0x3f8], xmm0
movss xmm0, dword [esi + 0x10]
lea ecx, [esi + 0x128]
movsd xmm1, qword [esi + 0x348]
movsd xmm2, qword [esi + 0x340]
movsd qword [esi + 0x408], xmm1
movsd qword [esi + 0x400], xmm2
push edi
call fcn.005a0370
lea ecx, [esi + 0x3f8]
add esp, 4
mov ebx, dword [esi + 0x70]
push 0xa0
lea eax, [esi + 0x128]
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea ecx, [ebx + 0x10]
mov dword [esi + 0x8e8], 7
mov dword [esi + 0x10], ecx
call fcn.005a27a0
push 0xa0
lea eax, [esi + 0x3f8]
push eax
push dword [esi + 0x10]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esi + 0x70]
mov edx, 0x8cdfe0
xor edi, edi
mov dword [esi + 0x40], 0
mov dword [ebx + 0xb0], 0x8cdfe0
mov dword [ebx + 0xb8], 0
mov dword [ebx + 0xb4], 0
mov dword [ebx + 0xc0], 0
mov dword [ebx + 0xbc], 0
movdqa xmm0, xmmword [edx]
lea ecx, [edx + 0x10]
pcmpeqd xmm1, xmm1
mov dword [esi + 0x10], ecx
pmovmskb eax, xmm0
not eax
mov dword [esi + 8], eax
nop dword [eax]
test edi, edi
je 0x516cc4
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0x10]
test cx, cx
jne 0x516be9
nop word cs:[eax + eax]
nop dword [eax]
movdqa xmm0, xmmword [eax]
add edx, 0xffffff00
add eax, 0x10
pmovmskb ecx, xmm0
cmp cx, 0xffff
je 0x516bd0
not ecx
mov dword [esi + 0x10], eax
mov eax, ecx
dec edi
lea ecx, [eax - 1]
and ecx, eax
mov dword [esi + 8], ecx
tzcnt ecx, eax
mov eax, edx
shl ecx, 4
sub eax, ecx
mov ecx, dword [esi + 0x40]
cmp ecx, dword [eax - 4]
je 0x516bb0
mov dword [esi + 0x30], edi
mov edi, dword [ebx + 0xb0]
mov dword [esi + 0x60], edx
mov edx, edi
sub edx, eax
sar edx, 4
lea ecx, [edx - 0x10]
and ecx, dword [ebx + 0xb4]
movdqu xmm0, xmmword [edi + ecx]
mov dword [esi + 0x90], ecx
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb ecx, xmm0
test ecx, ecx
je 0x516c4b
bsr bx, cx
xor ebx, 0xf
jmp 0x516c4f
mov bx, 0x10
movdqu xmm0, xmmword [edi + edx]
pcmpeqb xmm0, xmm1
pmovmskb ecx, xmm0
or ecx, 0x10000
tzcnt ecx, ecx
add ebx, ecx
mov cl, 0x80
cmp bx, 0xf
mov ebx, dword [esi + 0x70]
ja 0x516c7b
inc dword [ebx + 0xb8]
mov cl, 0xff
mov byte [edi + edx], cl
mov edx, dword [esi + 0x90]
mov byte [edx + edi + 0x10], cl
dec dword [ebx + 0xbc]
mov ecx, dword [eax - 8]
lock dec dword [ecx]
mov edx, dword [esi + 0x60]
mov edi, dword [esi + 0x30]
jne 0x516bb0
mov ecx, dword [eax - 8]
mov dword [esi + 0x8e8], 6
call fcn.005b3d40
mov edi, dword [esi + 0x30]
mov edx, dword [esi + 0x60]
mov ebx, dword [esi + 0x70]
pcmpeqd xmm1, xmm1
jmp 0x516bb0
inc dword [ebx + 0xc0]
xor ecx, ecx
mov al, 1
lock cmpxchg byte [ebx + 8], cl
je 0x516cee
mov ecx, dword [esi + 0xa0]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
call fcn.0071ade0
mov eax, dword [esi + 0x88]
cmp byte [eax + 0x215], 0
je 0x5175d4
mov eax, dword [eax + 0x1fc]
mov ecx, dword [eax + 0x204]
test ecx, ecx
je 0x516d50
mov edx, dword [eax + 0x208]
mov eax, dword [eax + 0x20c]
mov dword [esi + 0x33c], 0
mov dword [esi + 0x340], ecx
mov dword [esi + 0x344], edx
mov dword [esi + 0x34c], 0
mov dword [esi + 0x350], ecx
mov ecx, 1
mov dword [esi + 0x354], edx
jmp 0x516d54
xor ecx, ecx
xor eax, eax
mov dword [esi + 0x338], ecx
mov dword [esi + 0x348], ecx
mov dword [esi + 0x358], eax
mov dword [esi + 0x8e8], 5
lea ecx, [esi + 0x338]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
call fcn.0052a450
test eax, eax
je 0x5175ce
test edx, edx
je 0x5175ce
mov eax, dword [esi + 0xe0]
mov cl, 1
mov ebx, dword [eax]
xor eax, eax
lock cmpxchg byte [ebx + 8], cl
lea edi, [ebx + 8]
mov dword [esi + 0x28], edi
je 0x516dc9
mov ecx, edi
mov byte [esi + 0xf], 0
mov dword [esi + 0x10], edx
mov dword [esi + 8], ebx
call fcn.0071aab0
mov ebx, dword [esi + 8]
mov edx, dword [esi + 0x10]
add ebx, 0x10
mov dword [esi + 0x8e8], 0x24
mov ecx, ebx
call fcn.005a2a40
mov edx, eax
lea ecx, [eax + 0x10]
lea edi, [eax + 0x20]
pcmpeqd xmm3, xmm3
mov dword [esi + 0x10], 0x20
mov dword [esi + 0x30], eax
add edx, 0x50
mov dword [esi + 0x5c], ecx
mov dword [esi + 0x2c], edi
mov dword [esi + 0xd0], edx
jmp 0x516e75
mov eax, dword [esi + 0x90]
lea eax, [eax + edx - 0x2c]
mov ecx, dword [esi + 0x60]
mov dword [eax], ecx
movsd xmm0, qword [esi + 0x3f8]
movq xmm1, qword [esi + 0x400]
movsd qword [eax + 4], xmm0
movq qword [eax + 0xc], xmm1
movsd xmm0, qword [esi + 0x408]
movsd qword [eax + 0x14], xmm0
movsd xmm0, qword [esi + 0x410]
movsd qword [eax + 0x1c], xmm0
movq xmm0, qword [esi + 0x418]
movq qword [eax + 0x24], xmm0
mov eax, dword [esi + 0x10]
cmp eax, 0x7e
lea eax, [eax + 1]
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x30]
jae 0x517570
cmp dword [eax + 0x1c], 0
je 0x516ff0
mov eax, dword [esi + 0x30]
mov edx, 0x2df45158
mov ecx, dword [eax + 0x20]
mov edi, eax
mov ebx, dword [edi + 0x24]
xor ecx, dword [esi + 0x10]
mov eax, ecx
mul edx
mov dword [esi + 8], eax
imul eax, ecx, 0x2d7f954c
bswap ecx
add eax, edx
imul edx, ebx, 0x2df45158
bswap ebx
add edx, eax
mov eax, ebx
imul ebx, ebx, 0xa7ae0bd2
mov dword [esi + 0x60], edx
mov edx, 0xb36a80d2
mul edx
mov edi, eax
imul eax, ecx, 0xb36a80d2
mov ecx, dword [esi + 0x30]
add ebx, edx
add eax, ebx
bswap edi
bswap eax
xor edi, dword [esi + 0x60]
xor eax, dword [esi + 8]
mov edx, dword [ecx + 0x2c]
mov ebx, dword [ecx + 0x28]
mov dword [esi + 0x40], eax
mov ecx, ebx
mov dword [esi + 0x90], edx
bswap edx
not ebx
bswap ecx
mov dword [esi + 8], edx
imul ecx, eax
mul dword [esi + 8]
mov dword [esi + 0x60], eax
mov eax, dword [esi + 8]
add edx, ecx
imul eax, edi
bswap edi
add eax, edx
mov dword [esi + 8], eax
mov eax, dword [esi + 0x90]
not eax
imul eax, edi
mov ecx, eax
mov eax, edi
mov edi, dword [esi + 0x40]
mov dword [esi + 0x40], 0
mul ebx
add edx, ecx
bswap eax
xor eax, dword [esi + 8]
mov ecx, edi
bswap ecx
imul ebx, ecx
mov ecx, edi
add ebx, edx
mov edx, eax
bswap ebx
xor ebx, dword [esi + 0x60]
test cl, 0x20
cmovne edx, ebx
cmovne ebx, eax
mov eax, dword [esi + 0x30]
shld ebx, edx, cl
mov edi, dword [eax + 0x14]
mov ecx, dword [eax + 0x10]
mov eax, ebx
shr eax, 0x19
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
mov eax, ecx
add ecx, 0xffffffd0
mov dword [esi + 8], edi
pshufd xmm0, xmm0, 0
mov dword [esi + 0x60], ecx
mov dword [esi + 0x90], eax
and ebx, edi
movdqa xmm2, xmm0
movdqu xmm1, xmmword [eax + ebx]
mov edx, ebx
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
test ax, ax
je 0x516fc0
lea edi, [eax - 1]
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 0x60]
and edi, eax
tzcnt eax, eax
add eax, edx
and eax, dword [esi + 8]
neg eax
lea eax, [eax + eax*2]
shl eax, 4
cmp ecx, dword [ebx + eax]
mov eax, edi
jne 0x516f90
jmp 0x516e60
pcmpeqb xmm1, xmm3
pmovmskb eax, xmm1
test eax, eax
jne 0x516ff0
mov eax, dword [esi + 0x40]
mov ebx, edx
mov edi, dword [esi + 8]
lea ebx, [edx + eax + 0x10]
add eax, 0x10
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x90]
jmp 0x516f7b
mov ebx, dword [esi + 0x30]
mov eax, dword [ebx + 0x48]
test eax, eax
je 0x517053
mov ecx, dword [ebx + 0x40]
mov dword [esi + 0x8e8], 0x24
mov dword [esi + 0x60], 0
lea eax, [ecx + eax*4]
mov dword [esi + 0x40], eax
nop word cs:[eax + eax]
nop
mov edx, dword [ecx]
mov dword [esi + 8], ecx
lea ecx, [esi + 0x128]
add edx, 8
push dword [esi + 0x10]
call fcn.005abf30
mov ebx, dword [esi + 0x30]
add esp, 4
cmp dword [esi + 0x128], 0
jne 0x5170a6
mov ecx, dword [esi + 8]
inc dword [esi + 0x60]
add ecx, 4
cmp ecx, dword [esi + 0x40]
jne 0x517020
mov ecx, dword [esi + 0xd0]
mov eax, dword [ebx + 0x4c]
xor edi, edi
movsd xmm0, qword [ecx + 0x20]
mov dword [esi + 0x60], eax
movsd qword [esi + 0x418], xmm0
movsd xmm0, qword [ecx + 0x18]
movsd qword [esi + 0x410], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd qword [esi + 0x408], xmm0
movq xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
movq qword [esi + 0x400], xmm1
movq qword [esi + 0x3f8], xmm0
jmp 0x5172f2
mov ecx, dword [ebx + 0x20]
mov edx, 0x2df45158
xor ecx, dword [esi + 0x10]
mov eax, ecx
mul edx
mov dword [esi + 0x40], eax
imul eax, ecx, 0x2d7f954c
bswap ecx
add eax, edx
mov edx, dword [esi + 0x30]
mov ebx, dword [edx + 0x24]
mov edx, 0xb36a80d2
imul edi, ebx, 0x2df45158
bswap ebx
add edi, eax
mov eax, ebx
mul edx
mov dword [esi + 8], eax
imul eax, ebx, 0xa7ae0bd2
add eax, edx
imul edx, ecx, 0xb36a80d2
add edx, eax
mov eax, dword [esi + 8]
bswap edx
xor edx, dword [esi + 0x40]
bswap eax
xor eax, edi
mov dword [esi + 8], eax
mov eax, dword [esi + 0x30]
mov dword [esi + 0x40], edx
mov ebx, dword [eax + 0x2c]
mov eax, dword [esi + 0x30]
mov edi, dword [eax + 0x28]
mov dword [esi + 0x70], ebx
bswap ebx
mov eax, edx
mov ecx, edi
not edi
bswap ecx
imul ecx, edx
mul ebx
mov dword [esi + 0x90], eax
add edx, ecx
mov ecx, dword [esi + 0x70]
mov eax, dword [esi + 8]
imul ebx, eax
bswap eax
not ecx
add ebx, edx
imul ecx, eax
mul edi
add edx, ecx
mov ecx, dword [esi + 0x40]
bswap eax
xor eax, ebx
bswap ecx
imul edi, ecx
mov ecx, dword [esi + 0x40]
add edi, edx
mov edx, dword [esi + 0x30]
bswap edi
xor edi, dword [esi + 0x90]
test cl, 0x20
mov ebx, edi
cmove edi, eax
cmovne ebx, eax
shld ebx, edi, cl
cmp dword [edx + 0x18], 0
mov edi, ebx
jne 0x517182
mov ecx, dword [esi + 0x5c]
mov edx, dword [esi + 0x2c]
mov dword [esi + 8], edi
call fcn.007156a0
mov edi, dword [esi + 8]
mov edx, dword [esi + 0x30]
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0x14]
mov edx, edi
pcmpeqd xmm3, xmm3
mov dword [esi + 0xa0], 0
mov dword [esi + 0x70], 0
shr edx, 0x19
movd xmm0, edx
mov dword [esi + 0x24], edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea edx, [eax - 0x30]
mov dword [esi + 0x90], eax
mov dword [esi + 8], ecx
pshufd xmm0, xmm0, 0
mov dword [esi + 0x40], edx
and edi, ecx
movdqa xmm2, xmm0
movdqu xmm1, xmmword [eax + edi]
mov ecx, edi
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
nop dword [eax + eax]
test ax, ax
je 0x517210
lea edi, [eax - 1]
mov ebx, dword [esi + 0x40]
and edi, eax
tzcnt eax, eax
add eax, ecx
and eax, dword [esi + 8]
neg eax
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x10]
shl edx, 4
cmp eax, dword [ebx + edx]
mov eax, edi
jne 0x5171e0
jmp 0x517267
mov edi, ecx
cmp dword [esi + 0x70], 1
mov ecx, dword [esi + 8]
mov edx, 1
je 0x517236
pmovmskb eax, xmm1
xor edx, edx
test eax, eax
setne dl
tzcnt eax, eax
add eax, edi
and eax, ecx
mov dword [esi + 0x20], eax
pcmpeqb xmm1, xmm3
pmovmskb eax, xmm1
test eax, eax
jne 0x517516
mov eax, dword [esi + 0xa0]
mov dword [esi + 0x70], edx
lea edi, [edi + eax + 0x10]
add eax, 0x10
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0x90]
jmp 0x5171c6
mov eax, dword [esi + 0x90]
mov ebx, dword [esi + 0x30]
lea eax, [eax + edx - 0x2c]
mov ecx, dword [esi + 0x60]
lea edx, [esi + 0x12c]
xor edi, edi
mov dword [eax], ecx
movsd xmm0, qword [edx]
movsd xmm1, qword [edx + 8]
movsd qword [eax + 4], xmm0
movsd qword [eax + 0xc], xmm1
movsd xmm0, qword [edx + 0x10]
movsd qword [eax + 0x14], xmm0
movsd xmm0, qword [edx + 0x18]
movsd qword [eax + 0x1c], xmm0
movsd xmm0, qword [edx + 0x20]
movsd qword [eax + 0x24], xmm0
movsd xmm2, qword [edx + 0x18]
movsd xmm1, qword [edx + 0x10]
movq xmm0, qword [edx + 0x20]
movsd qword [esi + 0x410], xmm2
movsd qword [esi + 0x408], xmm1
movsd xmm2, qword [edx]
movq xmm1, qword [edx + 8]
movq qword [esi + 0x418], xmm0
movq qword [esi + 0x400], xmm1
movsd qword [esi + 0x3f8], xmm2
mov ecx, dword [esi + 0x10]
xor edi, dword [ebx + 0x24]
mov edx, 0x2df45158
xor ecx, dword [ebx + 0x20]
mov eax, ecx
mul edx
mov dword [esi + 8], eax
imul eax, ecx, 0x2d7f954c
bswap ecx
add eax, edx
imul edx, edi, 0x2df45158
bswap edi
add edx, eax
mov eax, edi
mov dword [esi + 0x40], edx
mov edx, 0xb36a80d2
mul edx
mov ebx, eax
imul eax, edi, 0xa7ae0bd2
add eax, edx
imul edx, ecx, 0xb36a80d2
bswap ebx
add edx, eax
mov eax, dword [esi + 0x30]
xor ebx, dword [esi + 0x40]
bswap edx
xor edx, dword [esi + 8]
mov eax, dword [eax + 0x2c]
mov dword [esi + 0x40], edx
mov dword [esi + 0x70], eax
bswap eax
mov dword [esi + 8], eax
mov eax, dword [esi + 0x30]
mov edi, dword [eax + 0x28]
mov eax, edx
mov ecx, edi
not edi
bswap ecx
imul ecx, edx
mul dword [esi + 8]
mov dword [esi + 0x90], eax
mov eax, dword [esi + 8]
add edx, ecx
imul eax, ebx
bswap ebx
add eax, edx
mov dword [esi + 8], eax
mov eax, dword [esi + 0x70]
not eax
imul eax, ebx
mov ecx, eax
mov eax, ebx
mov ebx, dword [esi + 0x30]
mul edi
add edx, ecx
mov ecx, dword [esi + 0x40]
bswap eax
xor eax, dword [esi + 8]
bswap ecx
imul edi, ecx
mov ecx, dword [esi + 0x40]
add edi, edx
bswap edi
xor edi, dword [esi + 0x90]
test cl, 0x20
mov edx, edi
cmove edi, eax
cmovne edx, eax
shld edx, edi, cl
cmp dword [ebx + 0x18], 0
mov edi, edx
jne 0x5173de
mov ecx, dword [esi + 0x5c]
mov edx, dword [esi + 0x2c]
mov dword [esi + 0x8e8], 0x24
mov dword [esi + 8], edi
call fcn.007156a0
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x30]
mov eax, edi
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
pcmpeqd xmm3, xmm3
mov dword [esi + 0x70], 0
mov dword [esi + 0x40], 0
shr eax, 0x19
movd xmm0, eax
mov dword [esi + 0xa0], eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea ebx, [edx - 0x30]
mov dword [esi + 0x90], edx
mov dword [esi + 8], ecx
pshufd xmm0, xmm0, 0
and edi, ecx
movdqa xmm2, xmm0
movdqu xmm1, xmmword [edx + edi]
mov ecx, edi
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
nop word cs:[eax + eax]
nop
test ax, ax
je 0x517470
lea edi, [eax - 1]
and edi, eax
tzcnt eax, eax
add eax, ecx
and eax, dword [esi + 8]
neg eax
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x10]
shl edx, 4
cmp eax, dword [ebx + edx]
mov eax, edi
jne 0x517440
jmp 0x516e10
cmp dword [esi + 0x40], 1
mov edx, 1
je 0x517492
pmovmskb eax, xmm1
xor edx, edx
test eax, eax
setne dl
tzcnt eax, eax
add eax, ecx
and eax, dword [esi + 8]
mov dword [esi + 0x24], eax
mov dword [esi + 0x40], edx
mov edx, dword [esi + 0x90]
pcmpeqb xmm1, xmm3
pmovmskb eax, xmm1
test eax, eax
jne 0x5174be
mov eax, dword [esi + 0x70]
mov edi, ecx
lea edi, [ecx + eax + 0x10]
mov ecx, dword [esi + 8]
add eax, 0x10
mov dword [esi + 0x70], eax
jmp 0x51741f
mov ebx, dword [esi + 0x24]
movzx eax, byte [edx + ebx]
test al, al
js 0x5174d9
movdqa xmm0, xmmword [edx]
pmovmskb eax, xmm0
tzcnt ebx, eax
movzx eax, byte [edx + ebx]
mov edi, edx
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 8]
and al, 1
movzx eax, al
sub dword [edx + 0x18], eax
lea eax, [ebx - 0x10]
and ecx, eax
mov eax, dword [esi + 0xa0]
mov byte [edi + ebx], al
mov byte [ecx + edi + 0x10], al
inc dword [edx + 0x1c]
mov edx, dword [esi + 0x10]
neg ebx
lea eax, [ebx + ebx*2]
shl eax, 4
mov dword [edi + eax - 0x30], edx
lea eax, [edi + eax - 0x2c]
jmp 0x516e1a
mov edx, dword [esi + 0x90]
mov edi, dword [esi + 0x20]
movzx eax, byte [edx + edi]
test al, al
js 0x517537
movdqa xmm0, xmmword [edx]
pmovmskb eax, xmm0
tzcnt edi, eax
movzx eax, byte [edx + edi]
mov ebx, dword [esi + 0x30]
and al, 1
movzx eax, al
sub dword [ebx + 0x18], eax
lea eax, [edi - 0x10]
and ecx, eax
mov eax, dword [esi + 0x24]
mov byte [edx + edi], al
neg edi
mov byte [ecx + edx + 0x10], al
inc dword [ebx + 0x1c]
lea eax, [edi + edi*2]
mov edi, dword [esi + 0x10]
shl eax, 4
mov dword [edx + eax - 0x30], edi
lea eax, [edx + eax - 0x2c]
jmp 0x517274
mov edx, eax
mov dword [esi + 0x8e8], 0x24
lea ecx, [esi + 0x128]
push 0xb0
call fcn.005ad920
mov edx, dword [esi + 0x30]
add esp, 4
lea ecx, [esi + 0x128]
push 0x2022
call fcn.005ad920
add esp, 4
mov ecx, dword [esi + 0x28]
mov al, 1
xor edx, edx
lock cmpxchg byte [ecx], dl
je 0x516d70
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
call fcn.0071ade0
jmp 0x516d70
mov eax, dword [esi + 0x88]
mov word [esi + 0x138], 0
lea ecx, [eax + 0x130]
mov edx, 1
movsd xmm0, qword [eax + 0x350]
movsd xmm1, qword [eax + 0x348]
lea eax, [esi + 0x128]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
subps xmm0, xmm1
movsd qword [esi + 0x128], xmm1
movlps qword [esi + 0x130], xmm0
mov byte [esi + 0x13a], 1
push eax
push 0
push 0
call fcn.005604b0
add esp, 0xc
mov ecx, dword [esi + 0x124]
xor edx, edx
mov eax, 8
lock cmpxchg dword [ecx], edx
jne 0x517cbf
mov eax, dword [esi + 0x8e0]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0x2a0], 0
mov dword [esi + 0x5d8], 0
mov dword [esi + 0x2a8], 0
mov dword [esi + 0x5e0], 0
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x5176a8
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x5184e2
mov dword [0x919820], eax
push 4
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x5184e2
movaps xmm0, xmmword [0x7264e0]
mov dword [eax], 0x6b636148
mov dword [esi + 0x338], eax
lea eax, [esi + 0x3f8]
mov dword [esi + 0x33c], 4
mov dword [esi + 0x408], 0
mov dword [esi + 0x40c], 0x744474
mov dword [esi + 0x410], 0x4b8a0
mov dword [esi + 0x414], 0
mov dword [esi + 0x340], 4
mov dword [esi + 0x8e8], 9
lea ecx, [esi + 0x128]
lea edx, [esi + 0x2a0]
movups xmmword [esi + 0x3f8], xmm0
push eax
lea eax, [esi + 0x338]
push eax
call fcn.005af250
add esp, 8
cmp dword [esi + 0x128], 0
je 0x517768
mov eax, dword [esi + 0x13c]
test eax, eax
je 0x517768
cmp dword [esi + 0x140], 0
je 0x517768
push eax
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
lea edi, [esi + 0x3f8]
test eax, eax
jne 0x517791
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je FindClose
mov dword [0x919820], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je FindClose
movaps xmm0, xmmword [0x7264e0]
mov dword [eax + 8], 0x74686769
mov dword [eax + 4], 0x4c2d7574
mov dword [eax], 0x6e756255
mov dword [esi + 0x338], eax
mov dword [esi + 0x33c], 0xc
mov dword [esi + wglGetCurrentDCx408], 0
mov dword [esi + 0x40c], 0x78fd14
mov dword [esi + 0x410], 0x584cc
mov dword [esi + wglGetProcAddressx414], 0
mov dword [esi + 0x340], 0xc
lea ecx, [esi + 0x128]
lea edx, [esi + 0x2a0]
movups xmmword [esi + 0x3f8], xmm0
push edi
lea eax, [esi + 0x338]
push eax
call fcn.005af250
add esp, 8
cmp dword [esi + 0x128], 0
je 0x51784f
mov eax, dword [esi + 0x13c]
test eax, eax
je 0x51784f
cmp dword [esi + 0x140], 0
je 0x51784f
push eax
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
lea edi, [esi + 0x3f8]
test eax, eax
jne reloc.kernel32.dll_HeapReAlloc
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518514
mov dword [0x919820], eax
push HeapReAlloc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je HeapFree
movaps xmm0, xmmword [0x7264f0]
mov byte [eax + 0x10], 0x72
mov dword [eax + 0xc], 0x616c7567
mov dword [eax + 8], 0x65522d69
mov dword [eax + 4], 0x6a6f6d45
mov dword [eax], 0x6f746f4e
mov dword [esi + 0x338], eax
mov dword [esi + 0x33c], 0x11
mov dword [esi + 0x408], 0
mov dword [esi + 0x40c], 0x7e81e0
mov dword [esi + 0x410], 0x663f4
mov dword [esi + GlobalFreex414], 0
mov dword [esi + 0x340], 0x11
lea ecx, [esi + 0x128]
lea edx, [esi + 0x2a0]
movups xmmword [esi + 0x3f8], xmm0
push edi
lea eax, [esi + 0x338]
push eax
call fcn.005af250
add esp, 8
cmp dword [esi + 0x128], 0
je 0x517941
mov eax, dword [esi + 0x13c]
test eax, eax
je 0x517941
cmp dword [esi + 0x140], 0
je 0x517941
push eax
push 0
push dword [SwitchToThread]
call dword [sym.imp.kernel32.dll_HeapFree]
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
lea edi, [esi + 0x3f8]
test eax, eax
jne 0x51796a
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je GetEnvironmentStringsW
mov dword [0x919820], eax
push 0xf
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je GetEnvironmentStringsW
movaps xmm0, xmmword [0x726500]
mov dword [eax + 0xb], 0x746e6f66
mov dword [eax + 8], 0x662d6e6f
mov dword [eax + 4], 0x63692d69
mov dword [eax], 0x6a6f6d65
mov dword [esi + 0x338], eax
mov dword [esi + 0x33c], 0xf
mov dword [esi + 0x408], 0
mov dword [esi + 0x40c], 0x84e5d4
mov dword [esi + 0x410], 0x4d9a8
mov dword [esi + 0x414], 0
mov dword [esi + 0x340], 0xf
lea ecx, [esi + 0x128]
lea edx, [esi + 0x2a0]
movups xmmword [esi + 0x3f8], xmm0
push edi
lea eax, [esi + 0x338]
push eax
call fcn.005af250
add esp, 8
cmp dword [esi + 0x128], 0
je GetMessageW
mov eax, dword [esi + 0x13c]
test eax, eax
je QueryPerformanceCounter
cmp dword [esi + 0x140], 0
je GetMessageW
push eax
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esi + 0x3f8], 1
lea edi, [esi + 0x3f8]
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517a62
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x51853c
mov dword [0x919820], eax
push 0x30
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x51853c
mov ebx, eax
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517a9a
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518561
mov dword [0x919820], eax
push 4
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518561
mov dword [esi + 0x60], eax
mov dword [eax], 0x6b636148
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517ad9
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518582
mov dword [0x919820], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je SetWindowPos
mov dword [eax + 8], 0x74686769
mov dword [eax + 4], 0x4c2d7574
mov dword [esi + 0x30], eax
mov dword [eax], 0x6e756255
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517b26
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x5185a3
mov dword [0x919820], eax
push 0x11
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je MapVirtualKeyA
mov byte [eax + 0x10], 0x72
mov dword [eax + 0xc], 0x616c7567
mov dword [eax + 8], 0x65522d69
mov dword [eax + 4], 0x6a6f6d45
mov dword [esi + 0x40], eax
mov dword [eax], 0x6f746f4e
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517b7e
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je CreateWindowExW
mov dword [0x919820], eax
push 0xf
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x5185c4
mov ecx, dword [esi + 0x60]
mov dword [eax + 0xb], 0x746e6f66
mov dword [eax + 8], 0x662d6e6f
mov dword [eax + 4], 0x63692d69
mov dword [eax], 0x6a6f6d65
lea edx, [esi + 0x5d8]
mov dword [ebx], ecx
mov ecx, dword [esi + 0x30]
mov dword [ebx + 4], 4
mov dword [ebx + 8], 4
mov dword [ebx + 0xc], ecx
mov ecx, dword [esi + 0x40]
mov dword [ebx + 0x10], 0xc
mov dword [ebx + 0x14], 0xc
mov dword [ebx + 0x18], ecx
mov dword [ebx + 0x1c], 0x11
mov dword [ebx + 0x20], 0x11
mov dword [ebx + 0x24], eax
lea eax, [esi + 0x128]
mov dword [ebx + 0x28], 0xf
mov dword [ebx + 0x2c], 0xf
mov dword [esi + 0x128], ebx
mov dword [esi + 0x12c], 4
mov dword [esi + 0x130], 4
mov byte [esi + 0xbe], 0
mov dword [esi + 0x8e8], 0xa
lea ecx, [esi + 0x338]
push eax
push edi
call fcn.005b05d0
add esp, 8
mov edi, dword [esi + 0x338]
test edi, edi
je DeleteObject
mov ebx, dword [esi + 0x340]
add edi, 4
jmp 0x517c63
add edi, 0xc
sub ebx, 1
jb 0x517c80
cmp dword [edi], 0
je 0x517c60
push dword [edi - 4]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x517c60
cmp dword [esi + 0x33c], 0
je 0x517c9d
push dword [esi + 0x338]
push 0
push dword [0x919820]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esi + 0x3f8], 0
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
je MonitorFromWindow
lea edi, [esi + 0x3f8]
jmp 0x517cec
mov dword [esi + 0x8e8], 0xffffffff
call fcn.00719150
jmp 0x517649
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
lea edi, [esi + 0x3f8]
je reloc.kernel32.dll_DuplicateHandle
mov dword [0x919820], eax
push 0x24
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je reloc.kernel32.dll_DuplicateHandle
mov ebx, eax
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517d24
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je GetDeviceCaps
mov dword [0x919820], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je CreateNamedPipeW
mov dword [eax + 8], 0x74686769
mov dword [eax + 4], 0x4c2d7574
mov dword [esi + 0x60], eax
mov dword [eax], 0x6e756255
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517d71
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x518622
mov dword [0x919820], eax
push 0x11
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x518622
mov byte [eax + 0x10], 0x72
mov dword [eax + 0xc], 0x616c7567
mov dword [eax + 8], 0x65522d69
mov dword [eax + 4], 0x6a6f6d45
mov dword [esi + 0x30], eax
mov dword [eax], 0x6f746f4e
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x517dc9
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je WriteFileEx
mov dword [0x919820], eax
push 0xf
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je SwapBuffers
mov ecx, dword [esi + 0x60]
mov dword [eax + 0xb], 0x746e6f66
mov dword [eax + 8], 0x662d6e6f
mov dword [eax + 4], 0x63692d69
mov dword [eax], 0x6a6f6d65
lea edx, [esi + 0x5d8]
mov dword [ebx], ecx
mov ecx, dword [esi + 0x30]
mov dword [ebx + 4], 0xc
mov dword [ebx + 8], 0xc
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x10], 0x11
mov dword [ebx + 0x14], 0x11
mov dword [ebx + 0x18], eax
lea eax, [esi + 0x128]
mov dword [ebx + 0x1c], 0xf
mov dword [ebx + 0x20], 0xf
mov dword [esi + 0x128], ebx
mov dword [esi + 0x12c], 3
mov dword [esi + 0x130], 3
mov byte [esi + 0xbf], 0
mov dword [esi + 0x8e8], 0xf
lea ecx, [esi + 0x338]
push eax
push edi
call fcn.005b05d0
add esp, 8
mov edi, dword [esi + 0x338]
test edi, edi
je 0x517ed7
mov ebx, dword [esi + 0x340]
add edi, 4
jmp 0x517e93
add edi, 0xc
sub ebx, 1
jb 0x517eb0
cmp dword [edi], 0
je 0x517e90
push dword [edi - 4]
push 0
push dword [GetClipboardData]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x517e90
cmp dword [esi + 0x33c], 0
je GlobalLock
push dword [esi + 0x338]
push 0
push dword [GlobalSize]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esi + 0x8e8], 5
movsd xmm0, qword [esi + 0x2a0]
mov eax, dword [esi + 0x2a8]
mov ecx, dword [esi + 8]
lea edx, [esi + 0x128]
mov byte [esi + 0xf], 0
mov dword [esi + 0x8e8], 5
movsd qword [esi + 0x128], xmm0
movsd xmm0, qword [esi + 0x5d8]
mov dword [esi + 0x130], eax
mov eax, dword [esi + 0x5e0]
movsd qword [esi + 0x134], xmm0
movss xmm0, dword [esi + 0x10]
mov dword [esi + 0x13c], eax
call fcn.005a0210
movss xmm0, dword [esi + 0x10]
lea edi, [esi + 0x3f8]
mov ebx, eax
jmp 0x51684b
mov dword [esi + 0x8e8], 2
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x740b4c
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x741424
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.assertion_failed:_self.height___0
mov edx, 0x21
push 0x8c7f20
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, 8
mov edx, 0xe8
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
call fcn.00709d20
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x740b74
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x7410e0
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, 8
mov edx, 0x508
mov dword [esi + 0x8e8], 0x1a
call fcn.00709d20
jmp ScreenToClient
mov dword [esi + 0x8e8], 0x1a
mov ecx, str.assertion_failed:_edge.height__self.node.height___1
mov edx, 0x35
push 0x8c7fc0
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x1c
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push 0x8c7f58
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x1c
mov edx, 0xc
push 0x8c7f78
call fcn.0070a080
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x1d
mov ecx, edi
mov edx, 0xb
push GetTouchInputInfo
call fcn.0070a080
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x1d
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push 0x8c7f58
call fcn.0070a0f0
add esp, 4
jmp MultiByteToWideChar
mov ecx, 8
mov edx, 0x118
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
call fcn.00709d20
jmp 0x51865c
mov dword [esi + 0x8e8], 0x16
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push 0x8c7f58
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x16
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push 0x8c7f58
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x16
mov edx, 0xc
push 0x8c7f78
call fcn.0070a080
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x16
mov ecx, edi
mov edx, 0xb
push 0x8c7f68
call fcn.0070a080
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push LoadLibraryExW
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x7410f0
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, 8
mov edx, 0x4d8
mov dword [esi + 0x40], ebx
mov dword [esi + 0x8e8], 0x19
call fcn.00709d20
jmp 0x51865c
mov ecx, 8
mov edx, 0x4d8
mov dword [esi + 0x40], ebx
mov dword [esi + 0x8e8], 0x20
call fcn.00709d20
jmp 0x51865c
mov dword [esi + 0x40], ebx
mov dword [esi + 0x8e8], 0x22
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push 0x8c7f58
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x40], ebx
mov dword [esi + 0x8e8], 0x22
mov edx, 0xb
push 0x8c7f68
call fcn.0070a080
add esp, 4
jmp GetFinalPathNameByHandleW
mov byte [esi + 0x8e], 0
mov byte [esi + 0x8f], 1
mov ecx, 0x8f7944
mov edx, 0x46
push 0x8f79dc
push 0x740b84
lea eax, [esi + 0x128]
push eax
call fcn.0070a360
add esp, 0xc
jmp send
mov ecx, 8
mov edx, 0xe8
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
call fcn.00709d20
jmp 0x51865c
mov dword [esi + 0x8e8], 0x17
mov ecx, str.assertion_failed:_src.len____dst.len__
mov edx, 0x28
push SHCreateItemFromParsingName
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov dword [esi + 0x8e8], 0x17
mov ecx, ebx
mov edx, 0xb
push 0x8c7f68
call fcn.0070a080
add esp, 4
jmp InitOnceBeginInitialize
mov ecx, 8
mov edx, 0x118
mov dword [esi + 0x8e8], 3
call fcn.00709d20
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.assertion_failed:_edge.height__self.height___1
mov edx, 0x30
push GetStdHandle
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.assertion_failed:_idx___CAPACITY_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_alloc_srccollections_btree_node.rs
mov edx, 0x20
push 0x8c7e54
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov byte [esi + 0xc], 1
mov byte [esi + 0xd], 1
mov byte [esi + 0xe], 1
mov dword [esi + 0x8e8], 0x13
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push WaitForSingleObjectEx
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x89c7cc
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push GetCurrentProcessId
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, 8
mov edx, 0x508
mov dword [esi + 0x8e8], 1
call fcn.00709d20
jmp 0x51865c
mov dword [esi + 0x8e8], 0x1f
mov ecx, str.assertion_failed:_edge.height__self.height___1
mov edx, 0x30
push 0x8c7e94
call fcn.0070a0f0
add esp, 4
jmp GetModuleHandleW
mov dword [esi + 0x8e8], 0x1f
mov ecx, str.assertion_failed:_idx___CAPACITY_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_alloc_srccollections_btree_node.rs
mov edx, 0x20
push 0x8c7e54
call fcn.0070a0f0
add esp, 4
jmp CreateFileW
mov dword [esi + 0x8e8], 0x1e
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_std_src_synconce.rs
mov edx, 0x2b
push 0x8c7dc8
call fcn.0070a0f0
add esp, 4
jmp 0x51865c
mov ecx, 1
mov edx, 4
mov dword [esi + 0x8e8], 9
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xc
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0x11
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xf
call fcn.00709d20
jmp 0x51865c
mov ecx, 4
mov edx, 0x30
mov byte [esi + 0xbe], 1
mov dword [esi + 0x8e8], 0xa
call fcn.00709d20
jmp CompareStringOrdinal
mov ecx, 1
mov edx, 4
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0xb
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xc
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0xc
call fcn.00709d20
jmp GetWindowsDirectoryW
mov ecx, 1
mov edx, 0x11
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0xd
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xf
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0xe
call fcn.00709d20
jmp 0x51865c
mov ecx, 4
mov edx, 0x24
mov byte [esi + 0xbf], 1
mov dword [esi + 0x8e8], 0xf
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xc
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0x10
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0x11
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0x11
call fcn.00709d20
jmp 0x51865c
mov ecx, 1
mov edx, 0xf
mov dword [esi + 0x10], ebx
mov dword [esi + 0x8e8], 0x12
call fcn.00709d20
ud2