Function at 0x14000c990
Capabilities:
Encrypt or decrypt data via bcrypt

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x28]
sub rsp, 0x128
mov r12, r9
mov rdi, rcx
xor ebx, ebx
mov dword [rsp + 0x50], ebx
mov dword [rbp + 8], ebx
mov dword [rbp], 0x80
mov rdx, qword [0x14028d788]
test rdx, rdx
jne 0x14000c9f3
lea rdx, [0x14024a500]
cmp qword [0x14028d7b8], rbx
cmovne rdx, qword [0x14028d7a8]
xor r9d, r9d
xor r8d, r8d
lea rcx, [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
jns 0x14000ca49
lea r14, vtable.CVolObject.0
mov qword [rdi], r14
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rbx
lea rsi, vtable.CVolMem.0
mov qword [rdi], rsi
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x28], rbx
mov qword [rdi + 0x20], rbx
mov r15d, 0x40
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
jmp 0x14000d61e
mov r8, qword [0x14028e148]
test r8, r8
je 0x14000ca6c
mov rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp word [r8 + rax*2], bx
jne 0x14000ca60
jmp 0x14000ca98
mov rax, qword [0x14028e178]
mov rcx, rax
test rax, rax
jne 0x14000ca80
mov rax, rbx
jmp 0x14000ca86
shr rax, 1
dec rax
lea r8, [0x14024a500]
test rcx, rcx
cmovne r8, qword [0x14028e168]
lea r9d, [rax*2 + 2]
mov dword [rsp + 0x20], ebx
lea rdx, str.ChainingMode
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptSetProperty]
test eax, eax
jns 0x14000cb0a
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
lea r14, vtable.CVolObject.0
mov qword [rdi], r14
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rbx
lea rsi, vtable.CVolMem.0
mov qword [rdi], rsi
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x28], rbx
mov qword [rdi + 0x20], rbx
mov r15d, 0x40
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
jmp 0x14000d61e
mov r8, qword [0x14028d728]
test r8, r8
jne 0x14000cb2c
lea r8, [0x14024a500]
cmp qword [0x14028d758], rbx
cmovne r8, qword [0x14028d748]
mov rax, qword [0x14028d788]
test rax, rax
jne 0x14000cb4e
lea rax, [0x14024a500]
cmp qword [0x14028d7b8], rbx
cmovne rax, qword [0x14028d7a8]
sub r8, rax
movzx edx, word [rax]
movzx ecx, word [rax + r8]
sub edx, ecx
jne 0x14000cb65
add rax, 2
test ecx, ecx
jne 0x14000cb51
test edx, edx
jne 0x14000cbdb
mov dword [rsp + 0x20], ebx
lea r9d, [rdx + 4]
lea r8, [rbp]
lea rdx, str.EffectiveKeyLength
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptSetProperty]
test eax, eax
jns 0x14000cbdb
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
lea r14, vtable.CVolObject.0
mov qword [rdi], r14
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rbx
lea rsi, vtable.CVolMem.0
mov qword [rdi], rsi
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x28], rbx
mov qword [rdi + 0x20], rbx
mov r15d, 0x40
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
jmp 0x14000d61e
mov r8, qword [0x14028e268]
test r8, r8
jne 0x14000cbfd
lea r8, [0x14024a500]
cmp qword [0x14028e298], rbx
cmovne r8, qword [0x14028e288]
mov rax, qword [0x14028e148]
test rax, rax
jne 0x14000cc1f
lea rax, [0x14024a500]
cmp qword [0x14028e178], rbx
cmovne rax, qword [0x14028e168]
sub r8, rax
movzx edx, word [rax]
movzx ecx, word [rax + r8]
sub edx, ecx
jne 0x14000cc36
add rax, 2
test ecx, ecx
jne 0x14000cc22
test edx, edx
jne 0x14000ccac
mov dword [rsp + 0x20], ebx
lea r9d, [rdx + 4]
lea r8, [rbp + 8]
lea rdx, str.MessageBlockLength
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptSetProperty]
test eax, eax
jns 0x14000ccac
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
lea r14, vtable.CVolObject.0
mov qword [rdi], r14
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rbx
lea rsi, vtable.CVolMem.0
mov qword [rdi], rsi
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x28], rbx
mov qword [rdi + 0x20], rbx
mov r15d, 0x40
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
jmp 0x14000d61e
mov dword [rsp + 0x28], ebx
lea rax, [rbp + 0x98]
mov qword [rsp + 0x20], rax
mov r9d, 4
lea r8, [rbp + 0xa8]
lea rdx, str.BlockLength
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
test eax, eax
jns 0x14000cd2f
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
lea r14, vtable.CVolObject.0
mov qword [rdi], r14
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], rbx
lea rsi, vtable.CVolMem.0
mov qword [rdi], rsi
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x28], rbx
mov qword [rdi + 0x20], rbx
mov r15d, 0x40
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
jmp 0x14000d61e
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x38], rax
lea r14, vtable.CVolObject.0
mov qword [rbp - 0x38], r14
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rbx
lea rsi, vtable.CVolMem.0
mov qword [rbp - 0x38], rsi
mov qword [rbp - 0x20], rbx
mov qword [rbp - 0x10], rbx
mov qword [rbp - 0x18], rbx
mov r15d, 0x40
mov qword [rbp - 8], r15
mov qword [rbp - 0x38], rsi
mov rbx, qword [rbp + 0xb0]
mov rdx, rbx
lea rcx, [rbp - 0x38]
call fcn.140005660
nop
mov r13, qword [rbx + 0x28]
test r13, r13
jle 0x14000cdc2
cmp qword [rbp - 0x10], 0
je 0x14000ce8b
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000cdae
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
xor r13d, r13d
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x10], r13
mov qword [rbp - 0x18], r13
jmp 0x14000ce8e
neg r13
mov rax, qword [rbp - 0x10]
mov qword [rbp + 0x10], rax
lea rbx, [rax + r13]
cmp rbx, rax
jne 0x14000cddf
mov rcx, qword [rbp - 0x20]
jmp 0x14000ce7d
test rbx, rbx
jne 0x14000ce08
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000cdf8
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
xor ecx, ecx
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x10], rcx
mov qword [rbp - 0x18], rcx
jmp 0x14000ce7d
mov rcx, qword [rbp - 0x20]
test rcx, rcx
jne 0x14000ce1f
mov rdx, rbx
lea rcx, [rbp - 0x38]
call fcn.14001fdf0
jmp 0x14000ce7a
mov r12, qword [rbp - 8]
test r12, r12
cmovle r12, r15
mov rax, qword [rbp - 0x18]
cmp rax, rbx
jl 0x14000ce48
sub rax, rbx
cmp rax, r12
jg 0x14000ce48
mov qword [rbp - 0x10], rbx
mov r12, qword [rbp + 0x88]
jmp 0x14000ce7d
mov rax, rbx
cqo
idiv r12
sub r12, rdx
add r12, rbx
mov r8, r12
mov rdx, rcx
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], rbx
mov r12, qword [rbp + 0x88]
mov rcx, rax
add rcx, qword [rbp + 0x10]
mov r8, r13
xor edx, edx
call fcn.1401c61e0
xor r13d, r13d
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov qword [rbp - 0x78], r15
mov qword [rsp + 0x58], rsi
mov rdx, r12
lea rcx, [rsp + 0x58]
call fcn.140005660
nop
mov eax, dword [rbp]
cdq
and edx, 7
add eax, edx
sar eax, 3
movsxd rbx, eax
mov rax, qword [r12 + 0x28]
cmp rax, rbx
jle 0x14000cfae
mov rax, qword [rbp - 0x80]
cmp rbx, rax
je 0x14000d081
test rbx, rbx
jne 0x14000cf32
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000cf19
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov rax, r13
mov qword [rbp - 0x80], rax
mov qword [rsp + 0x78], r13
mov rcx, r13
jmp 0x14000d090
cmp qword [rsp + 0x70], 0
jne 0x14000cf4c
mov rdx, rbx
lea rcx, [rsp + 0x58]
call fcn.14001fdf0
jmp 0x14000d07d
mov r12, qword [rbp - 0x78]
test r12, r12
cmovle r12, r15
mov rax, qword [rsp + 0x78]
cmp rax, rbx
jl 0x14000cf75
sub rax, rbx
cmp rax, r12
jg 0x14000cf75
mov rax, rbx
mov qword [rbp - 0x80], rbx
jmp 0x14000d081
mov rax, rbx
cqo
idiv r12
sub r12, rdx
add r12, rbx
mov r8, r12
mov rdx, qword [rsp + 0x70]
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], r12
mov rax, rbx
mov qword [rbp - 0x80], rbx
jmp 0x14000d081
sub rbx, rax
mov rax, qword [rbp - 0x80]
mov qword [rbp + 0x10], rax
lea r12, [rax + rbx]
cmp r12, rax
jne 0x14000cfcc
mov rcx, qword [rsp + 0x70]
jmp 0x14000d06f
test r12, r12
jne 0x14000cffb
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000cfe8
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov rcx, r13
jmp 0x14000d06f
mov rcx, qword [rsp + 0x70]
test rcx, rcx
jne 0x14000d014
mov rdx, r12
lea rcx, [rsp + 0x58]
call fcn.14001fdf0
jmp 0x14000d06c
mov r13, qword [rbp - 0x78]
test r13, r13
cmovle r13, r15
mov rax, qword [rsp + 0x78]
cmp rax, r12
jl 0x14000d03a
sub rax, r12
cmp rax, r13
jg 0x14000d03a
mov qword [rbp - 0x80], r12
xor r13d, r13d
jmp 0x14000d06f
mov rax, r12
cqo
idiv r13
sub r13, rdx
add r13, r12
mov r8, r13
mov rdx, rcx
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], r13
mov qword [rbp - 0x80], r12
xor r13d, r13d
mov rcx, rax
add rcx, qword [rbp + 0x10]
mov r8, rbx
xor edx, edx
call fcn.1401c61e0
mov rax, qword [rbp - 0x80]
test rax, rax
jne 0x14000d08b
mov rcx, r13
jmp 0x14000d090
mov rcx, qword [rsp + 0x70]
mov dword [rsp + 0x30], r13d
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rcx
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp + 0xa0]
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptGenerateSymmetricKey]
test eax, eax
jns 0x14000d14d
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r14
mov qword [rdi + 8], r13
mov qword [rdi + 0x10], r13
mov qword [rdi], rsi
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x20], r13
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
mov qword [rsp + 0x58], rsi
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000d111
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x58], r14
mov qword [rbp - 0x38], rsi
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000d13c
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x10], r13
mov qword [rbp - 0x18], r13
jmp 0x14000d61a
lea rax, vtable.CVolCommonBaseWithMemManager.0
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x70], r14
mov qword [rbp - 0x68], r13
mov qword [rbp - 0x60], r13
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x40], r15
mov rbx, qword [rbp + 0x80]
mov rax, qword [rbx + 0x28]
test rax, rax
mov rdx, r13
je 0x14000d18f
mov rdx, qword [rbx + 0x18]
mov dword [rsp + 0x48], 1
lea rcx, [rbp + 0x78]
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x38], r13d
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
xor r9d, r9d
mov r8d, eax
mov rcx, qword [rbp + 0xa0]
call qword [sym.imp.bcrypt.dll_BCryptDecrypt]
test eax, eax
jns 0x14000d291
mov rcx, qword [rbp + 0xa0]
call qword [sym.imp.bcrypt.dll_BCryptDestroyKey]
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov qword [rdi], r14
mov qword [rdi + 8], r13
mov qword [rdi + 0x10], r13
mov qword [rdi], rsi
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x20], r13
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
mov qword [rbp - 0x70], rsi
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x14000d229
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + 0x18]
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x70], r14
mov qword [rsp + 0x58], rsi
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000d255
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x58], r14
mov qword [rbp - 0x38], rsi
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000d280
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x10], r13
mov qword [rbp - 0x18], r13
jmp 0x14000d61a
mov r12d, dword [rbp + 0x78]
mov rcx, qword [rbp - 0x58]
test rcx, rcx
je 0x14000d33f
mov r8, qword [rbp - 0x48]
cmp r12, r8
je 0x14000d370
test r12, r12
jne 0x14000d2d9
mov rdx, rcx
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + 0x18]
mov rcx, r13
mov qword [rbp - 0x58], rcx
mov r8, r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
jmp 0x14000d370
mov rbx, qword [rbp - 0x40]
test rbx, rbx
cmovle rbx, r15
mov rax, qword [rbp - 0x50]
cmp rax, r12
jl 0x14000d305
sub rax, r12
cmp rax, rbx
jg 0x14000d305
mov r8, r12
mov qword [rbp - 0x48], r12
mov rbx, qword [rbp + 0x80]
jmp 0x14000d370
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov r8, rbx
mov rdx, rcx
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov rcx, rax
mov qword [rbp - 0x58], rax
mov qword [rbp - 0x50], rbx
mov r8, r12
mov qword [rbp - 0x48], r12
mov rbx, qword [rbp + 0x80]
jmp 0x14000d370
test r12, r12
je 0x14000d36c
mov rbx, qword [rbp - 0x40]
test rbx, rbx
cmovle rbx, r15
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov rdx, rbx
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax]
jmp 0x14000d324
mov r8, qword [rbp - 0x48]
xor edx, edx
call fcn.1401c61e0
mov rax, qword [rbp + 0xb0]
test byte [rax + 8], 1
je 0x14000d38c
mov edx, r13d
mov rcx, r13
jmp 0x14000d39b
mov rdx, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
test rdx, rdx
cmove rcx, r13
mov r8, qword [rbp - 0x58]
cmp qword [rbp - 0x48], 0
cmove r8, r13
mov r11, qword [rbx + 0x28]
test r11, r11
mov r10, r13
je 0x14000d3b8
mov r10, qword [rbx + 0x18]
mov dword [rsp + 0x48], 1
lea rax, [rbp + 0x78]
mov qword [rsp + 0x40], rax
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x30], r8
mov dword [rsp + 0x28], edx
mov qword [rsp + 0x20], rcx
xor r9d, r9d
mov r8d, r11d
mov rdx, r10
mov rcx, qword [rbp + 0xa0]
call qword [sym.imp.bcrypt.dll_BCryptDecrypt]
mov ebx, eax
mov rcx, qword [rbp + 0xa0]
call qword [sym.imp.bcrypt.dll_BCryptDestroyKey]
xor edx, edx
mov rcx, qword [rbp + 0x90]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
test ebx, ebx
jns 0x14000d4c0
mov qword [rdi], r14
mov qword [rdi + 8], r13
mov qword [rdi + 0x10], r13
mov qword [rdi], rsi
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x20], r13
mov qword [rdi + 0x30], r15
mov dword [rsp + 0x50], 1
mov qword [rbp - 0x70], rsi
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x14000d458
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + 0x18]
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x70], r14
mov qword [rsp + 0x58], rsi
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000d484
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x58], r14
mov qword [rbp - 0x38], rsi
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000d4af
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x10], r13
mov qword [rbp - 0x18], r13
jmp 0x14000d61a
mov r12d, dword [rbp + 0x78]
cmp r12, qword [rbp - 0x48]
je 0x14000d569
test r12, r12
jne 0x14000d4f5
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x14000d4e7
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + 0x18]
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
jmp 0x14000d569
mov rcx, qword [rbp - 0x58]
mov rbx, qword [rbp - 0x40]
test rcx, rcx
jne 0x14000d526
test rbx, rbx
cmovle rbx, r15
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov rdx, rbx
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax]
jmp 0x14000d55d
test rbx, rbx
cmovle rbx, r15
mov rax, qword [rbp - 0x50]
cmp rax, r12
jl 0x14000d53e
sub rax, r12
cmp rax, rbx
jle 0x14000d565
mov rax, r12
cqo
idiv rbx
sub rbx, rdx
add rbx, r12
mov r8, rbx
mov rdx, rcx
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rbp - 0x50], rbx
mov qword [rbp - 0x58], rax
mov qword [rbp - 0x48], r12
mov qword [rdi], r14
mov qword [rdi + 8], r13
mov qword [rdi + 0x10], r13
mov qword [rdi], rsi
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x28], r13
mov qword [rdi + 0x20], r13
mov qword [rdi + 0x30], r15
mov qword [rdi], rsi
lea rdx, [rbp - 0x70]
mov rcx, rdi
call fcn.140005660
nop
mov dword [rsp + 0x50], 1
mov qword [rbp - 0x70], rsi
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x14000d5b7
lea rcx, [rbp - 0x70]
mov rax, qword [rbp - 0x70]
call qword [rax + 0x18]
mov qword [rbp - 0x58], r13
mov qword [rbp - 0x48], r13
mov qword [rbp - 0x50], r13
mov qword [rbp - 0x70], r14
mov qword [rsp + 0x58], rsi
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x14000d5e3
lea rcx, [rsp + 0x58]
mov rax, qword [rsp + 0x58]
call qword [rax + 0x18]
mov qword [rsp + 0x70], r13
mov qword [rbp - 0x80], r13
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x58], r14
mov qword [rbp - 0x38], rsi
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14000d60e
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x38]
call qword [rax + 0x18]
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x10], r13
mov qword [rbp - 0x18], r13
mov qword [rbp - 0x38], r14
mov rax, rdi
add rsp, 0x128
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret