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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x2f0
mov edi, dword [ebp + 0xc]
mov dword [esp + 0xdc], ecx
lea esi, [esp + 0x80]
mov ebx, dword [ebp + 8]
mov dword [esp + 0x6c], edx
mov dword [esi], 1
mov edx, esi
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x18]
add ecx, eax
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov cl, byte [edi + 0x22]
mov word [esi + 0xc], 0
mov byte [esp + 0x1f], cl
lea ecx, [esp + 0x58]
call fcn.005c1880
push 0
call dword [sym.imp.kernel32.dll_GetModuleHandleW]
test eax, eax
jne 0x5d6273
call dword [sym.imp.kernel32.dll_GetLastError]
xor eax, eax
mov edx, dword [esp + 0x58]
xor ecx, ecx
mov dword [esp + 0x80], 0x30
mov dword [esp + 0x84], 0x23
mov dword [esp + 0x88], 0x5cd6b3
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa8], edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0xac], ecx
push esi
call dword [sym.imp.user32.dll_RegisterClassExW]
movzx eax, byte [ebx + 0x18f]
shl eax, 0x14
mov ecx, eax
or ecx, 0x200000
cmp byte [edi + 0x23], 0
cmove ecx, eax
cmp byte [ebx + 0x191], 0
lea edx, [ecx + 0x200]
cmove edx, ecx
cmp byte [ebx + 0x190], 0
movzx ecx, byte [edi + 0x21]
lea eax, [edx + 8]
cmove eax, edx
movzx edx, byte [ebx + 0x18e]
mov dword [esp + 0x14], ecx
shl ecx, 4
and eax, 0xffffe3ce
shl edx, 5
or edx, ecx
movzx ecx, byte [ebx + 0x188]
or ecx, edx
movzx edx, byte [ebx + 0x189]
shl edx, 0xa
or edx, ecx
movzx ecx, byte [ebx + 0x18a]
shl ecx, 0xb
or ecx, edx
mov edx, dword [edi + 8]
or ecx, eax
mov eax, ecx
or ecx, 0x81000
and eax, 0xfff7efff
or eax, 0x1000
cmp byte [ebx + 0x192], 0
cmovne ecx, eax
mov eax, edi
test edx, edx
je 0x5d638f
cmp edx, 1
jne 0x5d639f
mov edx, dword [eax + 0xc]
mov edi, eax
mov eax, 0x40
jmp 0x5d63a9
mov edi, eax
mov dword [esp + 0xb0], edx
mov eax, 4
jmp 0x5d63b0
mov edx, dword [eax + 0xc]
mov edi, eax
mov eax, 0x100
mov dword [esp + 0xb0], edx
lea esi, [esp + 0x58]
or ecx, eax
mov eax, dword [esi + 4]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], eax
call fcn.005c92e7
mov dword [esp + 0x70], eax
mov eax, dword [ebx + 0x178]
mov ecx, dword [ebx + 0x180]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x80]
mov dword [edx], 1
add ecx, eax
mov dword [edx + 4], eax
mov dword [edx + 8], ecx
mov ecx, esi
mov word [edx + 0xc], 0
call fcn.005c1880
mov ebx, dword [edi]
test ebx, ebx
je 0x5d6405
mov ebx, dword [edi + 4]
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
push 0
call dword [sym.imp.kernel32.dll_GetModuleHandleW]
mov esi, eax
test eax, eax
jne 0x5d6423
call dword [sym.imp.kernel32.dll_GetLastError]
xor esi, esi
mov al, byte [0x803894]
mov ecx, 4
mov edx, 4
call fcn.004889b0
test eax, eax
je 0x5d792e
mov ecx, dword [esp + 0x40]
mov dword [eax], ecx
mov ecx, 0x80000000
push eax
push esi
push ebx
push dword [esp + 0xbc]
push ecx
push ecx
push ecx
push ecx
push dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
push esi
push dword [esp + 0x54]
push dword [esp + 0x5c]
call dword [sym.imp.user32.dll_CreateWindowExW]
mov ebx, eax
push eax
call dword [sym.imp.user32.dll_IsWindow]
test eax, eax
je 0x5d6980
cmp dword [esp + 0x5c], 0
je 0x5d6499
push esi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
push 0x5e
call dword [sym.imp.user32.dll_GetSystemMetrics]
mov esi, dword [ebp + 8]
test al, al
jns 0x5d64b1
push 2
push ebx
call dword [sym.imp.user32.dll_RegisterTouchWindow]
mov ecx, ebx
call fcn.005c866a
cmp byte [esi + 0x18e], 0
mov edi, eax
je 0x5d6524
cmp byte [esp + 0x14], 0
jne 0x5d6524
xor eax, eax
mov dword [esp + 8], edi
mov edi, ebx
xor ebx, ebx
dec eax
push eax
push eax
push ebx
push ebx
call dword [sym.imp.gdi32.dll_CreateRectRgn]
mov dword [esp + 0x80], 3
mov dword [esp + 0x84], 1
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], ebx
mov ebx, edi
mov edi, dword [esp + 8]
mov esi, eax
lea eax, [esp + 0x80]
push eax
push ebx
call dword [sym.imp.dwmapi.dll_DwmEnableBlurBehindWindow]
push esi
mov esi, dword [ebp + 8]
call dword [sym.imp.gdi32.dll_DeleteObject]
movzx edx, byte [esi + 0x195]
mov ecx, ebx
mov dword [esp + 8], ebx
call fcn.005c8024
mov byte [esp + 0x70], al
mov eax, dword [ebp + 0xc]
mov al, byte [eax + 0x24]
mov byte [esp + 0x30], al
mov eax, dword [esi + 0x184]
test eax, eax
je 0x5d6557
lock inc dword [eax]
jle 0x5d792a
mov ecx, 0x10
xor edx, edx
mov dword [esp + 0xb0], eax
call fcn.00617f78
movsd xmm1, qword [esi + 0x20]
movq xmm0, qword [esi + 0x18]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov ecx, 0x1b8
mov edx, 8
movsd qword [esp + 0x1d4], xmm1
movq xmm1, qword [esi + 0x28]
movq qword [esp + 0x1cc], xmm0
movq qword [esp + 0x1dc], xmm1
mov al, byte [0x803894]
call fcn.004889b0
test eax, eax
je 0x5d7949
movd xmm0, edi
xor ecx, ecx
mov ebx, eax
lea eax, [esi + 0x30]
lea esi, [esp + 0x1a0]
por xmm0, xmmword [0x661de0]
inc ecx
lea edi, [ebx + 0x34]
mov dword [ebx], ecx
mov dword [ebx + 4], ecx
lea ecx, [ebx + 8]
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov byte [ebx + 8], cl
mov dword [ebx + 0x14], ecx
mov dword [ebx + 0x10], ecx
subsd xmm0, qword [0x661ad0]
movsd xmm1, qword [esp + 0x198]
divsd xmm0, qword [0x661df0]
movapd xmmword [esp + 0x100], xmm0
movsd xmm0, qword [esp + 0x190]
movsd qword [ebx + 0x20], xmm1
movsd qword [ebx + 0x18], xmm0
mov dword [ebx + 0x28], ecx
mov word [ebx + 0x2c], cx
mov dword [ebx + 0x30], ecx
mov ecx, 0x11
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x200]
movsd xmm0, qword [eax + 0x10]
movsd qword [ebx + 0x88], xmm0
movsd xmm0, qword [eax]
movq xmm1, qword [eax + 8]
mov eax, ebx
add eax, 0x94
movq qword [ebx + 0x80], xmm1
movsd qword [ebx + 0x78], xmm0
mov dword [ebx + 0x90], 2
push 0xec
push ecx
push eax
call fcn.0064a810
add esp, 0xc
mov eax, dword [esp + 0x14]
xor ecx, ecx
movaps xmm0, xmmword [esp + 0x100]
mov dword [ebx + 0x180], eax
mov eax, dword [esp + 0x18]
mov dword [ebx + 0x184], eax
mov dword [ebx + 0x188], ecx
mov byte [ebx + 0x18c], cl
movzx eax, word [esp + 0xe6]
mov word [ebx + 0x18d], ax
mov al, byte [esp + 0xe8]
mov byte [ebx + 0x18f], al
mov eax, dword [esp + 0xb0]
movsd qword [ebx + 0x190], xmm0
mov word [ebx + 0x198], cx
mov dword [ebx + 0x19c], eax
mov al, byte [esp + 0x70]
mov dword [ebx + 0x1a4], ecx
mov dword [ebx + 0x1a0], ecx
mov dword [ebx + 0x1a9], ecx
mov dword [ebx + 0x1a5], ecx
mov ecx, 0
mov byte [ebx + 0x1ad], al
mov al, byte [esp + 0x30]
mov word [ebx + 0x1ae], cx
mov byte [ebx + 0x1b0], al
mov eax, dword [esp + 0x161]
mov ecx, dword [esp + 0x164]
mov dword [ebx + 0x1b1], eax
mov dword [ebx + 0x1b4], ecx
mov cl, 1
xor eax, eax
lock cmpxchg byte [ebx + 8], cl
jne 0x5d774a
mov edi, dword [esp + 0x40]
mov esi, dword [ebx + 0x1a8]
xor ecx, ecx
mov al, 1
mov dword [ebx + 0x1a8], edi
lock cmpxchg byte [ebx + 8], cl
jne 0x5d7758
mov ecx, esi
mov esi, dword [esp + 8]
mov edx, esi
push edi
call fcn.005c912e
add esp, 4
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], ecx
mov dword [esp + 0x80], 0
call fcn.005ce0ea
mov ecx, eax
xor eax, eax
mov dl, 1
lock cmpxchg byte [ecx], dl
mov dword [esp + 0x30], ecx
jne 0x5d7766
mov ebx, dword [ecx + 0x18]
mov eax, dword [esp + 0x8c]
mov edx, dword [ecx + 0x1c]
mov esi, dword [ecx + 0x20]
mov edi, dword [ecx + 0x24]
mov ecx, ebx
mov dword [esp + 8], edx
mov dword [esp + 0x40], eax
push eax
push edi
mov dword [esp + 0x78], esi
push esi
call fcn.005f93a0
mov ecx, dword [esp + 0x3c]
add esp, 0xc
cmp dword [ecx + 0x10], 0
mov esi, dword [ebp + 8]
mov edx, eax
je 0x5d7778
lea eax, [esi + 0x18]
pcmpeqd xmm1, xmm1
mov dword [esp + 0x70], 0
mov dword [esp + 8], 0
mov dword [esp + 0xb0], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov ebx, ecx
and ebx, edx
shr edx, 0x19
movd xmm0, edx
mov dword [esp + 0x14], edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmm2, xmmword [eax + ebx]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb edi, xmm3
test di, di
je 0x5d6873
lea edx, [edi - 1]
bsf esi, edi
add esi, ebx
and edx, edi
mov edi, dword [esp + 0x40]
and esi, ecx
neg esi
lea esi, [esi + esi*8]
cmp edi, dword [eax + esi*8 - 0x48]
mov edi, edx
jne 0x5d684f
jmp 0x5d68c3
cmp dword [esp + 8], 1
mov edx, 1
mov dword [esp + 8], edx
je 0x5d689d
pmovmskb esi, xmm2
xor edx, edx
test esi, esi
setne dl
bsf esi, esi
add esi, ebx
mov dword [esp + 8], edx
and esi, ecx
mov dword [esp + 0x18], esi
pcmpeqb xmm2, xmm1
pmovmskb edx, xmm2
test edx, edx
jne 0x5d77f7
mov edx, dword [esp + 0x70]
lea ebx, [ebx + edx + 0x10]
add edx, 0x10
mov dword [esp + 0x70], edx
and ebx, ecx
jmp 0x5d683e
lea edx, [eax + esi*8]
mov ebx, dword [edx - 0x44]
mov eax, dword [edx - 0x20]
mov ecx, dword [edx - 0x1c]
mov esi, dword [edx - 0x14]
mov edi, dword [edx - 0x10]
mov dword [edx - 0x44], 2
and ebx, 0xfffffffe
cmp ebx, 2
je 0x5d690e
test ecx, ecx
je 0x5d68f7
push eax
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
test esi, esi
je 0x5d690e
test edi, edi
je 0x5d690e
push esi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [esp + 0x30]
xor ecx, ecx
mov al, 1
mov bh, 1
lock cmpxchg byte [edx], cl
jne 0x5d77a3
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x88]
mov bl, byte [eax + 0x20]
xor eax, eax
lea esi, [edi + 8]
lock cmpxchg byte [edi + 8], bh
jne 0x5d77af
mov byte [edi + 0x1ac], bl
xor ecx, ecx
mov al, 1
lock cmpxchg byte [edi + 8], cl
jne 0x5d77bb
mov esi, dword [esp + 0x8c]
movzx edx, bl
mov ecx, esi
call fcn.005cd836
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x184]
test ecx, ecx
je 0x5d6a87
mov eax, dword [ecx + 8]
mov ebx, ecx
jmp 0x5d6a8b
call dword [sym.imp.kernel32.dll_GetLastError]
cmp dword [esp + 0x5c], 0
mov edi, dword [esp + 0xdc]
mov dword [esp + 0xc0], 1
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], 0
je 0x5d69c0
push esi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
cmp dword [esp + 0x28], 0
mov esi, dword [ebp + 8]
je 0x5d69dc
push dword [esp + 0x2c]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x5d69f3
lock dec dword [eax]
jne 0x5d69f3
mov ecx, dword [ebx + 0x1c]
call fcn.005c4dec
cmp dword [ebx + 0x14], 0
je 0x5d6a0a
push dword [ebx + 0x10]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
cmp dword [esi + 0x17c], 0
je 0x5d6a27
push dword [esi + 0x178]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esi + 0x184]
test eax, eax
je 0x5d6a41
lock dec dword [eax]
jne 0x5d6a41
mov ecx, dword [esi + 0x184]
call fcn.005c4dec
mov ecx, dword [esi + 0x150]
test ecx, ecx
je 0x5d6a56
mov edx, dword [esi + 0x154]
call fcn.005c5021
mov eax, dword [esp + 0xc8]
movq xmm0, qword [esp + 0xc0]
xor esi, esi
mov ecx, 0x70
inc esi
mov dword [edi + 0xc], eax
movq qword [edi + 4], xmm0
mov dword [edi + 0x10], str.C:UsersNop.cargo_registry_srcindex.crates.io_1cd66030c949c28d_tao_0.16.5_srcplatform_implwindowswindow.rs
mov eax, 0x3f3
jmp 0x5d773a
xor eax, eax
xor ebx, ebx
push eax
push 0
push 0x80
push esi
call dword [sym.imp.user32.dll_SendMessageW]
mov edi, dword [esp + 0x88]
mov cl, 1
xor eax, eax
lock cmpxchg byte [edi + 8], cl
lea esi, [edi + 8]
jne 0x5d77c7
mov eax, dword [edi + 0x19c]
test eax, eax
je 0x5d6acd
lock dec dword [eax]
jne 0x5d6acd
mov ecx, dword [edi + 0x19c]
call fcn.005c4dec
mov dword [edi + 0x19c], ebx
xor ebx, ebx
mov al, 1
lock cmpxchg byte [edi + 8], bl
jne 0x5d77d3
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x1c]
mov eax, dword [esp + 0x8c]
test edx, edx
je 0x5d6afa
mov ecx, dword [edx + 8]
mov ebx, edx
jmp 0x5d6afc
xor ecx, ecx
push ecx
push 1
push 0x80
push eax
call dword [sym.imp.user32.dll_SendMessageW]
mov edi, dword [esp + 0x88]
mov cl, 1
xor eax, eax
lock cmpxchg byte [edi + 8], cl
lea esi, [edi + 8]
jne 0x5d77df
mov eax, dword [edi + 0x1a0]
test eax, eax
je 0x5d6b3e
lock dec dword [eax]
jne 0x5d6b3e
mov ecx, dword [edi + 0x1a0]
call fcn.005c4dec
mov dword [edi + 0x1a0], ebx
xor ecx, ecx
mov al, 1
lock cmpxchg byte [edi + 8], cl
jne 0x5d77eb
mov edx, dword [ebp + 8]
lea ebx, [esp + 0x58]
cmp dword [edx + 0x60], 2
jne 0x5d6b81
mov eax, dword [edx]
cmp eax, 2
jne 0x5d6ba4
mov dword [esp + 0x11c], 0x320
mov dword [esp + 0x120], 0x258
xor eax, eax
jmp 0x5d6bca
lea esi, [esp + 0x80]
add edx, 0x60
mov ecx, esi
call fcn.005e00ff
mov edi, dword [esi + 0xc]
mov esi, dword [ebp + 8]
mov ecx, edi
call fcn.005cd7c0
jmp 0x5d6e3a
mov ecx, dword [edx + 0x14]
movq xmm0, qword [edx + 4]
movq xmm1, qword [edx + 0xc]
mov dword [esp + 0x12c], ecx
movq qword [esp + 0x124], xmm1
movq qword [esp + 0x11c], xmm0
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
cmp eax, 2
jne 0x5d6bf1
xor eax, eax
dec eax
mov dword [esp + 0x134], eax
mov dword [esp + 0x138], eax
xor eax, eax
jmp 0x5d6c17
mov ecx, dword [edx + 0x44]
movq xmm0, qword [edx + 0x34]
movq xmm1, qword [edx + 0x3c]
mov dword [esp + 0x144], ecx
movq qword [esp + 0x13c], xmm1
movq qword [esp + 0x134], xmm0
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0xb0]
mov eax, dword [eax]
cmp eax, 2
jne 0x5d6c3e
xor eax, eax
mov dword [esp + 0x14c], eax
mov dword [esp + 0x150], eax
jmp 0x5d6c64
mov ecx, dword [edx + 0x2c]
movq xmm0, qword [edx + 0x1c]
movq xmm1, qword [edx + 0x24]
mov dword [esp + 0x15c], ecx
movq qword [esp + 0x154], xmm1
movq qword [esp + 0x14c], xmm0
mov edi, dword [esp + 0x88]
mov dword [esp + 0x148], eax
mov cl, 1
xor eax, eax
lock cmpxchg byte [edi + 8], cl
lea esi, [edi + 8]
jne 0x5d784a
xor ecx, ecx
mov al, 1
movsd xmm0, qword [edi + 0x190]
lock cmpxchg byte [edi + 8], cl
movsd qword [esp + 8], xmm0
jne 0x5d7856
lea ecx, [esp + 0x118]
call fcn.005ebb79
movaps xmmword [esp + 0x70], xmm0
movsd xmm0, qword [esp + 8]
lea ecx, [esp + 0x148]
movdqa xmmword [esp + 0x40], xmm1
call fcn.005ebb79
movaps xmmword [esp + 0xb0], xmm0
movsd xmm0, qword [esp + 8]
lea ecx, [esp + 0x130]
movdqa xmmword [esp + 0x30], xmm1
call fcn.005ebb79
movapd xmm3, xmmword [esp + 0x70]
movapd xmm4, xmmword [esp + 0xb0]
minsd xmm0, xmm3
cmpltsd xmm3, xmm4
movapd xmm2, xmm3
andpd xmm3, xmm4
movapd xmm4, xmmword [esp + 0x30]
andnpd xmm2, xmm0
orpd xmm3, xmm2
movapd xmm2, xmmword [esp + 0x40]
minsd xmm1, xmm2
cmpltsd xmm2, xmm4
movapd xmm0, xmm2
andpd xmm2, xmm4
andnpd xmm0, xmm1
orpd xmm2, xmm0
movapd xmmword [esp + 0x40], xmm2
sub esp, 8
movlpd qword [esp], xmm3
call sub.api_ms_win_crt_math_l1_1_0.dll_round
add esp, 8
fstp qword [esp + 0x168]
xorpd xmm1, xmm1
movsd xmm0, qword [esp + 0x168]
maxsd xmm0, xmm1
minsd xmm0, qword [0x661dc0]
cvttsd2si eax, xmm0
subsd xmm0, qword [0x661dc8]
mov ecx, eax
sar ecx, 0x1f
cvttsd2si esi, xmm0
and esi, ecx
or esi, eax
sub esp, 8
movaps xmm0, xmmword [esp + 0x48]
movlps qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_round
add esp, 8
fstp qword [esp + 0x170]
xorpd xmm1, xmm1
lea edx, [esp + 0x1e8]
movsd xmm0, qword [esp + 0x170]
mov dword [edx + 4], esi
lea esi, [esp + 0x80]
maxsd xmm0, xmm1
minsd xmm0, qword [0x661dc0]
cvttsd2si eax, xmm0
subsd xmm0, qword [0x661dc8]
mov ecx, eax
sar ecx, 0x1f
cvttsd2si edi, xmm0
and edi, ecx
mov ecx, esi
or edi, eax
mov dword [edx + 8], edi
mov dword [edx], 0
call fcn.005ddd06
mov eax, dword [ebp + 8]
mov edi, dword [esi + 0xc]
cmp byte [eax + 0x18c], 0
je 0x5d6e37
mov eax, dword [esp + 0x88]
lock inc dword [eax]
jle 0x5d792a
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edi
mov byte [esp + 0x60], 1
push ebx
call fcn.005e33e3
add esp, 4
mov esi, dword [ebp + 8]
cmp byte [esi + 0x193], 0
je 0x5d6e4c
push 0x11
push edi
call dword [sym.imp.user32.dll_SetWindowDisplayAffinity]
mov ebx, dword [esp + 0x88]
mov al, byte [esi + 0x18d]
lock inc dword [ebx]
jle 0x5d792a
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], edi
mov byte [esp + 0x60], al
lea eax, [esp + 0x58]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x70], edx
push eax
call fcn.005e30a9
add esp, 4
mov dword [esp + 8], ebx
mov al, byte [esi + 0x18b]
lock inc dword [ebx]
jle 0x5d792a
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x40], edi
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x5c], edi
mov byte [esp + 0x60], al
lea eax, [esp + 0x58]
push eax
call fcn.005e35ac
add esp, 4
cmp dword [esi + 0x48], 2
je 0x5d6fd2
lea eax, [esi + 0x48]
mov edi, dword [esp + 8]
mov cl, 1
movsd xmm0, qword [eax + 0x10]
movsd xmm2, qword [eax]
movsd xmm1, qword [eax + 8]
xor eax, eax
lea esi, [edi + 8]
movsd qword [esp + 0x188], xmm0
movsd qword [esp + 0x180], xmm1
movsd qword [esp + 0x178], xmm2
lock cmpxchg byte [edi + 8], cl
jne 0x5d7868
xor ecx, ecx
mov al, 1
movsd xmm0, qword [edi + 0x190]
lock cmpxchg byte [edi + 8], cl
jne 0x5d7874
lea ecx, [esp + 0x178]
call fcn.005f89a0
lock inc dword [edi]
jle 0x5d792a
movsd xmm1, qword [0x661dd0]
movsd xmm2, qword [0x661dd8]
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
xor eax, eax
mov ebx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x90]
ucomisd xmm0, xmm0
maxsd xmm0, xmm1
minsd xmm0, xmm2
cvttsd2si edi, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, edx
mov edx, dword [esp + 0x94]
cmovp edi, eax
ucomisd xmm0, xmm0
maxsd xmm0, xmm1
minsd xmm0, xmm2
cvttsd2si esi, xmm0
cmovp esi, eax
push ebx
push dword [esp + 0xc]
call fcn.005f886f
add esp, 8
push 0x4015
xor eax, eax
push eax
push eax
push esi
push edi
push eax
xor esi, esi
push ebx
call dword [sym.imp.user32.dll_SetWindowPos]
push esi
push esi
mov dword [esp + 0x48], ebx
push ebx
call dword [sym.imp.user32.dll_InvalidateRgn]
mov esi, dword [ebp + 8]
mov edi, dword [esi + 0x150]
test edi, edi
je 0x5d714a
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], edi
mov eax, dword [esi + 0x154]
mov edx, dword [esi + 0x170]
mov edi, dword [esi + 0x15c]
mov ebx, dword [ecx]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x30], edx
inc dword [ebx]
je 0x5d792a
mov al, byte [0x803894]
mov ecx, 4
mov edx, 4
call fcn.004889b0
test eax, eax
je 0x5d792e
mov dword [eax], ebx
mov esi, eax
mov ecx, 0x14
mov edx, 4
mov al, byte [0x803894]
call fcn.004889b0
test eax, eax
je 0x5d793d
mov ebx, dword [esp + 0x40]
mov dword [eax], 1
mov dword [eax + 4], ebx
mov dword [eax + 8], esi
mov dword [eax + 0xc], 0x7c4818
mov byte [eax + 0x10], 0
movzx ecx, word [esp + 0xe9]
mov word [eax + 0x11], cx
mov cl, byte [esp + 0xeb]
mov byte [eax + 0x13], cl
push eax
push 0x11d8
push 0x5c7cfc
push ebx
call dword [sym.imp.comctl32.dll_SetWindowSubclass]
push dword [esp + 0x30]
push ebx
call dword [sym.imp.user32.dll_SetMenu]
mov esi, dword [ebp + 8]
test edi, edi
je 0x5d7436
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0xc0]
lea eax, [edx + 0x10]
movdqa xmm0, xmmword [edx]
mov dword [ecx], edx
mov dword [ecx + 4], eax
mov eax, dword [esp + 0xb0]
lea eax, [eax + edx + 1]
mov dword [ecx + 8], eax
pmovmskb eax, xmm0
not eax
mov word [ecx + 0xc], ax
mov dword [ecx + 0x10], edi
call fcn.005c1825
test eax, eax
je 0x5d7157
test edx, edx
je 0x5d7157
movzx ecx, word [edx + 4]
mov eax, dword [edx]
mov edx, dword [esp + 0xd0]
mov ebx, 4
mov word [esp + 0x5c], cx
xor ecx, ecx
mov dword [esp + 0x58], eax
dec ecx
inc edx
cmove edx, ecx
cmp edx, 5
cmovae ebx, edx
cmp ebx, 0x15555555
ja 0x5d797a
lea eax, [ebx + ebx]
lea edi, [eax + eax*2]
test edi, edi
js 0x5d797a
je 0x5d716b
mov al, byte [0x803894]
mov ecx, edi
mov edx, 2
call fcn.004889b0
mov esi, eax
test eax, eax
jne 0x5d7170
mov ecx, 2
mov edx, edi
jmp 0x5d79be
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x40]
jmp 0x5d7469
mov ebx, 2
xor edi, edi
mov dword [esp + 0x20], 0
jmp 0x5d7258
mov esi, 2
lea ecx, [esp + 0x58]
xor edi, edi
movzx eax, word [ecx + 4]
inc edi
mov word [esi + 4], ax
mov eax, dword [ecx]
mov dword [esi], eax
lea eax, [esp + 0xec]
mov edx, dword [esp + 0xd0]
movq xmm0, qword [esp + 0xc0]
movq xmm1, qword [esp + 0xc8]
mov dword [eax], esi
mov dword [eax + 4], ebx
mov ebx, 6
mov dword [eax + 8], 1
mov dword [ecx + 0x10], edx
movq qword [ecx + 8], xmm1
movq qword [ecx], xmm0
lea ecx, [esp + 0x58]
call fcn.005c1825
test eax, eax
je 0x5d723b
test edx, edx
je 0x5d723b
cmp edi, dword [esp + 0xf0]
mov eax, dword [edx]
movzx ecx, word [edx + 4]
mov word [esp + 0xe4], cx
mov dword [esp + 0xe0], eax
je 0x5d7213
movzx eax, word [esp + 0xe4]
inc edi
mov word [esi + ebx + 4], ax
mov eax, dword [esp + 0xe0]
mov dword [esi + ebx], eax
mov dword [esp + 0xf4], edi
add ebx, 6
jmp 0x5d71c0
mov eax, dword [esp + 0x68]
mov ecx, 0xffffffff
mov edx, edi
inc eax
cmove eax, ecx
lea ecx, [esp + 0xec]
push eax
call fcn.0065abbd
add esp, 4
mov esi, dword [esp + 0xec]
jmp 0x5d71ef
mov ebx, dword [esp + 0xec]
mov esi, dword [ebp + 8]
test ebx, ebx
je 0x5d7436
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x20], eax
call fcn.005c7b7b
mov esi, eax
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x803890]
test eax, 0x7fffffff
jne 0x5d788c
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], esi
mov al, byte [esi + 4]
test al, al
jne 0x5d7981
test edi, edi
mov eax, ebx
cmove eax, edi
push edi
push eax
call dword [sym.imp.user32.dll_CreateAcceleratorTableW]
mov esi, eax
inc eax
cmp eax, 1
ja 0x5d72ac
call dword [sym.imp.kernel32.dll_GetLastError]
xor esi, esi
mov dword [esp + 0xd8], ebx
mov ecx, 0xc
mov edx, 4
mov al, byte [0x803894]
call fcn.004889b0
test eax, eax
je 0x5d79b4
mov ebx, dword [esp + 0x14]
xor ecx, ecx
mov dword [esp + 0xd4], eax
inc ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], esi
mov edi, dword [ebx + 0x18]
mov edx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x20]
mov esi, dword [ebx + 0x24]
mov ecx, edi
mov dword [esp + 8], edx
push dword [esp + 0x40]
push esi
mov dword [esp + 0x20], eax
push eax
call fcn.005f93a0
add esp, 0xc
cmp dword [ebx + 0x10], 0
je 0x5d789c
mov esi, dword [ebx + 0xc]
mov edi, dword [ebx + 8]
pcmpeqd xmm1, xmm1
mov dword [esp + 0x100], 0
mov dword [esp + 0x18], 0
mov dword [esp + 8], esi
and esi, eax
shr eax, 0x19
movd xmm0, eax
mov dword [esp + 0xfc], eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmm2, xmmword [edi + esi]
mov ecx, edi
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb ebx, xmm3
test bx, bx
je 0x5d7390
bsf edi, ebx
lea edx, [ebx - 1]
mov eax, ecx
add edi, esi
and edx, ebx
and edi, dword [esp + 8]
lea ebx, [edi*8]
sub eax, ebx
mov ebx, dword [esp + 0x40]
cmp dword [eax - 8], ebx
mov ebx, edx
jne 0x5d7365
jmp 0x5d73eb
cmp dword [esp + 0x18], 1
mov edx, 1
je 0x5d73b7
pmovmskb eax, xmm2
xor edx, edx
test eax, eax
setne dl
bsf eax, eax
add eax, esi
and eax, dword [esp + 8]
mov dword [esp + 0xf8], eax
pcmpeqb xmm2, xmm1
mov edi, ecx
pmovmskb eax, xmm2
test eax, eax
jne 0x5d78bd
mov eax, dword [esp + 0x100]
mov dword [esp + 0x18], edx
lea esi, [esi + eax + 0x10]
add eax, 0x10
and esi, dword [esp + 8]
mov dword [esp + 0x100], eax
jmp 0x5d7352
neg edi
mov eax, dword [esp + 0xd4]
mov edx, ecx
mov esi, dword [ebp + 8]
mov ecx, dword [ecx + edi*8 - 4]
mov dword [edx + edi*8 - 4], eax
lock dec dword [ecx]
mov edi, dword [esp + 0xd8]
jne 0x5d7412
call fcn.005c4e14
movzx edx, byte [esp + 0x24]
mov ecx, dword [esp + 0x14]
call fcn.005aa9d0
cmp dword [esp + 0x20], 0
je 0x5d7436
push edi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edi, dword [esp + 0x70]
mov edx, dword [esp + 0xb0]
mov ecx, edi
call fcn.005c5021
mov eax, dword [esp + 0x30]
mov dword [esp + 0x80], 1
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x84], eax
mov ebx, dword [esp + 0x8c]
mov eax, dword [esp + 0x88]
movq xmm0, qword [esp + 0x80]
mov edx, dword [esp + 0x90]
test ecx, ecx
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x94]
movq qword [esp + 0xc0], xmm0
mov dword [esp + 0x70], edx
mov dword [esp + 0x30], eax
je 0x5d74b5
push dword [esp + 0x2c]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x14], 0
je 0x5d74cf
push dword [eax + 0x10]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
cmp dword [esi + 0x17c], 0
je 0x5d74ec
push dword [esi + 0x178]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
test edi, edi
jne 0x5d7505
mov ecx, dword [esi + 0x150]
test ecx, ecx
je 0x5d7505
mov edx, dword [esi + 0x154]
call fcn.005c5021
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov esi, dword [esp + 0xc8]
cmp byte [esp + 0x1f], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0xb0], ecx
mov dword [esp + 8], esi
je 0x5d7600
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
test eax, eax
jns 0x5d7556
cmp eax, 0x80010106
je 0x5d79c5
cmp eax, 0x8004000e
je 0x5d79db
mov eax, dword [esp + 0x6c]
mov edi, dword [eax]
inc dword [edi]
je 0x5d792a
mov al, byte [0x803894]
mov ecx, 4
mov edx, 4
call fcn.004889b0
test eax, eax
je 0x5d792e
mov dword [eax], edi
mov esi, eax
mov ecx, 0x24
mov edx, 4
mov al, byte [0x803894]
call fcn.004889b0
test eax, eax
je 0x5d796e
mov edi, eax
xor ecx, ecx
add edi, 8
mov dword [eax], ecx
mov dword [eax + 4], 0x7c39d8
mov dword [eax + 8], 0x7c39f0
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], 0x7c49e0
mov dword [eax + 0x14], ebx
mov dword [eax + 0x18], ecx
mov byte [eax + 0x1c], 0
mov dword [eax + 0x20], 1
push edi
push ebx
call dword [sym.imp.ole32.dll_RegisterDragDrop]
mov esi, dword [esp + 8]
test eax, eax
jns 0x5d7602
xor ecx, ecx
xor edx, edx
inc ecx
call fcn.005e671e
mov ecx, str.assertion_failed:_RegisterDragDrop_win.window.0__file_drop_handler_.is_ok__
mov edx, 0x4c
push 0x7c4a44
jmp 0x5d7964
xor edi, edi
mov dword [esp + 0x40], ebx
lock inc dword [esi]
jle 0x5d792a
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x28], edi
mov ebx, dword [eax]
inc dword [ebx]
je 0x5d792a
lea edi, [esp + 0x200]
mov ecx, edi
call fcn.005c3589
movsd xmm0, qword [ebx + 0x20]
lea esi, [esp + 0x1a0]
movq xmm2, qword [edi + 8]
mov ecx, esi
movsd qword [esi + 0x18], xmm0
movsd xmm0, qword [ebx + 0x18]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [ebx + 8]
movsd xmm1, qword [ebx + 0x10]
movsd qword [esi], xmm0
movsd xmm0, qword [edi]
movsd qword [esi + 8], xmm1
movq qword [ebx + 0x10], xmm2
movsd qword [ebx + 8], xmm0
movsd xmm0, qword [edi + 0x10]
movsd qword [ebx + 0x18], xmm0
movsd xmm0, qword [edi + 0x18]
mov edi, dword [esp + 0x40]
mov edx, edi
movsd qword [ebx + 0x20], xmm0
call fcn.005c16d5
movsd xmm1, qword [esi + 8]
mov edx, dword [ebx + 0xc]
movq xmm0, qword [esi]
mov ecx, dword [ebx + 8]
movsd qword [ebx + 0x10], xmm1
movsd xmm1, qword [esi + 0x10]
movsd qword [ebx + 0x18], xmm1
movq xmm1, qword [esi + 0x18]
movq qword [ebx + 8], xmm0
movq qword [ebx + 0x20], xmm1
call fcn.005c4ff8
mov al, byte [0x803894]
mov ecx, 0x14
mov edx, 4
call fcn.004889b0
test eax, eax
je 0x5d793d
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x28]
xor esi, esi
mov dword [eax], ecx
mov dword [eax + 4], ebx
mov dword [eax + 8], edx
mov dword [eax + 0xc], esi
mov byte [eax + 0x10], 0
push eax
push esi
push 0x5e6730
push edi
call dword [sym.imp.comctl32.dll_SetWindowSubclass]
test eax, eax
je 0x5d7955
mov eax, edi
mov edi, dword [esp + 0xdc]
mov ecx, dword [esp + 0x2c]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0xb0]
mov dword [edi + 8], ecx
mov ecx, dword [esp + 8]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x70]
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], eax
mov dword [edi], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0x20]
call fcn.0065481c
jmp 0x5d6744
mov ecx, dword [esp + 0x20]
call fcn.006545f5
jmp 0x5d6763
mov ecx, dword [esp + 0x30]
call fcn.0065481c
mov ecx, dword [esp + 0x30]
jmp 0x5d67be
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x14], edx
mov edx, ebx
add ecx, 8
push edi
push dword [esp + 0x74]
push dword [esp + 0x10]
call fcn.0065d85f
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
add esp, 0xc
jmp 0x5d67fd
mov ecx, edx
call fcn.006545f5
jmp 0x5d6922
mov ecx, esi
call fcn.0065481c
jmp 0x5d693f
mov ecx, esi
call fcn.006545f5
jmp 0x5d6954
mov ecx, esi
call fcn.0065481c
jmp 0x5d6ab3
mov ecx, esi
call fcn.006545f5
jmp 0x5d6ae2
mov ecx, esi
call fcn.0065481c
jmp 0x5d6b24
mov ecx, esi
call fcn.006545f5
jmp 0x5d6b53
mov edi, dword [esp + 0x18]
mov dl, byte [eax + edi]
test dl, dl
js 0x5d7810
movdqa xmm0, xmmword [eax]
pmovmskb edx, xmm0
bsf edi, edx
mov dl, byte [eax + edi]
mov esi, dword [esp + 0x30]
and dl, 1
movzx edx, dl
sub dword [esi + 0x10], edx
lea edx, [edi - 0x10]
and ecx, edx
mov edx, dword [esp + 0x14]
mov byte [eax + edi], dl
mov byte [ecx + eax + 0x10], dl
inc dword [esi + 0x14]
mov esi, dword [esp + 0x40]
neg edi
lea ecx, [edi + edi*8]
mov dword [eax + ecx*8 - 0x48], esi
mov dword [eax + ecx*8 - 0x44], 2
jmp 0x5d690e
mov ecx, esi
call fcn.0065481c
jmp 0x5d6c84
mov ecx, esi
call fcn.006545f5
movsd xmm0, qword [esp + 8]
jmp 0x5d6ca1
mov ecx, esi
call fcn.0065481c
jmp 0x5d6f19
mov ecx, esi
movsd qword [esp + 0x40], xmm0
call fcn.006545f5
movsd xmm0, qword [esp + 0x40]
jmp 0x5d6f30
call fcn.0065a0d0
xor al, 1
mov dword [esp + 0x24], eax
jmp 0x5d727e
mov ecx, ebx
mov edx, edi
add ecx, 8
push esi
push dword [esp + 0x1c]
push dword [esp + 0x10]
mov esi, eax
call fcn.0065c241
mov eax, esi
add esp, 0xc
jmp 0x5d7313
mov ecx, dword [esp + 0xf8]
mov dl, byte [edi + ecx]
test dl, dl
js 0x5d78d9
movdqa xmm0, xmmword [edi]
pmovmskb eax, xmm0
bsf ecx, eax
mov dl, byte [edi + ecx]
and dl, 1
mov esi, ecx
mov ebx, dword [esp + 0x40]
movzx eax, dl
mov edx, dword [esp + 0x14]
sub dword [edx + 0x10], eax
lea eax, [ecx - 0x10]
mov ecx, dword [esp + 0xfc]
and eax, dword [esp + 8]
mov byte [edi + esi], cl
shl esi, 3
mov byte [eax + edi + 0x10], cl
mov eax, edi
inc dword [edx + 0x14]
mov edx, dword [esp + 0xd4]
sub eax, esi
neg esi
mov dword [edi + esi - 8], ebx
mov esi, dword [ebp + 8]
mov edi, dword [esp + 0xd8]
mov dword [eax - 4], edx
jmp 0x5d7412
ud2
mov ecx, 4
mov edx, 4
jmp 0x5d79be
mov ecx, 4
mov edx, 0x14
jmp 0x5d79be
mov ecx, 8
mov edx, 0x1b8
jmp 0x5d79be
mov ecx, 0x7c4455
mov edx, 0x2b
push 0x7c4480
call fcn.006522d0
add esp, 4
ud2
mov ecx, 4
mov edx, 0x24
jmp 0x5d79be
call fcn.00498870
ud2
mov eax, dword [esp + 0x14]
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x5c], al
push 0x7c2998
push 0x7c23e4
lea eax, [esp + 0x60]
push eax
call fcn.006525c0
add esp, 0xc
ud2
mov ecx, 4
mov edx, 0xc
call fcn.00651860
ud2
lea ecx, [esp + 0x200]
mov edx, 0x7c49d0
xor eax, eax
mov dword [ecx], str.OleInitialize_failed__Result_was:__RPC_E_CHANGED_MODE_._Make_sure_other_crates_are_not_using_multithreaded_COM_library_on_the_same_thread_or_disable_drag_and_drop_support.
jmp 0x5d79ef
lea ecx, [esp + 0x200]
mov edx, 0x7c490c
xor eax, eax
mov dword [ecx], str.OleInitialize_failed__Result_was:__OLE_E_WRONGCOMPOBJ_
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], eax
mov dword [ecx + 8], 0x7f59e0
mov dword [ecx + 0xc], eax
call fcn.00652150
ud2