Function at 0x180021c90
Capabilities:
Move file

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x770]
sub rsp, 0x870
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rsp + 0x8c0], rbx
mov rax, qword [0x1800d1eb0]
xor rax, rsp
mov qword [rbp + 0x760], rax
mov qword [rsp + 0x58], rdx
mov rsi, rcx
mov r13d, 1
mov qword [rbp - 0x58], 7
xor r15d, r15d
mov qword [rbp - 0x60], r15
mov word [rbp - 0x70], r15w
xor eax, eax
or r12, 0xffffffffffffffff
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rbp - 0x70]
call fcn.180004cc0
nop
lea r8d, [r13 + 3]
lea rdx, str..tmp
lea rcx, [rbp - 0x70]
call fcn.180006db0
lea rcx, [rbp - 0x70]
cmp qword [rbp - 0x58], 8
cmovae rcx, qword [rbp - 0x70]
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x28], 0x80
mov eax, 2
mov dword [rsp + 0x20], eax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x40000000
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r14, rax
cmp rax, r12
jne 0x180021d77
cmp qword [rbp - 0x58], 8
jb 0x180021d70
mov rcx, qword [rbp - 0x70]
call fcn.18007a7a4
xor al, al
jmp 0x180022817
lea rcx, [rsp + 0x68]
call fcn.1800112e0
mov rdx, rax
mov r9, qword [rax + 0x10]
cmp r9, r9
cmp qword [rax + 0x18], 8
jb 0x180021d95
mov rdx, qword [rax]
mov ebx, 0x18
mov r8d, ebx
cmp r9, rbx
cmovb r8, r9
lea rdi, str.681E_B0L3_UC27_I7QZ_H6PP
mov rcx, rdi
test r8, r8
je 0x180021dd6
movzx eax, word [rcx]
cmp word [rdx], ax
jne 0x180021dca
add rdx, 2
add rcx, 2
dec r8
jne 0x180021db3
jmp 0x180021dd6
mov r8d, r13d
cmp word [rdx], ax
cmovb r8d, r12d
jmp 0x180021dd9
mov r8d, r15d
movsxd rax, r8d
test r8d, r8d
jne 0x180021df4
cmp r9, rbx
jae 0x180021deb
mov eax, r12d
jmp 0x180021df4
mov eax, r15d
cmp r9, rbx
setne al
test eax, eax
sete r13b
cmp qword [rbp - 0x80], 8
jb 0x180021e0b
mov rcx, qword [rsp + 0x68]
call fcn.18007a7a4
mov r12d, 1
test r13b, r13b
mov eax, 2
cmovne r12d, eax
mov r9d, r12d
lea r8, str._encry_mode__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
xor r9d, r9d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
lea rcx, [rsp + 0x68]
call fcn.1800112e0
mov rdx, rax
mov r8, qword [rax + 0x10]
cmp r8, r8
cmp qword [rax + 0x18], 8
jb 0x180021e6b
mov rdx, qword [rax]
cmp r8, 0x18
cmovb rbx, r8
test rbx, rbx
je 0x180021ea5
movzx eax, word [rdi]
cmp word [rdx], ax
jne 0x180021e8f
add rdx, 2
add rdi, 2
dec rbx
jne 0x180021e78
jmp 0x180021ea5
mov ebx, 1
mov ecx, ebx
cmp word [rdx], ax
mov rdx, 0xffffffffffffffff
cmovb ecx, edx
jmp 0x180021eaf
mov ecx, r15d
or rdx, 0xffffffffffffffff
lea ebx, [rdx + 2]
movsxd rax, ecx
test ecx, ecx
jne 0x180021eca
cmp r8, 0x18
jae 0x180021ec0
mov eax, edx
jmp 0x180021eca
mov eax, r15d
cmp r8, 0x18
setne al
test eax, eax
sete dil
cmp qword [rbp - 0x80], 8
jb 0x180021ee1
mov rcx, qword [rsp + 0x68]
call fcn.18007a7a4
test dil, dil
cmovne r12d, ebx
mov rcx, qword [rsi + 0x98]
sub rcx, qword [rsi + 0x90]
movabs rax, 0x7878787878787879
imul rcx
mov rdi, rdx
sar rdi, 6
mov rax, rdi
shr rax, 0x3f
add rdi, rax
mov r9d, dword [rsi + 0x1fc]
lea r8, str._bind_num__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, edi
lea r8, str._hardware_count__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r13d, r15d
movsxd r15, edi
test edi, edi
jle 0x18002208e
xor edi, edi
mov ebx, edi
nop word [rax + rax]
mov rax, qword [rsi + 0x90]
mov r9d, dword [rbx + rax]
lea r8, str._hardware_type__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov qword [rbp - 0x30], send
mov qword [rbp - 0x38], rdi
mov byte [rbp - 0x48], 0
movsxd rdx, r13d
imul rdx, rdx, 0x88
add rdx, qword [rsi + 0x90]
add rdx, 4
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], rdi
mov word [rsp + 0x68], di
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0x68]
call fcn.180004cc0
lea rdx, [rbp - 0x48]
lea rcx, [rsp + 0x68]
call fcn.180028a40
lea r9, [rbp - 0x48]
cmp qword [rbp - 0x30], 0x10
cmovae r9, qword [rbp - 0x48]
lea r8, str._hardware_No__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
nop
cmp qword [rbp - 0x30], 0x10
jb 0x180022076
mov rcx, qword [rbp - 0x48]
call fcn.18007a7a4
inc r13d
add rbx, 0x88
dec r15
mov edi, 0
jne 0x180021f90
mov rcx, qword [rsi + 0xb8]
sub rcx, qword [rsi + 0xb0]
movabs rax, 0xaa392f35dc17f00b
imul rcx
lea rdi, [rcx + rdx]
sar rdi, 0xb
mov rax, rdi
shr rax, 0x3f
add rdi, rax
mov qword [rsp + 0x40], rdi
mov r9d, edi
lea r8, str._key_count__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
movsxd r13, edi
mov qword [rsp + 0x48], r13
test edi, edi
jle 0x1800221a7
xor ebx, ebx
mov r15, r13
nop word [rax + rax]
mov rcx, qword [rsi + 0xb0]
mov eax, dword [rbx + rcx + 0x404]
mov dword [rsp + 0x20], eax
mov r9d, dword [rbx + rcx]
lea r8, str._unit_key__t_t_t_d_t_t_t_d_t_t_t
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
movsxd r11, eax
mov rcx, qword [rsi + 0xb0]
lea r8, [rbx + rcx + 4]
xor edx, edx
movsxd rdi, dword [rbx + rcx + 0x404]
test rdi, rdi
jle 0x180022182
lea rcx, [rbp + r11 + 0xd0]
add r11d, edi
nop word [rax + rax]
movzx eax, byte [r8 + rdx]
mov byte [rcx], al
inc rcx
inc rdx
cmp rdx, rdi
jl 0x180022170
mov r9d, r12d
mov r8d, r11d
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
add rbx, 0xc08
dec r15
jne 0x180022110
lea rcx, [rsp + 0x50]
call fcn.18007bf60
lea rcx, [rsp + 0x50]
call fcn.18007bf18
mov r9, rax
lea r8, str._Y__m__d__H:_M:_S
mov edx, 0x80
lea rcx, [rbp + 0x2e0]
call fcn.18007d5e0
lea r9, [rbp + 0x2e0]
lea r8, str._file_create_time__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsi + 0x104]
lea r8, str._main_key_id__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov qword [rbp - 8], send
xor ebx, ebx
mov qword [rbp - 0x10], rbx
mov byte [rbp - 0x20], bl
lea rdx, [rsi + 0x198]
mov qword [rbp + 0x70], 7
mov qword [rbp + 0x68], rbx
mov word [rbp + 0x58], bx
xor eax, eax
or r15, 0xffffffffffffffff
mov rcx, r15
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rbp + 0x58]
call fcn.180004cc0
nop
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], rbx
mov word [rsp + 0x68], bx
mov r9, r15
xor r8d, r8d
lea rdx, [rbp + 0x58]
lea rcx, [rsp + 0x68]
call fcn.1800049e0
lea rdx, [rbp - 0x20]
lea rcx, [rsp + 0x68]
call fcn.180028a40
lea r9, [rbp - 0x20]
cmp qword [rbp - 8], 0x10
cmovae r9, qword [rbp - 0x20]
lea r8, str._start_time__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov qword [rbp + 0x20], send
mov qword [rbp + 0x18], rbx
mov byte [rbp + 8], bl
lea rdx, [rsi + 0x1ca]
mov qword [rbp + 0x48], 7
mov qword [rbp + 0x40], rbx
mov word [rbp + 0x30], bx
xor eax, eax
mov rcx, r15
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rbp + 0x30]
call fcn.180004cc0
nop
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], rbx
mov word [rsp + 0x68], bx
mov r9, r15
xor r8d, r8d
lea rdx, [rbp + 0x30]
lea rcx, [rsp + 0x68]
call fcn.1800049e0
lea rdx, [rbp + 8]
lea rcx, [rsp + 0x68]
call fcn.180028a40
lea r9, [rbp + 8]
cmp qword [rbp + 0x20], 0x10
cmovae r9, qword [rbp + 8]
lea r8, str._end_time__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsp + 0x40]
lea r8, str._keydesc_count__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov eax, ebx
mov dword [rsp + 0x40], ebx
test r13, r13
jle 0x180022517
mov r15d, ebx
nop word [rax + rax]
movsxd rbx, eax
imul rbx, rbx, 0xc08
mov rdx, qword [rsi + 0xb0]
lea rdi, [rdx + rbx + 0x408]
xor eax, eax
or rcx, 0xffffffffffffffff
repne scasw ax, word [rdi]
not rcx
lea r13, [rcx - 1]
add r13d, r13d
mov dword [rsp + 0x20], r13d
mov r9d, dword [rdx + r15]
lea r8, str._unit_keydesc__t_t_t_d_t_t_t_d_t_t_t
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
movsxd rdi, eax
mov byte [rbp + 0x360], 0
xor edx, edx
mov r8d, 0x3ff
lea rcx, [rbp + 0x361]
call fcn.18007e840
mov rdx, qword [rsi + 0xb0]
lea rbx, [rbx + rdx + 0x408]
xor eax, eax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rax
or r9d, 0xffffffff
mov r8, rbx
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
je 0x1800224bf
xor ecx, ecx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], eax
lea rax, [rbp + 0x360]
mov qword [rsp + 0x20], rax
or r9d, 0xffffffff
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
movsxd rbx, r13d
test r13d, r13d
jle 0x1800224e0
lea rcx, [rbp + rdi + 0xd0]
mov r8, rbx
lea rdx, [rbp + 0x360]
call fcn.18007abc0
add edi, ebx
mov r9d, r12d
mov r8d, edi
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov eax, dword [rsp + 0x40]
inc eax
mov dword [rsp + 0x40], eax
add r15, 0xc08
dec qword [rsp + 0x48]
jne 0x1800223f0
xor ebx, ebx
or r15, 0xffffffffffffffff
lea rdx, [rsi + 0x108]
mov qword [rbp - 0x80], 7
mov qword [rsp + 0x78], rbx
mov word [rsp + 0x68], bx
xor eax, eax
mov rcx, r15
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0x68]
call fcn.180004cc0
lea rdx, [rsp + 0x68]
lea rcx, [rbp + 0xa8]
call fcn.180028cb0
nop
lea r9, [rbp + 0xa8]
cmp qword [rbp + 0xc0], 0x10
cmovae r9, qword [rbp + 0xa8]
lea r8, str._producr_key__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsi + 0x16c]
lea r8, str._version_type__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
lea rdx, [rsi + 0x170]
mov qword [rbp - 0x30], 7
mov qword [rbp - 0x38], rbx
mov word [rbp - 0x48], bx
xor eax, eax
mov rcx, r15
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rbp - 0x48]
call fcn.180004cc0
lea rdx, [rbp - 0x48]
lea rcx, [rbp + 0x80]
call fcn.180028cb0
nop
lea r9, [rbp + 0x80]
cmp qword [rbp + 0x98], 0x10
cmovae r9, qword [rbp + 0x80]
lea r8, str._verification_code__t_t_t_s
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsi]
lea r8, str._ver_num__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsi + 0x208]
lea r8, str._text_copy__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov r9d, dword [rsi + 0x20c]
lea r8, str._print_control__t_t_t_d
mov edx, 0x201
lea rcx, [rbp + 0xd0]
call fcn.18007b760
mov r9d, r12d
mov r8d, eax
lea rdx, [rbp + 0xd0]
mov rcx, r14
call fcn.180020300
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FlushFileBuffers]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rcx, [rbp - 0x70]
cmp qword [rbp - 0x58], 8
cmovae rcx, qword [rbp - 0x70]
mov r8d, 1
mov rdx, qword [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
nop
cmp qword [rbp + 0x98], 0x10
jb 0x18002273d
mov rcx, qword [rbp + 0x80]
call fcn.18007a7a4
mov qword [rbp + 0x98], send
mov qword [rbp + 0x90], rbx
mov byte [rbp + 0x80], 0
cmp qword [rbp + 0xc0], 0x10
jb 0x18002276c
mov rcx, qword [rbp + 0xa8]
call fcn.18007a7a4
mov qword [rbp + 0xc0], send
mov qword [rbp + 0xb8], rbx
mov byte [rbp + 0xa8], 0
cmp qword [rbp + 0x48], 8
jb 0x180022795
mov rcx, qword [rbp + 0x30]
call fcn.18007a7a4
mov qword [rbp + 0x48], 7
mov qword [rbp + 0x40], rbx
mov word [rbp + 0x30], bx
cmp qword [rbp + 0x20], 0x10
jb 0x1800227b5
mov rcx, qword [rbp + 8]
call fcn.18007a7a4
mov qword [rbp + 0x20], send
mov qword [rbp + 0x18], rbx
mov byte [rbp + 8], 0
cmp qword [rbp + 0x70], 8
jb 0x1800227d5
mov rcx, qword [rbp + 0x58]
call fcn.18007a7a4
mov qword [rbp + 0x70], 7
mov qword [rbp + 0x68], rbx
mov word [rbp + 0x58], bx
cmp qword [rbp - 8], 0x10
jb 0x1800227f5
mov rcx, qword [rbp - 0x20]
call fcn.18007a7a4
mov qword [rbp - 8], send
mov qword [rbp - 0x10], rbx
mov byte [rbp - 0x20], 0
cmp qword [rbp - 0x58], 8
jb 0x180022815
mov rcx, qword [rbp - 0x70]
call fcn.18007a7a4
mov al, 1
mov rcx, qword [rbp + 0x760]
xor rcx, rsp
call fcn.18007a7c0
mov rbx, qword [rsp + 0x8c0]
add rsp, 0x870
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret