Function at 0x1400946d0
Capabilities:
Create directory
Delete file
Read file on windows
Set file attributes
Write file on windows

Disassembly:
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1270]
mov eax, 0x1370
call fcn.1400e2af0
sub rsp, rax
mov qword [rbp - 0x38], 0xfffffffffffffffe
mov qword [rsp + 0x13a8], rbx
mov qword [rsp + 0x13b0], rsi
mov qword [rsp + 0x13b8], rdi
movaps xmmword [rsp + 0x1360], xmm6
movaps xmmword [rsp + 0x1350], xmm7
mov rax, qword [0x14017c430]
xor rax, rsp
mov qword [rbp + 0x1240], rax
mov rsi, rcx
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x50]
mov qword [rbp - 0x78], rax
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
lea rdx, [0x14012d50c]
test rdx, 0xffffffffffff0000
jne 0x1400947bb
movzx edi, dx
mov ecx, edi
call fcn.140002830
test rax, rax
je 0x1400947c6
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.1400029f0
jmp 0x1400947c6
lea rcx, [rsp + 0x20]
call fcn.140035240
nop
xor r14d, r14d
mov word [rsp + 0x38], r14w
or r15, 0xffffffffffffffff
cmp dword [rsi + 0x18], r14d
jne 0x140095779
lea rdi, [rsi + 0x60]
movsd xmm7, qword [0x140132ba8]
nop dword [rax]
mov qword [rbp - 0x70], rdi
mov byte [rbp - 0x68], 0
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rbp - 0x68], 1
cmp qword [rsi + 0x98], 0
jne 0x14009482d
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [rbp - 0x68], 0
mov ecx, socket
call qword [sym.imp.KERNEL32.dll_Sleep]
nop
jmp 0x140095657
lea rcx, [rsi + 0x88]
lea rdx, [rbp - 0x60]
call fcn.140096f20
mov r12, rax
mov r9, qword [rax]
lea rcx, [r9 - 0x18]
mov rdi, qword [rsp + 0x48]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400948a1
cmp dword [rdi + 0x10], 0
jl 0x140094890
mov rdx, qword [rdi]
cmp qword [rcx], rdx
jne 0x140094890
call fcn.140001d80
mov rbx, rax
mov ecx, r15d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140094885
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + VariantCopy]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x48], rax
jmp 0x1400948a1
mov r8d, dword [r9 - 0x10]
mov rdx, r9
lea rcx, [rsp + 0x48]
call fcn.140002120
lea rdx, [r12 + 8]
lea rcx, [rsp + 0x50]
call fcn.140001cf0
nop
lea rax, [rbp - 0x58]
mov qword [rbp - 0x80], rax
mov rdx, qword [rbp - 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400948d9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
mov rdx, qword [rbp - 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400948f9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [rbp - 0x68], 0
lea rdx, [0x1401317a8]
mov rcx, qword [rsp + 0x48]
call fcn.1400d9d24
mov qword [rsi + 0x20], rax
test rax, rax
je 0x140095653
lea rcx, [rbp - 0x50]
call fcn.1400853d0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x20]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14009498e
cmp dword [rdi + 0x10], 0
jl 0x14009497f
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14009497f
call fcn.140001d80
mov rbx, rax
mov ecx, r15d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140094974
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + VariantCopy]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x14009498e
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140002120
nop
mov rdx, qword [rbp - 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400949ad
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
lea rcx, [rbp]
call qword [sym.imp.KERNEL32.dll_GetSystemTime]
cmp dword [rsi + 8], 0
je 0x140094a05
mov rdx, qword [rsp + 0x50]
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
mov r8d, 1
lea rdx, [0x14012ed28]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
xor edx, edx
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edx, 2
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov r8d, 2
lea rdx, [0x140129ff0]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
xor edx, edx
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edx, 2
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov r8d, 1
lea rdx, [0x14012ed28]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
mov r8d, 5
lea rdx, [0x14012a000]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
xor edx, edx
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov r8d, 1
lea rdx, [0x14012ed28]
lea rcx, [rsp + 0x20]
call fcn.14003bd50
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x60], 0
lea rcx, [rsp + 0x58]
call fcn.140094220
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x58]
call fcn.1400376c0
nop
mov r8, qword [rax]
lea rdx, str._s.0
lea rcx, [rsp + 0x20]
call fcn.140045040
nop
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140094aeb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
mov rdi, qword [rsp + 0x20]
cmp dword [rdi - 0x10], 0xff
jl 0x140094b8b
mov r8d, 0xfe
lea rdx, [rbp - 0x48]
lea rcx, [rsp + 0x20]
call fcn.140014360
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140094b6c
cmp dword [rdi + 0x10], 0
jl 0x140094b5d
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140094b5d
call fcn.140001d80
mov rbx, rax
mov ecx, r15d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140094b52
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + VariantCopy]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x140094b6c
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140002120
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140094b8b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
lea rdx, [0x140132578]
mov rcx, qword [rsp + 0x20]
call fcn.1400d9d24
mov r12, rax
test rax, rax
je 0x14009564a
mov dword [rsp + 0x40], r14d
mov ebx, r14d
mov rcx, qword [rsp + 0x48]
movsxd rdx, dword [rcx - 0x10]
add rdx, rdx
mov r9, rax
mov r8d, 1
call fcn.1400d6c94
mov r9, r12
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x38]
call fcn.1400d6c94
mov r9, r12
mov edx, reloc.WS2_32.dll_recv
lea r8d, [rdx - 0xf]
lea rcx, [rbp]
call fcn.1400d6c94
nop word [rax + rax]
mov dword [rsp + 0x40], ebx
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, qword [rsi + 0x20]
call fcn.1400d9e30
mov rcx, qword [rsi + 0x20]
call fcn.1400da118
mov ebx, eax
mov edx, dword [rsp + 0x40]
cmp eax, edx
jbe 0x140094cd1
mov ecx, dword [rsi + 0x50]
shl ecx, 0x14
cmp eax, ecx
jae 0x140094cd1
xor r8d, r8d
mov rcx, qword [rsi + 0x20]
call fcn.1400d9e30
mov ecx, ebx
sub ecx, dword [rsp + 0x40]
mov edx, 0x1000
call fcn.1400dc4c4
mov qword [rbp - 0x80], rax
test eax, eax
jle 0x140094c9a
mov edi, eax
nop
mov r9, qword [rsi + 0x20]
mov edx, 1
mov r8d, 0x1000
lea rcx, [rbp + 0x240]
call fcn.1400d8c04
mov r9, r12
mov edx, 1
mov r8d, 0x1000
lea rcx, [rbp + 0x240]
call fcn.1400d6c94
dec rdi
jne 0x140094c60
movsxd rdi, dword [rbp - 0x7c]
mov r9, qword [rsi + 0x20]
mov r8, rdi
mov edx, 1
lea rcx, [rbp + 0x240]
call fcn.1400d8c04
mov r9, r12
mov r8, rdi
mov edx, 1
lea rcx, [rbp + 0x240]
call fcn.1400d6c94
mov edx, dword [rsp + 0x40]
mov eax, dword [rsi + 0x50]
shl eax, 0x14
cmp ebx, eax
jae 0x140094cea
cmp ebx, edx
jbe 0x140094cf5
cmp dword [rsi + 0x18], 0
jne 0x140094cf5
jmp 0x140094c00
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
mov rcx, r12
call fcn.1400d79b4
lea rcx, [rsp + 0x28]
call fcn.1400853d0
nop
cmp dword [rsi + 8], 0
je 0x140094e08
mov r12, qword [rsp + 0x50]
movsxd rcx, dword [r12 - 0x10]
mov rbx, r12
mov rax, qword [rsp + 0x28]
sub rbx, rax
sar rbx, 1
mov r13d, dword [rax - 0x10]
mov eax, r14d
test ecx, ecx
setns al
test eax, eax
je 0x140095687
mov rdx, rcx
mov rcx, r12
call fcn.1400d4f10
mov r14, rax
mov ecx, 0x7fffffff
sub ecx, eax
xor eax, eax
mov edx, eax
cmp ecx, r13d
setge dl
test edx, edx
je 0x14009567c
lea edi, [r13 + r14]
test edi, edi
js 0x140095671
mov rax, qword [rsp + 0x28]
mov edx, 1
sub edx, dword [rax - 8]
mov ecx, dword [rax - 0xc]
sub ecx, edi
or ecx, edx
jge 0x140094d99
mov edx, edi
lea rcx, [rsp + 0x28]
call fcn.1400020c0
mov rax, qword [rsp + 0x28]
cmp rbx, r13
ja 0x140094da2
lea r12, [rax + rbx*2]
movsxd rdx, r14d
add rdx, rdx
lea rcx, [rax + r13*2]
mov r9, rdx
mov r8, r12
call fcn.1400d4e34
mov rdx, qword [rsp + 0x28]
cmp edi, dword [rdx - 0xc]
jg 0x140095666
mov dword [rdx - 0x10], edi
movsxd rcx, edi
mov rax, qword [rsp + 0x28]
xor edx, edx
mov word [rax + rcx*2], dx
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edx, 2
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov r8d, 1
lea rdx, [0x14012ed28]
lea rcx, [rsp + 0x28]
call fcn.14003bd50
lea r14, [0x140129ff8]
lea rdi, [0x140129ff8]
mov rax, qword [rsp + 0x28]
sub rdi, rax
sar rdi, 1
mov r12d, dword [rax - 0x10]
mov edx, 2
lea rcx, [0x140129ff8]
call fcn.1400d4f10
mov r13, rax
mov ecx, 0x7fffffff
sub ecx, eax
xor eax, eax
mov edx, eax
cmp ecx, r12d
setge dl
test edx, edx
je 0x14009576e
lea ebx, [r12 + r13]
test ebx, ebx
js 0x140095763
mov rax, qword [rsp + 0x28]
mov edx, 1
sub edx, dword [rax - 8]
mov ecx, dword [rax - 0xc]
sub ecx, ebx
or ecx, edx
jge 0x140094e85
mov edx, ebx
lea rcx, [rsp + 0x28]
call fcn.1400020c0
mov rax, qword [rsp + 0x28]
cmp rdi, r12
ja 0x140094e8e
lea r14, [rax + rdi*2]
movsxd rdx, r13d
add rdx, rdx
lea rcx, [rax + r12*2]
mov r9, rdx
mov r8, r14
call fcn.1400d4e34
mov rdx, qword [rsp + 0x28]
cmp ebx, dword [rdx - 0xc]
jg 0x140095758
mov dword [rdx - 0x10], ebx
movsxd rcx, ebx
mov rax, qword [rsp + 0x28]
xor r14d, r14d
mov word [rax + rcx*2], r14w
lea r8d, [r14 + 1]
lea rdx, [0x14012ed28]
lea rcx, [rsp + 0x28]
call fcn.14003bd50
xor edx, edx
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea edx, [r14 + 2]
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
lea rcx, [rbp - 0x30]
call qword [sym.imp.KERNEL32.dll_GetLocalTime]
mov qword [rbp - 0x28], r14
movaps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp - 0x20], xmm0
lea rdx, [rsp + 0x70]
lea rcx, [rbp - 0x20]
call qword [sym.imp.OLEAUT32.dll_VariantTimeToSystemTime]
movsd xmm6, qword [rsp + 0x70]
test eax, eax
je 0x140094f59
movzx eax, word [rbp - 0x12]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm7
addsd xmm6, xmm0
movsd qword [rsp + 0x70], xmm6
lea rdx, [rbp + 0x20]
movapd xmm0, xmm6
call qword [sym.imp.OLEAUT32.dll_UnRegisterTypeLib]
test eax, eax
je 0x140094f7b
mov r8d, eax
lea rdx, [rbp + 0x20]
movapd xmm0, xmm6
call fcn.140016470
lea rdx, [rsp + 0x68]
lea rcx, [rbp + 0x20]
call qword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
mov r8d, 0xa
lea rdx, [rbp + 0x30]
mov ecx, dword [rsp + 0x68]
call fcn.1400da6c8
xor eax, eax
mov rcx, r15
lea rdi, [rbp + 0x30]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x14009500c
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x140095083
cmp dword [rdx + 0x10], eax
jge 0x140094fe1
cmp dword [rbx - 0xc], eax
jl 0x140095692
mov dword [rbx - 0x10], r14d
mov word [rbx], r14w
jmp 0x140095083
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140094ff8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
jmp 0x140095083
mov r13d, dword [rbx - 0x10]
lea r12, [rbp + 0x30]
sub r12, rbx
sar r12, 1
test ecx, ecx
js 0x14009574d
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x140095044
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.1400020c0
mov rbx, qword [rsp + 0x30]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp r12, r13
lea r13, [rax + rax]
mov r9, r13
ja 0x140095068
lea r8, [rbx + r12*2]
call fcn.1400d4ebc
jmp 0x140095071
lea r8, [rbp + 0x30]
call fcn.1400d4e34
cmp edi, dword [rbx - 0xc]
jg 0x140095742
mov dword [rbx - 0x10], edi
mov word [r13 + rbx], r14w
mov r8d, 1
lea rdx, [0x14012ffcc]
lea rcx, [rsp + 0x30]
call fcn.14003bd50
mov r8d, 0xa
lea rdx, [rbp + 0x30]
mov ecx, dword [rsp + 0x6c]
call fcn.1400da6c8
xor eax, eax
mov rcx, r15
lea rdi, [rbp + 0x30]
repne scasw ax, word [rdi]
not rcx
dec rcx
lea r15, [rbp + 0x30]
lea r12, [rbp + 0x30]
mov rdi, qword [rsp + 0x30]
sub r12, rdi
sar r12, 1
mov r13d, dword [rdi - 0x10]
mov eax, r14d
test ecx, ecx
setns al
test eax, eax
je 0x140095737
movsxd rdx, ecx
lea rcx, [rbp + 0x30]
call fcn.1400d4f10
mov r14, rax
mov ecx, 0x7fffffff
sub ecx, eax
xor eax, eax
mov edx, eax
cmp ecx, r13d
setge dl
test edx, edx
je 0x14009572c
lea ebx, [r13 + r14]
test ebx, ebx
js 0x140095721
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, ebx
or eax, ecx
jge 0x14009513d
mov edx, ebx
lea rcx, [rsp + 0x30]
call fcn.1400020c0
mov rdi, qword [rsp + 0x30]
cmp r12, r13
ja 0x140095146
lea r15, [rdi + r12*2]
movsxd rdx, r14d
add rdx, rdx
lea rcx, [rdi + r13*2]
mov r9, rdx
mov r8, r15
call fcn.1400d4e34
cmp ebx, dword [rdi - 0xc]
jg 0x140095716
mov dword [rdi - 0x10], ebx
movsxd rax, ebx
xor ebx, ebx
mov word [rdi + rax*2], bx
lea r8d, [rbx + 1]
lea rdx, reloc.msi.dll_MsiGetActiveDatabase
lea rcx, [rsp + 0x30]
call fcn.14003bd50
mov eax, reloc.WS2_32.dll_socket
mov word [rbp - 0x28], ax
mov dword [rbp - 0x26], 0x3b003b
mov eax, 0x3e7
mov word [rbp - 0x22], ax
movaps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp + 0x10], xmm0
lea rdx, [rsp + 0x78]
lea rcx, [rbp + 0x10]
call qword [sym.imp.OLEAUT32.dll_VariantTimeToSystemTime]
movsd xmm6, qword [rsp + 0x78]
test eax, eax
je 0x1400951da
movzx eax, word [rbp + 0x1e]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm7
addsd xmm6, xmm0
movsd qword [rsp + 0x78], xmm6
lea rdx, [rbp - 0x10]
movapd xmm0, xmm6
call qword [sym.imp.OLEAUT32.dll_UnRegisterTypeLib]
test eax, eax
je 0x1400951fc
mov r8d, eax
lea rdx, [rbp - 0x10]
movapd xmm0, xmm6
call fcn.140016470
lea rdx, [rbp - 0x78]
lea rcx, [rbp - 0x10]
call qword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
mov rcx, qword [rbp - 0x78]
mov qword [rsp + 0x68], rcx
mov r8d, 0xa
lea rdx, [rbp + 0x30]
call fcn.1400da6c8
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rbp + 0x30]
repne scasw ax, word [rdi]
not rcx
dec rcx
lea r15, [rbp + 0x30]
lea r12, [rbp + 0x30]
mov rdi, qword [rsp + 0x30]
sub r12, rdi
sar r12, 1
mov r13d, dword [rdi - 0x10]
test ecx, ecx
setns al
test eax, eax
je 0x14009570b
movsxd rdx, ecx
lea rcx, [rbp + 0x30]
call fcn.1400d4f10
mov r14, rax
mov ecx, 0x7fffffff
sub ecx, eax
mov edx, ebx
cmp ecx, r13d
setge dl
test edx, edx
je 0x140095700
lea ebx, [r13 + rax]
test ebx, ebx
js 0x1400956f5
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, ebx
or eax, ecx
jge 0x1400952ae
mov edx, ebx
lea rcx, [rsp + 0x30]
call fcn.1400020c0
mov rdi, qword [rsp + 0x30]
cmp r12, r13
ja 0x1400952b7
lea r15, [rdi + r12*2]
movsxd rdx, r14d
add rdx, rdx
lea rcx, [rdi + r13*2]
mov r9, rdx
mov r8, r15
call fcn.1400d4e34
cmp ebx, dword [rdi - 0xc]
jg 0x1400956ea
mov dword [rdi - 0x10], ebx
movsxd rax, ebx
xor ebx, ebx
mov word [rdi + rax*2], bx
lea r8d, [rbx + 1]
lea rdx, [0x14012ffcc]
lea rcx, [rsp + 0x30]
call fcn.14003bd50
lea r8d, [rbx + 0xa]
lea rdx, [rbp + 0x30]
mov ecx, dword [rsp + 0x6c]
call fcn.1400da6c8
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rbp + 0x30]
repne scasw ax, word [rdi]
not rcx
dec rcx
lea r15, [rbp + 0x30]
lea r12, [rbp + 0x30]
mov rdi, qword [rsp + 0x30]
sub r12, rdi
sar r12, 1
mov r13d, dword [rdi - 0x10]
test ecx, ecx
setns al
test eax, eax
je 0x1400956df
movsxd rdx, ecx
lea rcx, [rbp + 0x30]
call fcn.1400d4f10
mov r14, rax
mov ecx, 0x7fffffff
sub ecx, eax
mov edx, ebx
cmp ecx, r13d
setge dl
test edx, edx
je 0x1400956d4
lea ebx, [r13 + rax]
test ebx, ebx
js 0x1400956c9
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, ebx
or eax, ecx
jge 0x140095393
mov edx, ebx
lea rcx, [rsp + 0x30]
call fcn.1400020c0
mov rdi, qword [rsp + 0x30]
cmp r12, r13
ja 0x14009539c
lea r15, [rdi + r12*2]
movsxd rdx, r14d
add rdx, rdx
lea rcx, [rdi + r13*2]
mov r9, rdx
mov r8, r15
call fcn.1400d4e34
cmp ebx, dword [rdi - 0xc]
jg 0x1400956be
mov dword [rdi - 0x10], ebx
movsxd rax, ebx
xor edx, edx
mov word [rdi + rax*2], dx
lea r8d, [rdx + 1]
lea rdx, [0x14012ffcc]
lea rcx, [rsp + 0x30]
call fcn.14003bd50
lea rax, [0x14012a024]
mov r15, rax
mov r12, rax
mov rbx, qword [rsp + 0x30]
sub r12, rbx
sar r12, 1
mov r13d, dword [rbx - 0x10]
mov edx, 2
mov rcx, rax
call fcn.1400d4f10
mov r14, rax
mov ecx, 0x7fffffff
sub ecx, eax
xor eax, eax
mov edx, eax
cmp ecx, r13d
setge dl
test edx, edx
je 0x1400956b3
lea edi, [r13 + r14]
test edi, edi
js 0x1400956a8
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x14009544f
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.1400020c0
mov rbx, qword [rsp + 0x30]
cmp r12, r13
ja 0x140095458
lea r15, [rbx + r12*2]
movsxd rdx, r14d
add rdx, rdx
lea rcx, [rbx + r13*2]
mov r9, rdx
mov r8, r15
call fcn.1400d4e34
cmp edi, dword [rbx - 0xc]
jg 0x14009569d
mov dword [rbx - 0x10], edi
movsxd rax, edi
xor r14d, r14d
mov word [rbx + rax*2], r14w
mov r8d, dword [rbx - 0x10]
mov rdx, rbx
lea rcx, [rsp + 0x28]
call fcn.14003bd50
mov byte [rsp + 0x3c], 1
lea rdx, [0x140131c20]
mov rcx, qword [rsp + 0x28]
call fcn.1400d9d24
mov r12, rax
test rax, rax
je 0x14009560a
mov r9, rax
lea edx, [r14 + 0x10]
lea r8d, [r14 + 1]
lea rcx, [rbp]
call fcn.1400d6c94
mov r9, r12
mov edx, 1
mov r8d, edx
lea rcx, [rsp + 0x3c]
call fcn.1400d6c94
mov r9, r12
lea edx, [r14 + 4]
lea r8d, [r14 + 1]
lea rcx, [rsp + 0x40]
call fcn.1400d6c94
mov rdx, qword [rsp + 0x20]
cmp dword [rdx - 8], 1
jle 0x14009550d
mov edx, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140001fb0
mov rdi, qword [rsp + 0x20]
lea r8, [rdi - 0x10]
mov eax, dword [r8]
add eax, eax
mov r15, 0xffffffffffffffff
mov rcx, r15
lea r13, [0x14017e9a4]
je 0x14009554d
mov edx, eax
cmp rcx, 4
jl 0x14009553b
mov rcx, r14
jmp 0x14009553e
inc rcx
movzx eax, byte [rcx + r13]
xor byte [rdi], al
inc rdi
dec rdx
jne 0x140095530
movsxd rdx, dword [r8]
add rdx, rdx
mov r9, r12
mov r8d, 1
mov rcx, qword [rsp + 0x20]
call fcn.1400d6c94
mov r9, r12
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x38]
call fcn.1400d6c94
mov rdx, qword [rsp + 0x48]
cmp dword [rdx - 8], 1
jle 0x140095599
mov edx, dword [rdx - 0x10]
lea rcx, [rsp + 0x48]
call fcn.140001fb0
mov rdx, qword [rsp + 0x48]
mov r10, rdx
mov eax, dword [rdx - 0x10]
add eax, eax
mov rcx, r15
je 0x1400955ca
mov edi, eax
cmp rcx, 4
jl 0x1400955b3
mov rcx, r14
jmp 0x1400955b6
inc rcx
movzx eax, byte [rcx + r13]
xor byte [rdx], al
inc rdx
dec rdi
jne 0x1400955a8
mov rdx, qword [rsp + 0x48]
movsxd rdx, dword [rdx - 0x10]
add rdx, rdx
mov r9, r12
mov r8d, 1
mov rcx, r10
call fcn.1400d6c94
mov r9, r12
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x38]
call fcn.1400d6c94
mov rcx, r12
call fcn.1400d78e8
mov rcx, r12
call fcn.1400d79b4
jmp 0x14009560e
or r15, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14009562a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14009564a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
mov rcx, qword [rsi + 0x20]
call fcn.1400d79b4
lea rdi, [rsi + 0x60]
cmp dword [rsi + 0x18], 0
jne 0x140095779
jmp 0x1400947f0
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
nop
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
nop
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
int3
mov ecx, 0x80070057
call fcn.1400022b0
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14009579a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
lea rax, [rsp + 0x50]
mov qword [rbp - 0x80], rax
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400957c4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r15d
dec r15d
test r15d, r15d
jg 0x1400957e4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
xor eax, eax
mov rcx, qword [rbp + 0x1240]
xor rcx, rsp
call fcn.1400d4d90
lea r11, [rsp + 0x1370]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret