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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xf80
mov esi, esp
mov dword [esi + 0xf68], ebp
lea eax, [esi + 0xf70]
mov dword [esi + 0x50], ecx
mov edi, edx
mov dword [eax - 4], esp
or dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x524300
mov ecx, dword fs:[0]
mov dword [eax], ecx
mov dword fs:[0], eax
xor ecx, ecx
mov ebx, dword [edx + 0x40]
mov eax, dword [edx + 0x5c]
mov edx, 0x651e48
mov dword [esi], ebx
sub ebx, eax
mov dword [esi + 4], eax
setae cl
call fcn.004ac869
cmp ebx, dword [edi + 0x28]
mov dword [esi + 0x58], ebx
mov dword [esi + 0xc], edi
jne 0x5229fa
mov ecx, dword [esi + 4]
mov edx, dword [esi]
cmp edx, ecx
jbe 0x523984
mov edx, dword [edi + 0x3c]
imul eax, ecx, 0x260
cmp dword [edx + eax], 3
je 0x5229fa
lea ebx, [esi + 0x170]
add edx, eax
mov ecx, ebx
mov dword [esi + 0x18], edx
call fcn.005208cd
mov eax, dword [ebx]
xor eax, 3
or eax, dword [ebx + 4]
jne 0x522918
push 8
pop eax
xor ecx, ecx
mov dword [esi + 8], 0
jmp 0x5229cf
call fcn.005209de
mov edi, eax
push 0x68
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x3d0]
mov dword [esi], edi
mov dword [eax], 4
mov dword [eax + 4], edi
mov dword [eax + 8], 1
xor eax, eax
inc eax
mov dword [esi + 4], eax
push 0x68
pop eax
mov dword [esi + 8], eax
mov edx, dword [esi + 0x18]
mov ecx, ebx
call fcn.005208cd
mov eax, dword [esi + 0x170]
xor eax, 3
or eax, dword [esi + 0x174]
je 0x5229b6
mov eax, dword [esi + 4]
cmp eax, dword [esi + 0x3d0]
mov eax, dword [esi]
jne 0x522988
lea ecx, [esi + 0x3d0]
call fcn.00520a0c
mov eax, dword [esi + 0x3d4]
mov edi, dword [esi + 8]
mov dword [esi], eax
add eax, edi
push 0x68
lea ebx, [esi + 0x170]
push ebx
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov eax, dword [esi + 4]
add edi, 0x68
mov dword [esi + 8], edi
inc eax
mov dword [esi + 4], eax
mov dword [esi + 0x3d8], eax
jmp 0x52294f
lea ecx, [esi + 0x170]
call fcn.005209fd
mov eax, dword [esi + 0x3d0]
mov ecx, dword [esi + 4]
mov dword [esi + 8], eax
mov eax, dword [esi]
mov ebx, dword [esi + 0x18]
imul edi, ecx, 0x68
mov dword [esi], eax
add edi, eax
mov ecx, ebx
call fcn.00520dcd
mov ecx, dword [esi]
mov eax, dword [esi + 8]
mov dword [ebx], 3
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x10], edi
mov edi, dword [esi + 0xc]
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [esi + 4], 0
test ebx, ebx
je 0x522b3e
js 0x5239de
mov al, byte [0x666470]
xor edx, edx
mov ecx, ebx
inc edx
call fcn.00407420
test eax, eax
je 0x5239e3
mov ecx, eax
push ebx
mov eax, dword [ebp + 8]
push eax
mov dword [esi + 8], ecx
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov al, byte [0x666470]
xor edx, edx
mov ecx, ebx
inc edx
mov dword [esi + 0x10], edx
call fcn.00407420
test eax, eax
je 0x5239ed
mov edi, eax
push ebx
push dword [ebp + 8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea ecx, [esi + 0x170]
mov dword [esi + 0xf78], 3
mov edx, 0x62997e
mov dword [ecx], ebx
mov dword [ecx + 4], edi
mov dword [ecx + 8], ebx
mov byte [ecx + 0xc], 0
push 1
call fcn.005074e0
pop eax
lea ecx, [esi + 0x170]
mov byte [esi + 0x1f], 1
mov dword [esi + 0xf78], 1
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], edx
push edi
call fcn.004feb60
pop eax
mov eax, dword [esi + 0x170]
mov ebx, dword [esi + 0x174]
mov ecx, dword [esi + 0x178]
cmp eax, 0x80000000
je 0x522b0d
lea edx, [esi + 0x170]
mov byte [esi + 0x1f], 1
mov dword [edx], eax
mov dword [edx + 8], ecx
lea ecx, [esi + 0x630]
mov dword [edx + 4], ebx
call fcn.005063b0
mov eax, dword [esi + 0x630]
mov ebx, dword [esi + 0x634]
cmp eax, 0x80000000
jne 0x522d6e
mov ecx, dword [esi + 0x638]
mov eax, ebx
mov dword [esi + 0x30], ebx
shr ebx, 8
cmp dword [esi + 0x18], 0
mov dword [esi], ecx
je 0x522b28
mov ecx, dword [esi + 0x14]
xor edx, edx
inc edx
call fcn.00407480
mov ecx, dword [esi + 8]
xor edx, edx
inc edx
call fcn.00407480
mov edi, dword [esi + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [esi + 0x30]
jmp 0x522b45
push 3
pop eax
mov dword [esi], eax
xor eax, eax
mov edi, dword [edi + 0x60]
shl ebx, 8
movzx eax, al
or eax, ebx
lea ebx, [esi + 0x17c]
mov dword [esi + 8], eax
mov ecx, ebx
push dword [ebp + 0xc]
call fcn.0050aff0
mov edx, edi
add esp, 4
mov eax, dword [esi]
mov dword [ebx - 4], eax
mov dword [ebx + 0x18], edi
movsd xmm1, qword [ebx + 0xc]
movsd xmm0, qword [ebx + 4]
movsd xmm2, qword [ebx - 4]
movsd qword [esi + 0x78], xmm1
movsd xmm1, qword [ebx + 0x14]
movsd qword [esi + 0x70], xmm0
movsd qword [esi + 0x68], xmm2
movsd qword [esi + 0x80], xmm1
push 2
pop eax
mov edi, dword [esi + 8]
lea ebx, [esi + 0x65c]
movsd xmm1, qword [esi + 0x70]
movsd xmm0, qword [esi + 0x68]
movsd xmm2, qword [esi + 0x78]
mov dword [ebx + 0x230], edx
mov dword [ebx - 0x2c], eax
mov eax, dword [esi + 4]
mov dword [ebx - 0x24], edi
mov dword [ebx - 0x28], eax
movsd qword [ebx - 0x18], xmm1
movsd xmm1, qword [esi + 0x80]
movsd qword [ebx - 0x20], xmm0
movsd qword [ebx - 0x10], xmm2
lea eax, [esi + 0xd40]
movsd qword [ebx - 8], xmm1
push 0x228
push eax
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x20]
mov ecx, dword [esi]
mov dword [ebx + 0x228], eax
mov dword [ebx + 0x22c], ecx
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 0x20], 0
je 0x522f93
lea eax, [ecx + 0x20]
lea edi, [esi + 0x3d0]
mov dword [esi + 0x54], eax
lea eax, [esi + 0x630]
push 0x260
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [edi]
cmp eax, 3
jne 0x522c99
mov ebx, dword [esi + 0x3dc]
cmp ebx, dword [esi + 0x3e0]
je 0x522f50
lea eax, [ebx + 0x68]
lea ecx, [esi + 0xa0]
mov dword [esi + 0x3dc], eax
mov eax, dword [ebx + 4]
mov edi, dword [ebx]
mov dword [esi + 4], eax
mov eax, dword [ebx + 8]
mov dword [esi], eax
lea eax, [ebx + 0xc]
push 0x24
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
add ebx, 0x30
lea eax, [esi + 0x108]
push 0x38
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ebx, dword [esi + 4]
add esp, 0xc
jmp 0x522f43
cmp eax, 2
jne 0x522cdb
mov eax, dword [esi + 0x3d4]
mov dword [esi + 0x3d4], 2
cmp eax, 2
mov dword [esi], eax
je 0x522f50
lea eax, [esi + 0x3d8]
lea ecx, [esi + 0xa0]
push 0x24
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor ebx, ebx
push 2
pop edi
jmp 0x523033
lea edx, [esi + 0x3d0]
lea ebx, [esi + 0x170]
mov edi, dword [edx + 0x25c]
mov ecx, ebx
call fcn.00507200
cmp dword [ebx], 0
je 0x522dfb
mov edx, dword [esi + 0x174]
mov ecx, dword [esi + 0x178]
mov eax, dword [esi + 0x17c]
test edx, edx
je 0x522ee3
lea ebx, [esi + 0xaf4]
mov dword [ebx - 0xc], edx
mov dword [ebx - 4], eax
mov dword [ebx - 8], ecx
lea eax, [esi + 0x180]
push 0x248
push eax
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
inc edi
lea eax, [esi + 0xae8]
lea ebx, [esi + 0x890]
mov edx, edi
mov edi, eax
mov ecx, ebx
push eax
call fcn.00520b0d
pop eax
mov ecx, edi
call fcn.00520d9b
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov edi, dword [ebx]
mov dword [esi + 4], eax
mov dword [esi], ecx
jmp 0x522f10
mov dword [esi + 0x38], eax
push 0x250
push 0
lea edi, [esi + 0x170]
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push edi
push ebx
call dword [sym.imp.kernel32.dll_FindFirstFileW]
cmp eax, 0xffffffff
mov dword [esi], eax
mov dword [esi + 0x30], ebx
je 0x522e05
mov al, byte [0x666470]
push 0x18
pop ecx
push 4
pop edx
call fcn.00407420
test eax, eax
je 0x523a28
mov ecx, eax
xor eax, eax
mov edx, dword [ebp + 0xc]
inc eax
mov dword [esi + 0x20], ecx
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov eax, dword [esi + 8]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
and dword [ecx + 0x14], 0
lea eax, [esi + 0x178]
lea ecx, [esi + 0x3d0]
mov ebx, dword [eax - 8]
mov edi, dword [eax - 4]
mov dword [esi + 0x28], ebx
shrd ebx, edi, 8
push 0x248
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp 0x522e19
xor ebx, ebx
push 3
pop edi
jmp 0x522f43
push 2
pop eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x28], 0
call sub.kernel32.dll_GetLastError
mov edi, eax
cmp dword [esi + 0x38], 0
je 0x522e2a
push 2
pop edx
mov ecx, dword [esi + 0x30]
call fcn.00407480
cmp dword [esi + 0x18], 0
je 0x522e3b
mov ecx, dword [esi + 0x14]
xor edx, edx
inc edx
call fcn.00407480
mov ecx, dword [esi]
cmp ecx, 0xffffffff
jne 0x522e50
mov ecx, dword [esi + 8]
xor edx, edx
inc edx
call fcn.00407480
xor ecx, ecx
dec ecx
cmp dword [esi + 0x10], 2
jne 0x522e66
mov dword [esi], edi
mov edi, dword [esi + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [esi + 0x28]
jmp 0x522b45
lea eax, [esi + 0x3d0]
push 0x248
push eax
lea eax, [esi + 0x170]
push eax
mov dword [esi], ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, byte [esi + 0x28]
shl ebx, 8
lea ecx, [esi + 0xd40]
or eax, ebx
mov dword [esi + 4], eax
lea eax, [esi + 0x190]
movsd xmm1, qword [eax - 0x18]
movsd xmm0, qword [eax - 0x20]
movsd xmm2, qword [eax - 0x10]
movsd qword [esi + 0x70], xmm1
movsd xmm1, qword [eax - 8]
movsd qword [esi + 0x68], xmm0
movsd qword [esi + 0x78], xmm2
movsd qword [esi + 0x80], xmm1
push 0x228
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x10]
add esp, 0xc
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 0x60]
jmp 0x522ba1
inc edi
mov dword [esi + 0x89c], ecx
mov dword [esi + 0x8a0], eax
mov dword [esi + 0x8a4], 0x80000000
mov dword [esi], 0
mov dword [esi + 0x8bc], edi
push 2
pop edi
mov dword [esi + 4], 0
lea eax, [esi + 0x89c]
lea ecx, [esi + 0xa0]
push 0x24
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x8c0]
lea ecx, [esi + 0x108]
push 0x38
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esi + 4]
mov eax, edi
xor eax, 3
or eax, ebx
jne 0x523033
push 8
pop ebx
lea edi, [esi + 0x3d0]
mov ecx, edi
call fcn.00520dcd
lea eax, [esi + 0x54]
xor edx, edx
mov dword [edi], eax
xor edi, edi
mov ecx, dword [esi + 0xc]
imul eax, edi, 0x68
mov dword [esi + 0x630], 3
mov dword [esi + 0x634], ebx
mov dword [esi + 0x638], edx
mov dword [esi + 0x63c], ebx
add eax, ebx
mov dword [esi + 0x640], eax
cmp byte [ecx + 0x34], 0
je 0x52334e
mov edx, dword [ebp + 8]
lea edi, [esi + 0x170]
mov ecx, edi
push dword [ebp + 0xc]
call fcn.00520e73
pop eax
cmp byte [edi], 4
jne 0x522fbe
mov ebx, dword [esi + 0x174]
jmp 0x522fcf
mov edx, dword [esi + 0x170]
mov ebx, dword [esi + 0x174]
cmp dl, 4
jne 0x523007
lea edi, [esi + 0x170]
lea edx, [esi + 0xae8]
mov ecx, edi
mov dword [edx], ebx
call fcn.004f73c1
cmp dword [edi], 0
je 0x523271
mov eax, dword [esi + 0x178]
mov edi, dword [esi + 0x174]
mov dword [esi + 4], eax
push ebx
call sub.kernel32.dll_CloseHandle
mov ebx, dword [esi + 4]
mov edx, edi
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x50]
mov eax, dword [eax + 0x60]
and dword [ecx], 0
mov dword [ecx + 8], ebx
mov dword [ecx + 4], edx
mov dword [ecx + 0xc], 0x80000000
mov dword [ecx + 0x24], eax
lea ecx, [esi + 0x630]
call fcn.00520dcd
jmp 0x5233b3
push 0x68
pop eax
mov dword [esi + 4], eax
call fcn.005209de
mov ecx, edi
mov edi, eax
mov dword [eax + 4], ebx
mov dword [eax], ecx
mov eax, dword [esi]
lea ecx, [esi + 0xa0]
mov dword [edi + 8], eax
lea eax, [edi + 0xc]
push 0x24
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea ebx, [esi + 0x108]
lea eax, [edi + 0x30]
push 0x38
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea eax, [esi + 0x5c]
lea ecx, [esi + 0x170]
mov dword [esi + 0x2c], edi
mov dword [eax], 4
mov dword [eax + 4], edi
mov dword [eax + 8], 1
push 0x260
lea eax, [esi + 0x3d0]
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor ecx, ecx
inc ecx
mov eax, dword [esi + 0x170]
mov dword [esi + 0x24], ecx
cmp eax, 3
jne 0x5230db
mov eax, dword [esi + 0x17c]
cmp eax, dword [esi + 0x180]
je 0x5233c7
lea ecx, [eax + 0x68]
mov dword [esi + 0x17c], ecx
push 0x68
push eax
jmp 0x523202
cmp eax, 2
jne 0x523102
mov eax, dword [esi + 0x174]
xor edi, edi
mov dword [esi + 0x174], 2
cmp eax, 2
jne 0x523188
push 3
jmp 0x5231a8
mov edi, dword [esi + 0x3cc]
lea ecx, [esi + 0xae8]
lea edx, [esi + 0x170]
call fcn.00507200
cmp dword [esi + 0xae8], 0
je 0x5231b7
mov edx, dword [esi + 0xaec]
mov ecx, dword [esi + 0xaf0]
mov eax, dword [esi + 0xaf4]
test edx, edx
je 0x5231ca
mov dword [esi + 0x890], edx
mov dword [esi + 0x894], ecx
mov dword [esi + 0x898], eax
push 0x248
lea eax, [esi + 0xaf8]
push eax
lea eax, [esi + 0x89c]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
inc edi
mov ecx, ebx
mov edx, edi
lea edi, [esi + 0x890]
push edi
call fcn.00520b0d
pop eax
mov ecx, edi
call fcn.00520d9b
jmp 0x5231ff
mov dword [esi + 0xa8], eax
push 0x24
lea eax, [esi + 0x178]
push eax
lea eax, [esi + 0xac]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 2
pop eax
mov dword [esi + 0xa0], eax
mov dword [esi + 0xa4], edi
jmp 0x52321d
and dword [esi + 0xa4], 0
mov dword [esi + 0xa0], 3
jmp 0x523211
inc edi
and dword [esi + 0x110], 0
mov dword [esi + 0x114], ecx
mov dword [esi + 0x118], eax
mov dword [esi + 0x11c], 0x80000000
mov dword [esi + 0x134], edi
and dword [esi + 0x10c], 0
mov dword [esi + 0x108], 2
push 0x68
push ebx
lea eax, [esi + 0xa0]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0xa0]
mov edi, dword [esi + 0xa4]
xor eax, 3
or eax, edi
mov edi, dword [esi + 0x24]
je 0x5233da
cmp edi, dword [esi + 0x5c]
mov eax, dword [esi + 0x2c]
mov ebx, edi
jne 0x523240
lea ecx, [esi + 0x5c]
call fcn.00520a0c
mov eax, dword [esi + 0x60]
mov edi, dword [esi + 4]
mov dword [esi + 0x2c], eax
add eax, edi
push 0x68
lea ecx, [esi + 0xa0]
push ecx
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov ecx, ebx
add edi, 0x68
lea ebx, [esi + 0x108]
inc ecx
mov dword [esi + 4], edi
mov dword [esi + 0x64], ecx
jmp 0x5230aa
mov edx, dword [esi + 0x1a4]
lea edi, [esi + 0x3f0]
mov eax, dword [esi + 0x1a0]
mov ecx, dword [esi + 0x190]
mov dword [edi - 0x10], edx
mov edx, dword [ebp + 8]
mov dword [edi - 0xc], eax
mov dword [esi + 4], ecx
mov dword [edi - 4], ebx
mov dword [edi - 8], 2
mov ecx, edi
push dword [ebp + 0xc]
call fcn.0050aff0
pop eax
mov edx, dword [edi + 8]
mov ecx, dword [esi + 0xc]
movsd xmm0, qword [edi - 8]
mov eax, dword [edi - 0xc]
mov ebx, dword [edi - 0x10]
mov dword [esi + 0x98], edx
mov edx, dword [ecx + 0x4c]
movsd qword [esi + 0x88], xmm0
movsd xmm0, qword [edi]
mov edi, dword [edi + 0xc]
mov dword [esi], eax
cmp edx, dword [ecx + 0x44]
movsd qword [esi + 0x90], xmm0
jne 0x5232f3
mov eax, dword [esi + 0xc]
lea ecx, [eax + 0x44]
call fcn.005214be
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x4c]
mov ecx, dword [esi + 0xc]
imul eax, edx, 0x30
mov edx, dword [esi + 4]
mov ecx, dword [ecx + 0x48]
and dword [ecx + eax + 4], 0
mov dword [ecx + eax], 1
mov dword [ecx + eax + 8], edx
mov edx, dword [esi]
mov dword [ecx + eax + 0x10], ebx
and dword [ecx + eax + 0xc], 0
mov dword [ecx + eax + 0x14], edx
movsd xmm0, qword [esi + 0x88]
movsd xmm1, qword [esi + 0x90]
movsd qword [ecx + eax + 0x18], xmm0
movsd qword [ecx + eax + 0x20], xmm1
mov edx, dword [esi + 0x98]
mov dword [ecx + eax + 0x28], edx
mov dword [ecx + eax + 0x2c], edi
mov ecx, dword [esi + 0xc]
inc dword [ecx + 0x4c]
mov edx, dword [ecx + 0x40]
cmp edx, dword [ecx + 0x38]
jne 0x523367
mov eax, dword [esi + 0xc]
lea ecx, [eax + 0x38]
call fcn.005213a8
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 0x40]
imul eax, edx, 0x260
lea edx, [esi + 0x630]
add eax, dword [ecx + 0x3c]
mov ecx, 0x260
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ebx, dword [esi + 0xc]
add esp, 0xc
mov eax, dword [esi + 0x58]
inc dword [ebx + 0x40]
cmp eax, dword [ebx + 0x28]
jne 0x5233aa
mov edi, dword [ebx + 0x5c]
xor ecx, ecx
mov edx, 0x651e68
inc edi
setne cl
call fcn.004ac869
mov dword [ebx + 0x5c], edi
mov eax, dword [esi + 0x50]
mov dword [eax], 2
mov eax, dword [esi + 0xf70]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
and dword [esi + 0xa4], 0
mov edi, ecx
mov dword [esi + 0xa0], 3
lea ecx, [esi + 0xa0]
call fcn.005209fd
lea ecx, [esi + 0x170]
call fcn.00520dcd
mov edx, dword [esi + 0x5c]
lea eax, [esi + 0x54]
cmp edi, 0x15
mov ebx, edi
mov dword [esi + 0x3d0], eax
jae 0x523431
cmp ebx, 1
mov edi, ebx
jbe 0x52395b
mov ebx, dword [esi + 0x2c]
mov dword [esi + 0x48], edx
mov edx, edi
lea eax, [esi + 0x3d0]
mov ecx, ebx
push eax
push 1
call fcn.0052125b
mov edx, dword [esi + 0x48]
add esp, 8
jmp 0x522f69
mov eax, ebx
mov dword [esi + 0x48], edx
shr eax, 1
imul ecx, eax, 0x68
mov al, byte [0x666470]
push 8
pop edx
call fcn.00407420
test eax, eax
mov dword [esi + 0x18], eax
je 0x523a04
push 0x10
pop ecx
call fcn.0049e552
test eax, eax
je 0x523a16
mov edi, eax
mov eax, dword [esi + 0x2c]
xor edx, edx
lea ecx, [eax + 0x68]
mov dword [esi + 0x4c], ecx
xor ecx, ecx
push 0x10
pop eax
mov dword [esi + 0x3c], eax
mov eax, ebx
sub ebx, ecx
jbe 0x523936
cmp ebx, 2
mov dword [esi + 0x14], edi
mov dword [esi + 0x20], edx
mov dword [esi + 0x28], ecx
jae 0x523497
mov edi, eax
jmp 0x523625
mov edi, eax
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x10], ebx
imul ebx, ecx, 0x68
lea ecx, [esi + 0x3d0]
add eax, ebx
lea edx, [eax + 0x68]
push eax
call fcn.00521365
pop ecx
test al, al
mov byte [esi + 4], al
je 0x5234f0
add ebx, dword [esi + 0x4c]
push 2
pop eax
mov edx, dword [esi + 0x20]
mov ecx, ebx
mov ebx, eax
mov eax, ecx
cmp dword [esi + 0x10], ebx
je 0x523525
lea edi, [eax + 0x68]
lea ecx, [esi + 0x3d0]
mov edx, edi
push eax
call fcn.00521365
pop ecx
test al, al
je 0x52352c
mov eax, edi
mov edi, dword [esi + 0x24]
mov edx, dword [esi + 0x20]
inc ebx
jmp 0x5234ca
add ebx, dword [esi + 0x4c]
push 2
pop eax
mov edx, dword [esi + 0x20]
mov ecx, ebx
mov ebx, eax
mov eax, ecx
cmp dword [esi + 0x10], ebx
je 0x523525
lea edi, [eax + 0x68]
lea ecx, [esi + 0x3d0]
mov edx, edi
push eax
call fcn.00521365
pop ecx
test al, al
jne 0x52352c
mov eax, edi
mov edi, dword [esi + 0x24]
mov edx, dword [esi + 0x20]
inc ebx
jmp 0x5234ff
mov ebx, dword [esi + 0x10]
mov eax, edi
jmp 0x523532
mov eax, dword [esi + 0x24]
mov edx, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
cmp byte [esi + 4], 0
lea edi, [ebx + ecx]
je 0x523625
mov dword [esi + 0x10], ebx
mov dword [esi + 0x34], edi
mov edx, edi
push 0x651b6c
push eax
push dword [esi + 0x2c]
call fcn.0052122b
add esp, 0xc
mov ebx, edx
imul ecx, edx, 0x68
shr ebx, 1
add ecx, eax
mov edx, ebx
neg edx
imul edi, edx, 0x68
mov edx, ebx
add edi, ecx
xor ecx, ecx
push 0x651adc
push ebx
push eax
call fcn.0052122b
add esp, 0xc
mov dword [esi + 0x44], edx
mov dword [esi + 4], eax
xor ecx, ecx
mov edx, ebx
push 0x651aec
push ebx
push edi
mov edi, ebx
call fcn.0052122b
add esp, 0xc
imul ecx, ebx, 0x68
dec edi
mov dword [esi + 0x38], edx
lea eax, [eax + ecx - 0x68]
mov dword [esi], eax
mov eax, dword [esi + 0x44]
mov edx, dword [esi + 0x20]
cmp edi, 0xffffffff
je 0x523619
sub eax, 1
jb 0x523966
cmp edi, dword [esi + 0x38]
jae 0x523975
mov dword [esi + 8], edi
push 0x68
pop ebx
push ebx
mov edi, dword [esi + 4]
push edi
mov dword [esi + 0x30], eax
lea eax, [esi + 0x170]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push ebx
mov ebx, dword [esi]
push ebx
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 0x68
pop eax
push eax
lea eax, [esi + 0x170]
push eax
push ebx
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x30]
add esp, 0xc
push 0x68
pop ecx
add edi, ecx
add ebx, 0xffffff98
mov dword [esi + 4], edi
mov edi, dword [esi + 8]
mov dword [esi], ebx
dec edi
jmp 0x5235ab
mov eax, dword [esi + 0x24]
mov edi, dword [esi + 0x34]
mov ecx, dword [esi + 0x28]
mov ebx, dword [esi + 0x10]
cmp edi, ecx
jb 0x5239ba
cmp edi, eax
ja 0x5239ba
mov dword [esi + 0x34], edi
jae 0x523684
mov edi, dword [esi + 0x14]
cmp ebx, 9
ja 0x523687
mov eax, dword [esi + 0x24]
lea edx, [ecx + 0xa]
mov ecx, dword [esi + 0x28]
cmp edx, eax
cmovae edx, eax
cmp ebx, 1
adc ebx, 0
mov dword [esi + 0x34], edx
push 0x651c38
push eax
push dword [esi + 0x2c]
call fcn.0052122b
add esp, 0xc
mov ecx, eax
lea eax, [esi + 0x3d0]
push eax
push ebx
call fcn.0052125b
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x20]
add esp, 8
jmp 0x523687
mov edi, dword [esi + 0x14]
mov eax, dword [esi + 0x3c]
cmp edx, eax
jne 0x5236ca
lea ecx, [eax + eax]
mov edi, eax
mov dword [esi + 0x40], ecx
call fcn.0049e552
test eax, eax
je 0x5239cc
shl edi, 3
mov ebx, eax
push edi
mov edi, dword [esi + 0x14]
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, edi
push 4
pop edx
call fcn.00407480
mov edx, dword [esi + 0x20]
mov ecx, dword [esi + 0x28]
mov edi, ebx
jmp 0x5236cd
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x34]
mov dword [esi + 0x14], edi
sub eax, ecx
mov dword [edi + edx*8], eax
mov dword [edi + edx*8 + 4], ecx
inc edx
cmp edx, 2
jb 0x523911
mov edi, dword [esi + 0x14]
mov eax, dword [edi + edx*8 - 8]
mov ecx, dword [edi + edx*8 - 4]
add ecx, eax
cmp ecx, dword [esi + 0x24]
je 0x523735
mov ecx, dword [edi + edx*8 - 0x10]
cmp ecx, eax
jbe 0x523735
cmp edx, 2
jbe 0x523925
mov ebx, edi
lea edi, [edx - 3]
mov ebx, dword [ebx + edx*8 - 0x18]
mov dword [esi + 0x10], edi
lea edi, [ecx + eax]
cmp ebx, edi
jbe 0x523746
cmp edx, 3
jbe 0x523911
mov edi, dword [esi + 0x14]
add ecx, ebx
cmp dword [edi + edx*8 - 0x20], ecx
jbe 0x523749
jmp 0x523925
cmp edx, 3
jb 0x523750
mov ebx, dword [edi + edx*8 - 0x18]
lea ecx, [edx - 3]
mov dword [esi + 0x10], ecx
jmp 0x523749
mov edi, dword [esi + 0x14]
cmp ebx, eax
mov ebx, dword [esi + 0x10]
jb 0x523753
lea ebx, [edx - 2]
mov ecx, edi
mov edi, edx
push 0x651b7c
push ebx
call fcn.004452fe
pop ecx
pop edx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, edi
mov dword [esi + 0x10], ebx
mov dword [esi + 0x20], edi
mov dword [esi + 0x28], ecx
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x38], eax
lea eax, [ebx + 1]
push 0x651b8c
mov dword [esi + 0x3c], eax
push eax
call fcn.004452fe
pop ecx
pop edx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esi + 0x44], ecx
add edx, ecx
mov ecx, dword [esi + 0x38]
push 0x651b9c
push dword [esi + 0x24]
push dword [esi + 0x2c]
call fcn.0052122b
add esp, 0xc
mov ecx, dword [esi + 0x28]
imul edi, edx, 0x68
mov dword [esi], eax
mov dword [esi + 0x30], edi
imul ebx, ecx, 0x68
sub edx, ecx
cmp edx, ecx
mov ecx, ebx
lea ebx, [eax + ebx]
jae 0x523845
imul edi, edx, 0x68
push edi
push ebx
push dword [esi + 0x18]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x30]
mov ecx, dword [esi]
add edi, dword [esi + 0x18]
lea eax, [ecx + eax - 0x68]
mov dword [esi + 4], edi
mov dword [esi + 8], eax
cmp ebx, dword [esi]
mov eax, ebx
jbe 0x5238b3
mov edi, dword [esi + 4]
cmp edi, dword [esi + 0x18]
jbe 0x5238b3
mov ebx, eax
add eax, 0xffffff98
lea edx, [edi - 0x68]
lea ecx, [esi + 0x3d0]
push eax
call fcn.00521365
pop ecx
movzx ecx, al
imul edx, ecx, 0x68
neg ecx
imul ecx, ecx, 0x68
lea edi, [edi + edx - 0x68]
add ebx, ecx
test al, al
mov eax, edi
mov dword [esi + 4], edi
cmovne eax, ebx
push 0x68
push eax
mov edi, dword [esi + 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
add edi, 0xffffff98
mov dword [esi + 8], edi
jmp 0x5237e8
add dword [esi + 0x30], eax
mov edi, ebx
mov ebx, ecx
push ecx
push eax
push dword [esi + 0x18]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x18]
add ebx, eax
mov dword [esi + 4], ebx
mov ebx, eax
cmp ebx, dword [esi + 4]
mov eax, ebx
jae 0x5238ba
cmp edi, dword [esi + 0x30]
jae 0x5238ba
lea ecx, [esi + 0x3d0]
mov edx, edi
mov dword [esi + 8], eax
push eax
call fcn.00521365
pop ecx
mov ebx, eax
test al, al
mov eax, dword [esi + 8]
cmovne eax, edi
push 0x68
push eax
push dword [esi]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, bl
xor bl, 1
add dword [esi], 0x68
imul eax, eax, 0x68
add edi, eax
movzx eax, bl
mov ebx, dword [esi + 8]
imul eax, eax, 0x68
add ebx, eax
jmp 0x523863
mov ecx, dword [esi + 0x18]
mov edi, eax
jmp 0x5238be
mov edi, dword [esi]
mov ecx, eax
mov eax, dword [esi + 4]
sub eax, ecx
push eax
push ecx
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, dword [esi + 0x20]
mov ecx, dword [esi + 0x14]
cmp edx, dword [esi + 0x3c]
jbe 0x52398e
mov ebx, dword [esi + 0x44]
mov edi, dword [esi + 0x10]
add ebx, dword [esi + 0x28]
lea eax, [ecx + edi*8]
lea ecx, [ecx + edi*8 + 8]
not edi
add edi, edx
shl edi, 3
mov dword [eax + 8], ebx
mov ebx, dword [esi + 0x38]
mov dword [eax + 0xc], ebx
push edi
push ecx
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esi + 0x20]
add esp, 0xc
dec edx
jmp 0x5236dd
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x34]
mov edi, dword [esi + 0x14]
mov ebx, dword [esi + 0x24]
mov dword [esi + 0x3c], eax
jmp 0x523478
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x34]
mov ebx, dword [esi + 0x24]
mov dword [esi + 0x3c], eax
jmp 0x523478
push 4
pop edx
mov ebx, dword [esi + 0x2c]
mov ecx, edi
mov edi, eax
call fcn.00407480
push 8
pop edx
mov ecx, dword [esi + 0x18]
call fcn.00407480
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x48]
jmp 0x522f6c
mov ecx, dword [esi + 0xc]
mov ebx, dword [esi + 0x2c]
jmp 0x522f6c
mov ecx, dword [esi + 0x44]
mov edx, ecx
push 0x651afc
call fcn.0059ee70
mov edx, dword [esi + 0x38]
mov ecx, edi
push 0x651b0c
call fcn.0059ee70
push 0x651e58
call fcn.0059ee70
lea ecx, [esi + 0x170]
mov edx, 0x651bac
mov dword [ecx], 0x651a48
mov dword [ecx + 4], 1
and dword [ecx + 0x10], 0
mov dword [ecx + 8], str._rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrarycore_src_sync_atomic.rsthere_is_no_such_thing_as_an_acquire_store
and dword [ecx + 0xc], 0
call fcn.0059ede0
push 0x2c
pop edx
mov ecx, str.assertion_failed:_end___start__end___len
push 0x651c28
call fcn.0059ef30
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_runneradmin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x651bdc
call fcn.0059ef30
call fcn.00415d70
xor ecx, ecx
mov edx, ebx
inc ecx
call fcn.0059eab0
and dword [esi + 0xf78], 0
xor ecx, ecx
mov edx, ebx
mov byte [esi + 0x1e], 1
inc ecx
call fcn.0059eab0
jmp 0x523a3d
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_runneradmin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x651bbc
call fcn.0059ef30
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valueC:Users_runneradmin.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.6_srcwin.rs
push 0x651bcc
call fcn.0059ef30
mov dword [esi + 0xf78], 2
push 4
pop ecx
push 0x18
pop edx
call fcn.0059eab0
ud2