Function at 0x140090170
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x110]
sub rsp, 0x210
mov rax, qword [0x140d5c040]
xor rax, rsp
mov qword [rbp + 0x108], rax
mov rdi, qword [rbp + 0x178]
mov r14, r9
mov rsi, qword [rbp + 0x170]
mov r12, r8
mov r15, rdx
mov r13, rcx
test rcx, rcx
je 0x140090a0a
test rdx, rdx
je 0x140090a0a
cmp rdx, 0x10
jb 0x140090a0a
test r15b, 0xf
jne 0x140090a0a
xor eax, eax
xorps xmm0, xmm0
mov qword [rbp + 0x40], rax
movups xmmword [rbp + 0xe0], xmm0
movups xmmword [rbp + 0x30], xmm0
test r9, r9
je 0x1400901f8
mov qword [r9], rax
mov eax, 0x21
lea rcx, [rbp + 0xe0]
cmp rdi, rax
mov r8, rdi
mov rdx, rsi
cmova r8, rax
call sub.VCRUNTIME140.dll_memcpy
xorps xmm0, xmm0
lea rax, [rbp + 0x60]
xor edx, edx
movups xmmword [rbp + 0x60], xmm0
xor r8d, r8d
movups xmmword [rbp + 0x70], xmm0
movups xmmword [rbp + 0x80], xmm0
movups xmmword [rbp + 0x90], xmm0
movups xmmword [rbp + 0xa0], xmm0
movups xmmword [rbp + 0xb0], xmm0
movups xmmword [rbp + 0xc0], xmm0
movups xmmword [rbp + 0xd0], xmm0
nop dword [rax]
nop dword [rax + rax]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
test r8d, r8d
jne 0x1400902c3
add dl, 5
mov byte [rax], dl
lea edx, [r9 + 1]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
xor dl, byte [rax]
mov byte [rax + 1], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 2]
test ecx, ecx
jne 0x1400902ed
add dl, 5
jmp 0x1400902f0
xor dl, byte [rax - 1]
mov byte [rax], dl
lea edx, [r9 + 1]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 1]
test ecx, ecx
jne 0x140090296
add dl, 5
jmp 0x140090298
xor dl, byte [rax + 1]
mov byte [rax + 2], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 3]
test ecx, ecx
jne 0x14009031b
add dl, 5
jmp 0x14009031e
xor dl, byte [rax + 2]
mov byte [rax + 3], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 4]
test ecx, ecx
jne 0x140090349
add dl, 5
jmp 0x14009034c
xor dl, byte [rax + 3]
mov byte [rax + 4], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 5]
test ecx, ecx
jne 0x140090377
add dl, 5
jmp 0x14009037a
xor dl, byte [rax + 4]
mov byte [rax + 5], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 6]
test ecx, ecx
jne 0x1400903a5
add dl, 5
jmp 0x1400903a8
xor dl, byte [rax + 5]
mov byte [rax + 6], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 7]
test ecx, ecx
jne 0x1400903d3
add dl, 5
jmp 0x1400903d6
xor dl, byte [rax + 6]
mov byte [rax + 7], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 8]
test ecx, ecx
jne 0x140090401
add dl, 5
jmp 0x140090404
xor dl, byte [rax + 7]
mov byte [rax + 8], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 9]
test ecx, ecx
jne 0x14009042f
add dl, 5
jmp 0x140090432
xor dl, byte [rax + 8]
mov byte [rax + 9], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xa]
test ecx, ecx
jne 0x14009045d
add dl, 5
jmp 0x140090460
xor dl, byte [rax + 9]
mov byte [rax + 0xa], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xb]
test ecx, ecx
jne 0x14009048b
add dl, 5
jmp 0x14009048e
xor dl, byte [rax + 0xa]
mov byte [rax + 0xb], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xc]
test ecx, ecx
jne 0x1400904b9
add dl, 5
jmp 0x1400904bc
xor dl, byte [rax + 0xb]
mov byte [rax + 0xc], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xd]
test ecx, ecx
jne 0x1400904e7
add dl, 5
jmp 0x1400904ea
xor dl, byte [rax + 0xc]
mov byte [rax + 0xd], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xe]
test ecx, ecx
jne 0x140090515
add dl, 5
jmp 0x140090518
xor dl, byte [rax + 0xd]
mov byte [rax + 0xe], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xf]
test ecx, ecx
jne 0x140090543
add dl, 5
jmp 0x140090546
xor dl, byte [rax + 0xe]
mov byte [rax + 0xf], dl
add r8d, 0x10
add rax, 0x10
lea edx, [r9 + 1]
cmp r8d, 0x80
jb 0x140090260
movzx ecx, byte [rbp + 0xe1]
lea rax, [rbp + 0x60]
shr rcx, 3
lea rdx, [rbp + 0x60]
add rax, rcx
cmp rcx, 0x10
lea rcx, [rbp + 0x48]
cmovae rdx, rax
lea rax, [rdx + 0xf]
cmp rcx, rax
ja 0x14009059f
lea rax, [rbp + 0x57]
cmp rax, rdx
jb 0x14009059f
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
jmp 0x1400905a6
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
xor edx, edx
lea rcx, [rsp + 0x20]
mov r8d, 0x110
call sub.VCRUNTIME140.dll_memset
lea rax, [rbp + 0x60]
mov dword [rsp + 0x24], 0xc0
mov qword [rsp + 0x30], rax
lea rcx, [rsp + 0x20]
lea rax, [rbp + 0x48]
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x38], rax
call fcn.140092510
mov r9d, reloc.WS2_32.dll_recv
lea rdx, [rbp + 0x30]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.1400920f0
xor eax, eax
lea rdx, [0x1400b3e80]
xor r8d, r8d
xor r9d, r9d
nop word [rax + rax]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx]
mov byte [rbp + r9 + 0x60], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 1]
mov byte [rbp + r9 + 0x61], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 2]
mov byte [rbp + r9 + 0x62], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 3]
mov byte [rbp + r9 + 0x63], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 4]
mov byte [rbp + r9 + 0x64], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 5]
mov byte [rbp + r9 + 0x65], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 6]
mov byte [rbp + r9 + 0x66], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 7]
mov byte [rbp + r9 + 0x67], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 8]
mov byte [rbp + r9 + 0x68], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 9]
mov byte [rbp + r9 + 0x69], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xa]
mov byte [rbp + r9 + 0x6a], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xb]
mov byte [rbp + r9 + 0x6b], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xc]
mov byte [rbp + r9 + 0x6c], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xd]
mov byte [rbp + r9 + 0x6d], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xe]
mov byte [rbp + r9 + 0x6e], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xf]
mov byte [rbp + r9 + 0x6f], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x10]
mov byte [rbp + r9 + 0x70], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x11]
mov byte [rbp + r9 + 0x71], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x12]
mov byte [rbp + r9 + 0x72], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x13]
mov byte [rbp + r9 + 0x73], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x14]
mov byte [rbp + r9 + 0x74], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x15]
mov byte [rbp + r9 + 0x75], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x16]
mov byte [rbp + r9 + 0x76], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x17]
mov byte [rbp + r9 + 0x77], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x18]
mov byte [rbp + r9 + 0x78], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x19]
mov byte [rbp + r9 + 0x79], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1a]
mov byte [rbp + r9 + 0x7a], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1b]
mov byte [rbp + r9 + 0x7b], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1c]
mov byte [rbp + r9 + 0x7c], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1d]
mov byte [rbp + r9 + 0x7d], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
lea r9, [r9 + 0x20]
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx - 2]
mov byte [rbp + r9 + 0x5e], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
add r8d, 0x20
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx - 1]
mov byte [rbp + r9 + 0x5f], al
lea eax, [rcx + 1]
cmp r8d, 0x80
jb 0x140090610
lea rax, [rbp + 0x60]
mov qword [rsp + 0x24], 0x80
mov qword [rsp + 0x30], rax
lea rcx, [rsp + 0x20]
lea rax, [rbp + 0x48]
mov qword [rsp + 0x38], rax
call fcn.140092510
lea r9d, [r15 - 0x10]
mov rdx, r12
lea r8, [r13 + 0x10]
lea rcx, [rsp + 0x20]
call fcn.140092200
mov eax, eax
test r14, r14
je 0x140090a16
mov qword [r14], rax
jmp 0x140090a16
test r14, r14
je 0x140090a16
mov qword [r9], 0
mov rcx, qword [rbp + 0x108]
xor rcx, rsp
call fcn.140093920
add rsp, 0x210
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret