Function at 0x1400aa188
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x88
mov r12d, dword [rcx + 8]
mov rdi, rcx
mov eax, edx
and eax, 1
mov ecx, edx
mov r15d, edx
and ecx, 2
mov ebx, edx
xor r13d, r13d
and r15d, 4
sar ebx, 0x10
cmp r12d, r13d
mov dword [rsp + 0x60], ecx
mov byte [rsp + 0xd0], 0xff
mov dword [rsp + 0xd8], eax
jg 0x1400aa1db
xor eax, eax
jmp 0x1400aa961
mov rsi, qword [rdi]
lea rcx, [rsp + 0x38]
mov edx, 0x28
mov qword [rsp + 0x58], rsi
call fcn.14004bedc
mov rax, qword [rdi]
movzx ecx, word [rax]
movsxd r14, dword [rdi + 8]
mov rbp, qword [rsp + 0x38]
xor cx, bx
add r14, rsi
mov sil, r13b
mov word [rbp], cx
mov rax, qword [rdi]
movzx ecx, word [rax + 2]
mov rax, qword [rsp + 0x38]
xor cx, bx
mov word [rax + 2], cx
mov rax, qword [rdi]
movzx ecx, word [rax + 4]
mov rax, qword [rsp + 0x38]
xor cx, bx
cmp r12d, 2
mov word [rax + 4], cx
jl 0x1400aa246
xor eax, eax
cmp byte [rbp], al
jne 0x1400aa246
cmp byte [rbp + 1], al
jne 0x1400aa261
mov rcx, qword [rsp + 0x38]
lea rdx, [0x1400dc16c]
mov r8d, 2
call fcn.140044f54
test eax, eax
jne 0x1400aa276
mov rcx, qword [rdi]
mov edx, r12d
call fcn.140049c9c
mov ecx, 1
mov sil, cl
jmp 0x1400aa27b
mov ecx, 1
xor eax, eax
cmp byte [rbp], al
je 0x1400aa28c
cmp byte [rbp + 1], al
movzx esi, sil
cmove esi, ecx
mov rcx, qword [rsp + 0x38]
lea rdx, [0x1400dc168]
mov r8d, 2
call fcn.140044f54
xor ecx, ecx
cmp eax, ecx
jne 0x1400aa2b0
mov sil, 1
lea r13d, [rcx + 2]
or dword [rsp + 0xe8], 0xffffffff
mov eax, r12d
mov dword [rsp + 0xe0], ecx
cdq
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x68], rcx
sub eax, edx
mov dword [rsp + 0x70], ecx
mov dword [rsp + 0x74], ecx
sar eax, 1
mov dword [rsp + 0x48], 0xff000000
mov dword [rsp + 0x50], eax
cmp sil, cl
jne 0x1400aa316
mov rcx, qword [rsp + 0x38]
mov r13d, 3
lea rdx, [0x1400dc170]
mov r8d, r13d
call fcn.140044f54
xor ecx, ecx
cmp eax, ecx
jne 0x1400aa377
mov eax, 0xfde9
mov dword [rsp + 0xe0], eax
sub r12d, r13d
mov eax, r12d
mov dword [rdi + 0xc], r12d
mov dword [rdi + 8], r12d
cdq
sub eax, edx
sar eax, 1
cmp r13d, ecx
mov r14d, eax
jle 0x1400aa347
mov rcx, qword [rdi]
lea eax, [r12 + 6]
movsxd rdx, r13d
add rdx, qword [rdi]
movsxd r8, eax
call fcn.1400177b0
mov rax, qword [rdi]
mov r13d, dword [rsp + 0xd8]
mov ebp, dword [rsp + 0xe0]
movsxd rcx, r12d
mov byte [rcx + rax], bl
mov rax, qword [rdi]
mov qword [rsp + 0x58], rax
xor eax, eax
cmp sil, al
jne 0x1400aa563
jmp 0x1400aa8ad
mov r13d, dword [rsp + 0xd8]
cmp r13d, ecx
je 0x1400aa527
cmp byte [rbp], 0x40
mov rsi, qword [rsp + 0x58]
mov rax, rbp
mov qword [rsp + 0x30], rsi
jne 0x1400aa39f
lea rax, [rbp + 1]
mov ecx, 0x3a
cmp byte [rax], cl
jne 0x1400aa3ca
cmp byte [rax + 1], cl
jne 0x1400aa3ca
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400a95ec
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400a9618
mov rsi, qword [rsp + 0x30]
mov al, byte [rsi]
xor al, bl
cmp al, 0x40
jne 0x1400aa3da
inc rsi
mov qword [rsp + 0x30], rsi
movsx eax, byte [rsi]
movzx ecx, bx
mov edx, 0x23
xor eax, ecx
cmp eax, edx
jne 0x1400aa418
movsx eax, byte [rsi + 1]
xor eax, ecx
cmp eax, 0x21
jne 0x1400aa418
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400a95ec
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400a9618
mov rsi, qword [rsp + 0x30]
mov edx, 0x23
mov al, byte [rsi]
mov r9d, 1
xor al, bl
cmp al, 0x40
jne 0x1400aa429
add rsi, r9
mov al, byte [rsi]
xor al, bl
cmp al, dl
jne 0x1400aa525
sub r14d, esi
mov eax, 0x20
cmp r14d, eax
cmovg r14d, eax
movsxd r8, r14d
test r14d, r14d
jle 0x1400aa464
mov rdx, rsi
mov rcx, rbp
sub rdx, rbp
mov al, byte [rdx + rcx]
xor al, bl
mov byte [rcx], al
add rcx, r9
sub r8, r9
jne 0x1400aa455
lea rdx, [0x1400d7470]
mov r8d, 6
mov rcx, rbp
call qword [sym.imp.SHLWAPI.dll_StrCmpNIA]
xor ecx, ecx
cmp eax, ecx
jne 0x1400aa527
mov al, bl
or r8d, 0xffffffff
lea rdx, [rbp + 6]
xor al, 0x2d
mov dword [rsp + 0xd8], r8d
lea rcx, [rsp + 0x50]
bts r13d, 9
mov byte [rsp + 0xd0], 1
mov byte [rsi + 1], al
call fcn.140058960
mov r11, qword [rsp + 0x50]
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x30], r11
call fcn.14004fc04
mov eax, dword [rsp + 0xd8]
mov ebp, dword [rsp + 0xe0]
mov rcx, qword [rsp + 0x30]
test eax, eax
mov dword [rsp + 0xe8], eax
cmovns ebp, eax
movzx eax, word [rcx]
mov edx, 0x74
or ax, 0x20
cmp dx, ax
jne 0x1400aa516
add rcx, 2
lea rdx, [rsp + 0x48]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x30]
call fcn.14004fc04
lea rcx, [rsp + 0x50]
call fcn.140044f24
jmp 0x1400aa8ad
xor ecx, ecx
mov eax, dword [rdi]
sub eax, dword [rsp + 0x58]
add r12d, eax
cmp r12d, 4
jl 0x1400aa800
cmp byte [rbp], cl
jne 0x1400aa7f2
cmp byte [rbp + 1], cl
je 0x1400aa800
mov rcx, qword [rdi]
mov edx, r12d
call fcn.140049c9c
mov ebp, dword [rsp + 0xe0]
mov r14d, dword [rsp + 0x50]
xor r12d, r12d
mov r15d, 0x3a
mov rcx, qword [rdi]
lea edx, [r14 + r14 + 0x14]
call fcn.14004baf4
movsxd r8, r14d
mov ecx, 7
mov qword [rdi], rax
lea rdx, [r8 + r8 + 0xe]
mov rax, qword [rdi]
dec rcx
mov word [rdx + rax], bx
sub rdx, 2
cmp rcx, r12
jge 0x1400aa589
cmp r13d, 0x10
mov rax, qword [rdi]
mov word [rax + r8*2 + 0x10], r12w
jge 0x1400aa76f
mov rdx, qword [rdi]
or dword [rsp + 0xd8], 0xffffffff
mov esi, 0x40
movzx eax, word [rdx]
mov qword [rsp + 0xe0], rdx
mov rcx, rdx
xor ax, bx
cmp si, ax
jne 0x1400aa5d9
lea rcx, [rdx + 2]
movzx eax, word [rcx]
xor ax, bx
cmp r15w, ax
jne 0x1400aa61a
movzx eax, word [rcx + 2]
xor ax, bx
cmp r15w, ax
jne 0x1400aa61a
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400a9640
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400a9674
mov rdx, qword [rsp + 0xe0]
movzx eax, word [rdx]
mov rcx, rdx
xor ax, bx
cmp si, ax
jne 0x1400aa62c
lea rcx, [rdx + 2]
movzx eax, word [rcx]
mov r8d, 0x23
xor ax, bx
cmp r8w, ax
jne 0x1400aa67c
movzx eax, word [rcx + 2]
lea ecx, [r8 - 2]
xor ax, bx
cmp cx, ax
jne 0x1400aa67c
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400a9640
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400a9674
mov rdx, qword [rsp + 0xe0]
mov r8d, 0x23
movzx eax, word [rdx]
xor ax, bx
cmp si, ax
jne 0x1400aa68b
add rdx, 2
movzx eax, word [rdx]
xor ax, bx
cmp r8w, ax
jne 0x1400aa76f
mov rsi, qword [rsp + 0x38]
mov rax, rdx
mov ecx, r14d
sub rax, qword [rdi]
mov r8, r12
sar rax, 1
sub ecx, eax
mov eax, 0x20
cmp ecx, eax
cmovg ecx, eax
movsxd r9, ecx
cmp r9, r12
jle 0x1400aa6d8
movzx eax, word [rdx + r8*2]
xor ax, bx
mov word [rsi + r8*2], ax
inc r8
cmp r8, r9
jl 0x1400aa6c3
mov word [rsi + r8*2], r12w
lea rdx, str.code
mov rcx, rsi
mov r8d, 6
call qword [sym.imp.SHLWAPI.dll_StrCmpNIW]
cmp eax, r12d
jne 0x1400aa76f
lea rax, [rsi + 0xc]
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0xe0]
mov qword [rsp + 0xe0], rax
call fcn.14004fc04
mov edx, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0xe0]
cmp edx, r12d
mov r8d, 0x74
movzx eax, word [rcx]
cmovge ebp, edx
mov dword [rsp + 0xe8], edx
or ax, 0x20
cmp r8w, ax
je 0x1400aa751
lea eax, [r8 - 0x4a]
cmp ax, word [rcx]
jne 0x1400aa776
add rcx, 2
lea rdx, [rsp + 0x48]
mov qword [rsp + 0xe0], rcx
lea rcx, [rsp + 0xe0]
call fcn.14004fc04
mov edx, dword [rsp + 0xe8]
cmp r13d, 0x1000
jge 0x1400aa8f7
mov eax, dword [rsp + 0x48]
cmp eax, r12d
jle 0x1400aa8f7
movzx ecx, word [0x1400fb004]
cmp eax, ecx
jne 0x1400aa8f7
cmp edx, ecx
je 0x1400aa8f7
mov rcx, qword [rdi]
cmp eax, 0x3b6
mov r8d, r12d
movzx r9d, bx
mov rdx, rdi
sete r8b
mov qword [rsp + 0xe0], rcx
mov qword [rdi], r12
call fcn.14005e9e4
mov rcx, qword [rdi]
movzx edx, bx
call fcn.14001554c
lea rcx, [rsp + 0xe0]
bts r13d, 0xc
mov r14d, eax
call fcn.140044f24
jmp 0x1400aa56c
cmp byte [rbp + 1], cl
jne 0x1400aa800
cmp byte [rbp + 2], cl
jne 0x1400aa557
mov rcx, qword [rsp + 0x40]
lea edx, [r12 + r12*2]
lea edx, [rdx + rdx + 8]
call fcn.14004baf4
mov rdx, qword [rdi]
movzx esi, bx
mov ecx, esi
lea ebp, [r12 + r12*2]
mov r8d, r12d
bts ecx, 0x18
mov r9, rax
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x28], ecx
xor ecx, ecx
mov dword [rsp + 0x20], ebp
call fcn.1400a9ddc
mov r14d, eax
test eax, eax
jg 0x1400aa87a
mov r9, qword [rsp + 0x40]
mov rdx, qword [rdi]
neg r15d
sbb eax, eax
mov r8d, r12d
mov ecx, 0xfde9
and eax, 0x40000
or eax, esi
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], ebp
call fcn.1400a9ddc
mov r14d, eax
test eax, eax
jle 0x1400aa8a6
mov ebp, 0xfde9
jmp 0x1400aa881
mov ebp, dword [rsp + 0xe0]
mov rax, qword [rsp + 0x40]
movsxd rcx, r14d
xor r12d, r12d
mov word [rax + rcx*2], r12w
mov rcx, qword [rdi]
mov rax, qword [rsp + 0x40]
mov qword [rdi], rax
mov qword [rsp + 0x40], rcx
jmp 0x1400aa566
mov ebp, dword [rsp + 0xe0]
mov rcx, qword [rsp + 0x68]
mov rax, qword [rdi]
lea edx, [r12 + r12*2]
lea edx, [rdx + rdx + 8]
mov qword [rsp + 0x68], rax
mov qword [rdi], rcx
call fcn.14004baf4
mov rdx, qword [rsp + 0x58]
lea r8d, [r12 + r12]
movzx ecx, bx
mov r9, rax
mov qword [rdi], rax
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r8d
mov r8d, r12d
mov ecx, ebp
call fcn.1400a9ddc
mov r14d, eax
jmp 0x1400aa563
mov al, byte [rsp + 0xd0]
cmp al, r12b
jl 0x1400aa912
movsx rcx, al
mov rax, qword [rdi]
xor bx, 0x63
mov word [rax + rcx*2], bx
lea eax, [r14 + r14]
mov dword [rdi + 8], eax
mov dword [rdi + 0xc], eax
cmp dword [rsp + 0x60], r12d
je 0x1400aa941
mov rcx, qword [rsp + 0x38]
call fcn.140044ed8
mov rcx, qword [rsp + 0x40]
call fcn.140044ed8
mov rcx, qword [rsp + 0x68]
call fcn.140044ed8
lea rcx, [rsp + 0x68]
call fcn.140044f24
lea rcx, [rsp + 0x40]
call fcn.140044f24
lea rcx, [rsp + 0x38]
call fcn.140044f24
mov eax, ebp
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret