Function at 0x1800027c0
Capabilities:
Encode data using xor
Parse pe header

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x4b0
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0x468], rax
mov dword [rsp + 0x20], r8d
mov r15, rdx
mov rdi, rcx
test rcx, rcx
je 0x18000313f
mov r13, qword [rcx + 0x10]
lea r12, [rcx + 0x10]
test r13, r13
je 0x18000313f
test rdx, rdx
je 0x18000313f
xor r9d, r9d
mov edx, 0x5a4d
mov dword [rcx + 0x20], r9d
mov ecx, r9d
cmp dx, word [r15]
sete cl
jne 0x180002861
movsxd rdx, dword [r15 + 0x3c]
mov ecx, r9d
cmp dword [rdx + r15], 0x4550
sete cl
jne 0x180002861
mov eax, 0x8664
cmp ax, word [rdx + r15 + 4]
jne 0x180002865
mov eax, 0x20b
mov ecx, r9d
cmp ax, word [rdx + r15 + 0x18]
sete cl
test ecx, ecx
jne 0x180002871
mov dword [rdi + 0x20], 1
jmp 0x18000313f
movsxd rsi, dword [r15 + 0x3c]
mov ecx, r9d
mov r13, qword [r13 + 0x18]
add rsi, r15
mov edx, r9d
movzx r8d, word [rsi + 6]
mov r14d, r8d
test r8d, r8d
je 0x180002a37
cmp r8d, 8
jb 0x180002a37
cmp dword [0x18001c058], 2
jl 0x180002a37
movaps xmmword [rsp + 0x4a0], xmm6
mov eax, 0xfffffff8
movaps xmmword [rsp + 0x490], xmm7
mov edx, r14d
movaps xmmword [rsp + 0x480], xmm8
and rdx, rax
movaps xmmword [rsp + 0x470], xmm9
lea rax, [rsi + 0x164]
movdqa xmm9, xmmword [0x180018d50]
xorps xmm6, xmm6
xorps xmm8, xmm8
xorps xmm7, xmm7
movd xmm1, dword [rax + 0x28]
add ecx, 8
movd xmm0, dword [rax - 0x28]
add r9, 8
movd xmm2, dword [rax]
movd xmm4, dword [rax - 0x50]
movd xmm3, dword [rax - 0x4c]
lea rax, [rax + 0x140]
punpckldq xmm4, xmm0
movd xmm0, dword [rax - 0x164]
punpckldq xmm3, xmm0
movdqa xmm0, xmm6
punpckldq xmm2, xmm1
movd xmm1, dword [rax - 0x114]
punpcklqdq xmm4, xmm2
movd xmm2, dword [rax - 0x13c]
movdqa xmm5, xmm4
punpckldq xmm2, xmm1
pcmpeqd xmm5, xmm8
movd xmm1, dword [rax - 0x78]
andnps xmm5, xmm9
punpcklqdq xmm3, xmm2
movd xmm2, dword [rax - 0xa0]
paddd xmm3, xmm4
movd xmm4, dword [rax - 0xf0]
pmaxud xmm0, xmm3
movd xmm3, dword [rax - 0xec]
andps xmm0, xmm5
punpckldq xmm2, xmm1
andnps xmm5, xmm6
movd xmm1, dword [rax - 0x74]
movdqa xmm6, xmm0
movd xmm0, dword [rax - 0xc8]
orps xmm6, xmm5
punpckldq xmm4, xmm0
movd xmm0, dword [rax - 0xc4]
punpckldq xmm3, xmm0
movdqa xmm0, xmm7
punpcklqdq xmm4, xmm2
movd xmm2, dword [rax - 0x9c]
movdqa xmm5, xmm4
punpckldq xmm2, xmm1
pcmpeqd xmm5, xmm8
punpcklqdq xmm3, xmm2
andnps xmm5, xmm9
paddd xmm3, xmm4
pmaxud xmm0, xmm3
andps xmm0, xmm5
andnps xmm5, xmm7
movdqa xmm7, xmm0
orps xmm7, xmm5
cmp r9, rdx
jl 0x1800028f1
movaps xmm9, xmmword [rsp + 0x470]
pmaxud xmm6, xmm7
movaps xmm8, xmmword [rsp + 0x480]
movdqa xmm0, xmm6
movaps xmm7, xmmword [rsp + 0x490]
psrldq xmm0, 8
pmaxud xmm6, xmm0
movdqa xmm0, xmm6
psrldq xmm0, 4
pmaxud xmm6, xmm0
movd edx, xmm6
movaps xmm6, xmmword [rsp + 0x4a0]
movsxd rcx, ecx
mov r9, r8
mov qword [rsp + 0x30], r8
cmp rcx, r8
jge 0x180002a70
lea r8, [rcx + 7]
sub r9, rcx
lea r8, [r8 + r8*4]
lea r8, [rsi + r8*8]
mov ecx, dword [r8 - 4]
test ecx, ecx
je 0x180002a66
add ecx, dword [r8]
cmp edx, ecx
cmovb edx, ecx
add r8, 0x28
sub r9, 1
jne 0x180002a56
mov rcx, qword [rsi + 0x30]
mov r9d, 4
mov r8d, 0x3000
mov ebx, edx
call r13
mov qword [rsp + 0x28], rax
mov rbp, rax
test rax, rax
jne 0x180002ab6
mov r9d, 4
mov r8d, 0x3000
mov edx, ebx
xor ecx, ecx
call r13
mov qword [rsp + 0x28], rax
mov rbp, rax
test rax, rax
je 0x180003138
mov edx, dword [rsi + 0x54]
mov r9d, 4
mov r8d, 0x1000
mov rcx, rbp
call r13
mov rbx, rax
test rax, rax
je 0x180003138
mov ecx, dword [rsi + 0x54]
cmp r15, rax
jae 0x180002b06
lea rdx, [rcx - 1]
lea r8, [r15 - 1]
add rdx, rax
add r8, rcx
test ecx, ecx
je 0x180002b30
movzx eax, byte [r8]
lea r8, [r8 - 1]
mov byte [rdx], al
lea rdx, [rdx - 1]
add ecx, 0xffffffff
jne 0x180002af1
jmp 0x180002b30
jbe 0x180002b30
mov rdx, rbx
test ecx, ecx
je 0x180002b30
mov r8, r15
sub r8, rbx
nop word [rax + rax]
movzx eax, byte [r8 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
add ecx, 0xffffffff
jne 0x180002b20
mov qword [rdi], rbx
mov eax, dword [rsi + 0x50]
mov dword [rdi + 8], eax
mov dword [rdi + 0x1c], 1
movsxd rcx, dword [rbx + 0x3c]
add rcx, rbx
mov qword [rsp + 0x460], rcx
test r14d, r14d
je 0x180002bd8
xor r12d, r12d
lea rsi, [rcx + 0x118]
mov eax, dword [rsi - 4]
test eax, eax
je 0x180002bc6
lea r14, [rax + rbp]
mov eax, dword [rsi]
test eax, eax
jne 0x180002c40
mov ebp, dword [rsi - 8]
test ebp, ebp
jne 0x180002b89
mov ebp, dword [rcx + 0x38]
test ebp, ebp
je 0x180002cd5
mov edx, ebp
mov r9d, 4
mov r8d, 0x1000
mov rcx, r14
call r13
mov rbx, rax
test rax, rax
je 0x180003138
mov r8d, ebp
xor edx, edx
mov rcx, r14
call fcn.1800036dc
mov rbp, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x460]
mov dword [rsi - 8], ebx
inc r12
add rsi, 0x28
cmp r12, qword [rsp + 0x30]
jl 0x180002b62
lea r12, [rdi + 0x10]
mov rax, qword [rdi]
test rax, rax
je 0x180002c22
movsxd rcx, dword [rax + 0x3c]
mov r9, rax
sub r9, qword [rcx + rax + 0x30]
je 0x180002d86
mov edx, dword [rcx + rax + 0xb0]
test edx, edx
je 0x180002d86
cmp dword [rcx + rax + 0xb4], 0
je 0x180002d86
mov r8d, edx
add r8, rax
jne 0x180002cdf
mov dword [rdi + 0x20], 3
cmp qword [r12], 0
je 0x18000313f
cmp dword [rdi + 0x1c], 0
je 0x18000313f
cmp rax, 0
jmp 0x18000300c
mov rdx, rax
mov r9d, 4
mov r8d, 0x1000
mov rcx, r14
call r13
mov rbx, rax
test rax, rax
je 0x180003138
mov r8d, dword [rsi + 4]
mov ecx, dword [rsi]
add r8, r15
cmp r8, rax
jae 0x180002ca8
dec r8
lea rdx, [rcx - 1]
add rdx, rax
add r8, rcx
test ecx, ecx
je 0x180002bbb
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [r8]
lea r8, [r8 - 1]
mov byte [rdx], al
lea rdx, [rdx - 1]
add ecx, 0xffffffff
jne 0x180002c90
jmp 0x180002bbb
jbe 0x180002bbb
mov rdx, rax
test ecx, ecx
je 0x180002bbb
sub r8, rax
nop dword [rax]
movzx eax, byte [r8 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
add ecx, 0xffffffff
jne 0x180002cc0
jmp 0x180002bbb
mov rbp, qword [rsp + 0x28]
jmp 0x180002bc3
mov ecx, dword [r8]
mov r10d, dword [r8 + 4]
add ecx, r10d
je 0x180002d86
mov ebx, 0xa000
mov esi, 0x3000
mov r11d, 0xf000
nop
mov eax, r10d
xor edx, edx
sub rax, 8
shr rax, 1
movsxd r10, eax
test eax, eax
jle 0x180002d6f
nop dword [rax]
nop word [rax + rax]
movzx ecx, word [r8 + rdx*2 + 8]
movzx eax, cx
and ax, r11w
cmp si, ax
jne 0x180002d44
mov eax, dword [r8]
and ecx, 0xfff
add rcx, rax
add rcx, qword [rdi]
add dword [rcx], r9d
movzx eax, word [r8 + rdx*2 + 8]
movzx ecx, ax
and cx, r11w
cmp bx, cx
jne 0x180002d67
mov ecx, dword [r8]
and eax, 0xfff
add rax, rcx
add rax, qword [rdi]
add qword [rax], r9
inc rdx
cmp rdx, r10
jl 0x180002d20
mov eax, dword [r8 + 4]
add r8, rax
mov ecx, dword [r8]
mov r10d, dword [r8 + 4]
add ecx, r10d
jne 0x180002d00
mov r15, r12
mov r15, qword [r12]
test r15, r15
je 0x180002ff3
mov rax, qword [rdi]
test rax, rax
je 0x180002ff3
movsxd rcx, dword [rax + 0x3c]
mov r13, qword [r15 + 8]
mov r12, qword [r15 + 0x10]
mov r15, qword [r15]
mov edx, dword [rcx + rax + 0x90]
test edx, edx
je 0x180002e6c
cmp dword [rcx + rax + 0x94], 0
je 0x180002e6c
cmp dword [rax + rdx + 0xc], 0
lea r14, [rax + rdx]
je 0x180002e6c
nop dword [rax]
mov ebx, dword [r14 + 0xc]
add rbx, qword [rdi]
mov rcx, rbx
call r13
mov rbp, rax
test rax, rax
jne 0x180002e07
mov rcx, rbx
call r12
mov rbp, rax
test rax, rax
je 0x180002fe8
mov ecx, dword [r14]
mov rax, qword [rdi]
test ecx, ecx
je 0x180002e17
lea rbx, [rax + rcx]
jmp 0x180002e1e
mov ebx, dword [r14 + 0x10]
add rbx, rax
mov esi, dword [r14 + 0x10]
add rsi, rax
mov rax, qword [rbx]
test rax, rax
je 0x180002e5d
nop dword [rax]
mov rcx, rbp
test rax, rax
jns 0x180002e3d
movzx edx, word [rbx]
jmp 0x180002e47
mov rdx, qword [rdi]
add rdx, 2
add rdx, qword [rbx]
call r15
add rbx, 8
mov qword [rsi], rax
add rsi, 8
mov rax, qword [rbx]
test rax, rax
jne 0x180002e30
add r14, 0x14
cmp dword [r14 + 0xc], 0
jne 0x180002de0
mov r8d, dword [rdi + 8]
lea r10, [rsp + 0x60]
mov r11, qword [rdi]
xor esi, esi
mov r9d, esi
nop dword [rax]
mov ecx, r9d
lea r10, [r10 + 4]
shl ecx, 0x18
lea eax, [rcx + rcx]
mov edx, eax
xor edx, 0x4c10db7
test ecx, ecx
cmovns edx, eax
lea eax, [rdx + rdx]
mov ecx, eax
xor ecx, 0x4c10db7
test edx, edx
cmovns ecx, eax
lea eax, [rcx + rcx]
mov edx, eax
xor edx, 0x4c10db7
test ecx, ecx
cmovns edx, eax
lea eax, [rdx + rdx]
mov ecx, eax
xor ecx, 0x4c10db7
test edx, edx
cmovns ecx, eax
lea eax, [rcx + rcx]
mov edx, eax
xor edx, 0x4c10db7
test ecx, ecx
cmovns edx, eax
lea eax, [rdx + rdx]
mov ecx, eax
xor ecx, 0x4c10db7
test edx, edx
cmovns ecx, eax
lea eax, [rcx + rcx]
mov edx, eax
xor edx, 0x4c10db7
test ecx, ecx
cmovns edx, eax
lea ecx, [rdx + rdx]
mov eax, ecx
xor eax, 0x4c10db7
test edx, edx
cmovns eax, ecx
inc r9d
mov dword [r10 - 4], eax
cmp r9d, 0x100
jl 0x180002e80
mov edx, esi
mov r9, r11
test r8d, r8d
je 0x180002f4e
nop word [rax + rax]
movzx eax, byte [r9]
lea r9, [r9 + 1]
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
shl edx, 8
xor edx, dword [rsp + rcx*4 + 0x60]
add r8d, 0xffffffff
jne 0x180002f30
mov rax, qword [rdi + 0x10]
mov dword [rdi + 0xc], edx
test rax, rax
je 0x18000310e
mov r12, qword [rax + 0x28]
mov rbp, r11
mov r15, qword [rax + 0x20]
movabs rax, 0xffffffff00000000
movsxd rbx, dword [r11 + 0x3c]
and rbp, rax
movdqa xmm0, xmmword [0x180018d20]
add rbx, r11
movdqa xmm1, xmmword [0x180018d30]
movdqu xmmword [rsp + 0x38], xmm0
movzx eax, word [rbx + 6]
movdqu xmmword [rsp + 0x48], xmm1
cmp si, ax
jae 0x180003081
mov r14d, eax
add rbx, 0x118
mov r10d, dword [rbx - 8]
xor eax, eax
mov dword [rsp + 0x460], eax
or r10, rbp
mov eax, dword [rbx]
test eax, eax
je 0x18000306f
mov r9d, dword [rbx + 0x14]
mov edx, eax
bt r9d, 0x19
jae 0x180003023
mov r8d, 0x4000
mov rcx, r10
call r15
jmp 0x18000306f
mov dword [rdi + 0x20], 4
lea r12, [rdi + 0x10]
cmp qword [r12], 0
je 0x18000313f
cmp dword [rdi + 0x1c], 0
je 0x18000313f
cmp qword [rdi], 0
je 0x18000313f
xor eax, eax
mov qword [rdi], rax
mov qword [rdi + 8], rax
mov dword [rdi + 0x1c], eax
jmp 0x18000313f
mov ecx, r9d
mov eax, r9d
shr rax, 0x1b
shr rcx, 0x1d
and eax, 4
and ecx, 2
add rcx, rax
mov rax, r9
shr rax, 0x1f
add rcx, rax
mov eax, dword [rsp + rcx*4 + 0x38]
mov r8d, eax
bts r8d, 9
mov rcx, r10
bt r9d, 0x1a
lea r9, [rsp + 0x460]
cmovae r8d, eax
call r12
test eax, eax
je 0x1800030f5
inc rsi
add rbx, 0x28
cmp rsi, r14
jl 0x180002fb0
xor esi, esi
mov rbx, qword [rdi]
test rbx, rbx
je 0x18000313f
movsxd rax, dword [rbx + 0x3c]
mov ecx, dword [rax + rbx + 0xd0]
test ecx, ecx
je 0x1800030ca
mov rbx, qword [rcx + rbx + 0x18]
test rbx, rbx
je 0x1800030ca
mov rax, qword [rbx]
test rax, rax
je 0x1800030ca
nop
mov rcx, qword [rdi]
xor r8d, r8d
mov edx, 1
call rax
mov rax, qword [rbx + 8]
lea rbx, [rbx + 8]
test rax, rax
jne 0x1800030b0
cmp dword [rsp + 0x20], 0
je 0x180003131
mov rcx, qword [rdi]
test rcx, rcx
je 0x18000310e
movsxd rax, dword [rcx + 0x3c]
mov edx, dword [rax + rcx + 0x28]
test edx, edx
je 0x18000310e
mov eax, edx
add rax, rcx
jne 0x180003100
mov dword [rdi + 0x20], 6
jmp 0x18000310e
mov dword [rdi + 0x20], 5
xor esi, esi
jmp 0x18000310e
xor r8d, r8d
mov edx, 1
call rax
test eax, eax
jne 0x180003131
cmp qword [rdi + 0x10], 0
je 0x18000313f
cmp dword [rdi + 0x1c], 0
je 0x18000313f
cmp qword [rdi], 0
je 0x18000313f
mov qword [rdi], rsi
mov qword [rdi + 8], 0
mov dword [rdi + 0x1c], esi
jmp 0x18000313f
mov eax, 1
jmp 0x180003141
mov dword [rdi + 0x20], 2
xor eax, eax
mov rcx, qword [rsp + 0x468]
xor rcx, rsp
call fcn.180003740
mov rbx, qword [rsp + 0x500]
add rsp, 0x4b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret