Function at 0x14001c36c
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 7]
sub rsp, 0x98
mov rax, qword [0x140096008]
xor rax, rsp
mov qword [rbp - 0x11], rax
xor r15d, r15d
mov ebx, r9d
mov qword [rbp - 0x39], r15
mov rdi, r8
mov rsi, rdx
mov r14, rcx
xor r12d, r12d
call qword [sym.imp.GDI32.dll_SaveDC]
lea ecx, [r12 + 5]
call qword [sym.imp.GDI32.dll_GetStockObject]
mov rdx, rax
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov r8d, dword [rdi + 4]
lea rcx, [rbp - 0x21]
mov eax, dword [rdi + 0xc]
add r8d, ebx
mov r9d, dword [rdi + 8]
mov edx, dword [rdi]
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_SetRect]
mov ecx, dword [rbp + 0x6f]
xor ebx, ebx
test ecx, ecx
je 0x14001c3f2
add ecx, dword [rdi + 4]
jmp 0x14001c3f5
mov ecx, dword [rbp - 0x15]
mov eax, dword [rsi + 0x84]
add dword [rbp - 0x1d], eax
mov edx, dword [rbp - 0x19]
sub edx, dword [rsi + 0x88]
sub ecx, dword [rsi + 0x8c]
mov eax, dword [rsi + 0x80]
add dword [rbp - 0x21], eax
test dword [rsi + 0x2c], 0x1000
mov dword [rbp - 0x19], edx
mov dword [rbp - 0x15], ecx
je 0x14001c437
test byte [rsi + 0xf4], 0x10
jne 0x14001c437
add ecx, dword [rsi + 0x100]
mov dword [rbp - 0x15], ecx
mov r13d, dword [rbp + 0x7f]
mov edi, 1
test r13d, r13d
jne 0x14001c4c9
movaps xmm0, xmmword [rbp - 0x21]
mov eax, dword [rsi + 0x130]
movdqa xmmword [rbp - 0x31], xmm0
test eax, eax
jle 0x14001c495
cmp eax, 3
jle 0x14001c475
cmp eax, 4
jne 0x14001c495
cmp dword [rsi + 0x70], edi
jne 0x14001c4ae
cmp dword [rsi + 0x13c], ebx
je 0x14001c488
jmp 0x14001c482
cmp dword [rsi + 0x70], edi
jne 0x14001c4ae
cmp dword [rsi + 0x13c], ebx
jle 0x14001c488
lea eax, [rdx - 1]
mov dword [rbp - 0x29], eax
cmp dword [rsi + 0x140], ebx
jle 0x14001c4ae
sub dword [rbp - 0x25], edi
jmp 0x14001c4ae
mov eax, dword [rsi + 0x70]
lea rcx, [rbp - 0x31]
cdq
sub eax, edx
sar eax, 1
neg eax
mov r8d, eax
mov edx, eax
call qword [sym.imp.USER32.dll_InflateRect]
mov eax, dword [rbp - 0x25]
mov rcx, r14
mov r9d, dword [rbp - 0x29]
mov r8d, dword [rbp - 0x2d]
mov edx, dword [rbp - 0x31]
mov dword [rsp + 0x20], eax
call qword [sym.imp.GDI32.dll_ExcludeClipRect]
mov eax, dword [rsi + 0x130]
cmp eax, edi
je 0x14001c889
cmp eax, 2
je 0x14001c7c6
cmp eax, 3
je 0x14001c6de
cmp eax, 4
je 0x14001c59e
jle 0x14001c696
cmp eax, 8
jle 0x14001c593
cmp eax, 9
jne 0x14001c696
movaps xmm0, xmmword [rbp - 0x21]
mov edx, edi
mov ecx, dword [rsi + 0x134]
movdqa xmmword [rbp - 0x31], xmm0
call fcn.14007d928
mov edx, dword [rsi + 0x70]
mov r8d, eax
xor ecx, ecx
call fcn.14007da68
mov ecx, dword [rsi + 0x138]
xor edx, edx
mov r12, rax
call fcn.14007d928
mov edx, dword [rsi + 0x78]
mov r8d, eax
xor ecx, ecx
call fcn.14007da68
mov r8d, dword [rsi + 0x140]
lea rcx, [rbp - 0x31]
mov edx, dword [rsi + 0x13c]
mov r15, rax
call qword [sym.imp.USER32.dll_OffsetRect]
mov r9d, dword [rsi + 0x70]
lea r8, [rbp - 0x31]
mov dword [rsp + 0x40], edi
mov rdx, rsi
mov dword [rsp + 0x38], r13d
mov rcx, r14
mov dword [rsp + 0x30], ebx
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r12
call fcn.14001ba38
jmp 0x14001c696
mov dword [0x140096d7c], edi
jmp 0x14001c696
mov ecx, dword [rsi + 0x134]
mov edx, edi
call fcn.14007d928
mov edx, dword [rsi + 0x70]
mov r8d, eax
xor ecx, ecx
call fcn.14007da68
mov r8d, dword [rsi + 0x13c]
mov r12, rax
mov eax, dword [rsi + 0x140]
cdq
mov ecx, eax
mov eax, r8d
xor ecx, edx
sub ecx, edx
cdq
mov edi, eax
xor edi, edx
sub edi, edx
cmp edi, ecx
cmovle edi, ecx
test r8d, r8d
jle 0x14001c5eb
mov r13d, 1
jmp 0x14001c5f5
test r8d, r8d
mov r13, rbx
sets r13b
test edi, edi
jle 0x14001c693
mov edx, dword [rsi + 0x140]
mov r9d, r15d
mov r8d, edi
mov rcx, r14
call fcn.14007d9f4
mov edx, dword [rsi + 0x13c]
mov r9d, r15d
mov r8d, edi
mov rcx, r14
mov ebx, eax
call fcn.14007d9f4
movaps xmm0, xmmword [rbp - 0x21]
lea rcx, [rbp - 0x31]
mov r8d, ebx
movdqa xmmword [rbp - 0x31], xmm0
xor edx, edx
mov dword [rbp - 0x41], eax
call qword [sym.imp.USER32.dll_OffsetRect]
xor ebx, ebx
test r13, r13
je 0x14001c657
mov eax, dword [rbp - 0x41]
cdq
xor eax, edx
sub eax, edx
add dword [rbp - 0x29], eax
sub dword [rbp - 0x31], eax
mov eax, dword [rbp + 0x7f]
lea r8, [rbp - 0x31]
mov r9d, dword [rsi + 0x70]
mov rdx, rsi
mov dword [rsp + 0x40], 1
mov rcx, r14
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], ebx
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
call fcn.14001ba38
inc r15d
cmp r15d, edi
jl 0x14001c5fd
mov r15, rbx
or edx, 0xffffffff
mov rcx, r14
call qword [sym.imp.GDI32.dll_RestoreDC]
test r12, r12
je 0x14001c6b0
mov rcx, r12
call qword [sym.imp.GDI32.dll_DeleteObject]
test r15, r15
je 0x14001c6be
mov rcx, r15
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rbp - 0x11]
xor rcx, rsp
call fcn.14008a940
add rsp, 0x98
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ecx, dword [rsi + 0x134]
mov edx, edi
call fcn.14007d928
mov edx, dword [rsi + 0x70]
mov r8d, eax
xor ecx, ecx
call fcn.14007da68
mov r12, rax
mov dword [rbp - 0x41], ebx
mov eax, dword [rsi + 0x140]
cdq
mov ecx, eax
mov eax, dword [rsi + 0x13c]
xor ecx, edx
sub ecx, edx
cdq
mov r15d, eax
xor r15d, edx
sub r15d, edx
cmp r15d, ecx
cmovle r15d, ecx
test r15d, r15d
jle 0x14001c693
mov edx, dword [rsi + 0x140]
mov r9d, ebx
mov r8d, r15d
mov rcx, r14
call fcn.14007d9f4
mov edx, dword [rsi + 0x13c]
mov r9d, ebx
mov r8d, r15d
mov rcx, r14
mov edi, eax
call fcn.14007d9f4
movaps xmm0, xmmword [rbp - 0x21]
lea rcx, [rbp - 0x31]
mov r8d, edi
movdqa xmmword [rbp - 0x31], xmm0
xor edx, edx
mov ebx, eax
call qword [sym.imp.USER32.dll_OffsetRect]
mov r9d, dword [rsi + 0x70]
lea r8, [rbp - 0x31]
mov dword [rsp + 0x40], 1
mov eax, ebx
cdq
mov dword [rsp + 0x38], r13d
and dword [rsp + 0x30], 0
xor eax, edx
and qword [rsp + 0x28], 0
sub eax, edx
add dword [rbp - 0x31], eax
mov rdx, rsi
sub dword [rbp - 0x29], eax
mov rcx, r14
mov qword [rsp + 0x20], r12
call fcn.14001ba38
mov ebx, dword [rbp - 0x41]
inc ebx
mov dword [rbp - 0x41], ebx
cmp ebx, r15d
jl 0x14001c72b
mov r15, qword [rbp - 0x39]
jmp 0x14001c696
mov ecx, dword [rsi + 0x134]
mov edx, edi
call fcn.14007d928
mov edx, dword [rsi + 0x70]
mov r8d, eax
xor ecx, ecx
call fcn.14007da68
mov r12, rax
mov eax, dword [rsi + 0x140]
cdq
mov ecx, eax
mov eax, dword [rsi + 0x13c]
xor ecx, edx
sub ecx, edx
cdq
mov edi, eax
xor edi, edx
sub edi, edx
cmp edi, ecx
cmovle edi, ecx
test edi, edi
jle 0x14001c693
movaps xmm0, xmmword [rbp - 0x21]
mov r9d, r15d
mov edx, dword [rsi + 0x140]
mov r8d, edi
mov rcx, r14
movdqa xmmword [rbp - 0x31], xmm0
call fcn.14007d9f4
mov edx, dword [rsi + 0x13c]
mov r9d, r15d
mov r8d, edi
mov rcx, r14
mov ebx, eax
call fcn.14007d9f4
mov r8d, ebx
lea rcx, [rbp - 0x31]
mov edx, eax
call qword [sym.imp.USER32.dll_OffsetRect]
mov r9d, dword [rsi + 0x70]
lea r8, [rbp - 0x31]
mov dword [rsp + 0x40], 1
xor ebx, ebx
mov dword [rsp + 0x38], r13d
mov rdx, rsi
mov dword [rsp + 0x30], ebx
mov rcx, r14
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
call fcn.14001ba38
inc r15d
cmp r15d, edi
jl 0x14001c80a
jmp 0x14001c693
movaps xmm0, xmmword [rbp - 0x21]
mov r10d, dword [rsi + 0x13c]
mov ecx, dword [rsi + 0x70]
movdqa xmmword [rbp - 0x31], xmm0
test r10d, r10d
jle 0x14001c8b0
mov eax, ecx
mov r9d, ecx
cdq
sub eax, edx
sar eax, 1
sub r9d, eax
jmp 0x14001c8c3
jns 0x14001c8c0
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
neg eax
mov r9d, eax
jmp 0x14001c8c3
mov r9d, ebx
mov r8d, dword [rsi + 0x140]
test r8d, r8d
jle 0x14001c8da
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
jmp 0x14001c8eb
jns 0x14001c8e9
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
neg eax
mov ecx, eax
jmp 0x14001c8eb
mov ecx, ebx
add r8d, ecx
lea edx, [r10 + r9]
lea rcx, [rbp - 0x31]
call qword [sym.imp.USER32.dll_OffsetRect]
mov ecx, dword [rsi + 0x134]
mov edx, edi
call fcn.14007d928
cmp dword [0x1400970f4], ebx
mov ecx, eax
je 0x14001c92d
cmp dword [rbp + 0x77], ebx
jne 0x14001c92d
cmp dword [0x1400970f8], ebx
jne 0x14001c92d
mov edx, eax
mov rcx, r14
call qword [sym.imp.GDI32.dll_GetNearestColor]
mov ecx, eax
mov eax, dword [rsi + 0x70]
lea r9, [rbp - 0x31]
movsd xmm2, qword [rsi + 0x124]
mov edx, r13d
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], ecx
mov rcx, r14
call fcn.14001d940
jmp 0x14001c696