Function at 0x180003000
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
mov dword [rax + 0x10], edx
mov qword [rax + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rax - 0x48], 0xfffffffffffffffe
mov qword [rax + 0x20], rbx
mov r15, rcx
call fcn.180002c40
mov rcx, rax
test rax, rax
je 0x18000332e
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x80], rbx
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x200
or eax, ecx
jge 0x180003079
mov edx, 0x200
lea rcx, [rsp + 0x80]
call fcn.180004d30
mov rbx, qword [rsp + 0x80]
xor r9d, r9d
lea r8d, [r9 + 0x1a]
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.18000e100
test eax, eax
js 0x180003323
cmp eax, dword [rbx - 0xc]
jg 0x180003323
mov dword [rbx - 0x10], eax
cdqe
xor ecx, ecx
mov word [rbx + rax*2], cx
mov esi, dword [rbx - 0x10]
test esi, esi
jne 0x18000314b
call fcn.180002c40
mov rcx, rax
test rax, rax
je 0x180003339
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [r15], rax
lea rdx, [0x1800218c8]
mov rdi, 0xffffffffffffffff
cmp rdx, 0x10000
jae 0x180003100
movzx edx, dx
mov rcx, r15
call fcn.180004270
jmp 0x180003119
mov rax, rdi
inc rax
cmp word [rdx + rax*2], 0
jne 0x180003103
mov r8d, eax
mov rcx, r15
call fcn.1800056c0
nop
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x180003130
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, r15
mov rbx, qword [rsp + 0x88]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea eax, [rsi - 1]
test eax, eax
js 0x180003318
cmp eax, esi
jg 0x180003318
movsxd rax, esi
mov rdi, 0xffffffffffffffff
mov ebp, 0x7fffffff
cmp word [rbx + rax*2 - 2], 0x5c
je 0x18000322f
lea rbp, [0x1800218cc]
mov rax, rdi
inc rax
cmp word [rbp + rax*2], cx
jne 0x180003183
mov r12, rbp
sub r12, rbx
sar r12, 1
test eax, eax
js 0x180003344
movsxd rdx, eax
mov rcx, rbp
call fcn.18000e100
mov r13, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, esi
jl 0x18000334f
lea r14d, [rsi + rax]
test r14d, r14d
js 0x18000335a
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, r14d
or eax, ecx
jge 0x1800031f2
mov edx, r14d
lea rcx, [rsp + 0x80]
call fcn.180004d30
mov rbx, qword [rsp + 0x80]
cmp r12, rsi
ja 0x1800031fb
lea rbp, [rbx + r12*2]
movsxd rdx, r13d
add rdx, rdx
lea rcx, [rbx + rsi*2]
mov r9, rdx
mov r8, rbp
call fcn.180006110
cmp r14d, dword [rbx - 0xc]
jg 0x180003370
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
xor ecx, ecx
mov word [rbx + rax*2], cx
mov esi, dword [rbx - 0x10]
mov ebp, 0x7fffffff
lea r14, str.Coupon_
mov rax, rdi
nop dword [rax]
inc rax
cmp word [r14 + rax*2], 0
jne 0x180003240
mov r12, r14
sub r12, rbx
sar r12, 1
test eax, eax
js 0x180003365
movsxd rdx, eax
mov rcx, r14
call fcn.18000e100
mov r13, rax
sub ebp, eax
cmp ebp, esi
jl 0x18000337b
lea ebp, [rsi + rax]
test ebp, ebp
js 0x180003386
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, ebp
or eax, ecx
jge 0x1800032a7
mov edx, ebp
lea rcx, [rsp + 0x80]
call fcn.180004d30
mov rbx, qword [rsp + 0x80]
mov eax, esi
cmp r12, rax
ja 0x1800032b2
lea r14, [rbx + r12*2]
movsxd rdx, r13d
add rdx, rdx
lea rcx, [rbx + rax*2]
mov r9, rdx
mov r8, r14
call fcn.180006110
cmp ebp, dword [rbx - 0xc]
jg 0x180003391
mov dword [rbx - 0x10], ebp
movsxd rax, ebp
xor ecx, ecx
mov word [rbx + rax*2], cx
cmp dword [rsp + 0x78], ecx
je 0x1800032ea
mov rcx, rbx
call fcn.180001ae0
lea rcx, [rbx - 0x18]
call fcn.180001750
add rax, 0x18
mov qword [r15], rax
lock xadd dword [rbx - 8], edi
sub edi, 1
jg 0x180003130
mov rcx, qword [rbx - 0x18]
mov rax, qword [rcx]
lea rdx, [rbx - 0x18]
jmp 0x18000312d
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
nop
mov ecx, 0x80004005
call fcn.1800016f0
nop
mov ecx, 0x80004005
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3