Function at 0x180068820
Capabilities:
Encode data using xor
Inspect section memory permissions

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x188
lea rbp, [rsp + 0x80]
movdqa xmmword [rbp + 0xf0], xmm9
movaps xmmword [rbp + 0xe0], xmm8
movaps xmmword [rbp + 0xd0], xmm7
movaps xmmword [rbp + 0xc0], xmm6
mov qword [rbp + 0xb8], 0xfffffffffffffffe
mov ebx, r9d
mov r15d, r8d
mov r14, rcx
mov rdi, qword [rdx + 8]
mov qword [rbp + 8], rdx
mov rax, qword [rdx + 0x10]
lea rcx, [rdi + rax]
mov qword [rbp - 8], rcx
test rax, rax
mov qword [rbp + 0x28], rdi
je 0x18006894f
xor esi, esi
nop word cs:[rax + rax]
movzx r8d, byte [rdi]
movzx ecx, r8b
test cl, cl
js 0x1800688c0
inc rdi
jmp 0x180068930
mov eax, ecx
and eax, 0x1f
movzx r9d, byte [rdi + 1]
and r9d, 0x3f
cmp cl, 0xdf
jbe 0x180068909
movzx edx, byte [rdi + 2]
shl r9d, 6
and edx, 0x3f
or edx, r9d
cmp r8b, 0xf0
jb 0x180068917
movzx ecx, byte [rdi + 3]
and eax, 7
shl eax, 0x12
shl edx, 6
and ecx, 0x3f
or ecx, edx
or ecx, eax
cmp ecx, 0x110000
je 0x180068951
add rdi, 4
jmp 0x180068930
add rdi, 2
shl eax, 6
or eax, r9d
mov ecx, eax
jmp 0x180068930
add rdi, 3
shl eax, 0xc
or edx, eax
mov ecx, edx
nop word cs:[rax + rax]
call fcn.180011770
not al
movzx eax, al
and eax, 1
lea esi, [rsi + rax*8]
add esi, 0x10
cmp rdi, qword [rbp - 8]
jne 0x1800688a0
jmp 0x180068951
xor esi, esi
lea rcx, [rbp + 0x30]
mov edx, esi
mov r8d, 0x18
mov r9d, 0x16762004
call fcn.18015e0c0
xor eax, eax
cmp rax, qword [rbp + 0x30]
jno 0x180069276
mov eax, r15d
shr eax, 8
mov dword [rbp + 0x18], eax
mov dword [rbp + 0x14], r15d
shr r15d, 0x10
mov dword [rbp + 0x1c], r15d
mov dword [rbp + 0x20], ebx
shr ebx, 8
mov dword [rbp + 0x24], ebx
mov r13, qword [rbp + 0x38]
mov qword [rbp - 0x10], r13
lea rax, [r14 + 0xb0]
mov qword [rbp - 0x48], rax
lea rax, [r14 + 0xd0]
mov qword [rbp], rax
movss xmm6, dword [0x1801a2da4]
xorps xmm7, xmm7
movss xmm8, dword [0x1801a785c]
pcmpeqd xmm9, xmm9
mov rbx, qword [rbp + 0x28]
xor edi, edi
cmp rbx, qword [rbp - 8]
je 0x180069138
nop dword [rax]
movzx ecx, byte [rbx]
movzx r13d, cl
test r13b, r13b
js 0x180068a00
inc rbx
jmp 0x180068a60
mov eax, r13d
and eax, 0x1f
movzx edx, byte [rbx + 1]
and edx, 0x3f
cmp r13b, 0xdf
jbe 0x180068a46
movzx r13d, byte [rbx + 2]
shl edx, 6
and r13d, 0x3f
or r13d, edx
cmp cl, 0xf0
jb 0x180068a54
movzx ecx, byte [rbx + 3]
add rbx, 4
and eax, 7
shl eax, 0x12
shl r13d, 6
and ecx, 0x3f
or ecx, r13d
or ecx, eax
mov r13d, ecx
jmp 0x180068a60
add rbx, 2
shl eax, 6
or eax, edx
mov r13d, eax
jmp 0x180068a60
add rbx, 3
shl eax, 0xc
or r13d, eax
nop
mov dword [rbp + 0xb0], r13d
mov ecx, r13d
call fcn.180011770
test al, 1
je 0x180068ad0
mov r15d, edx
mov rax, qword [0x180277178]
movzx eax, byte [rax]
test al, al
jne 0x180068fc0
mov ecx, dword [0x18028e9a0]
test cl, 1
jne 0x180068fc0
cmp ecx, 0x100
jae 0x180068edb
mov edx, ecx
or edx, 0x20000000
mov eax, ecx
lock cmpxchg dword [0x18028e9a0], edx
jne 0x180068edb
movd xmm0, ecx
pshufd xmm0, xmm0, 0x50
lea rax, [0x18028e9a0]
jmp 0x180068f13
cmp qword [r14 + 0xc8], 0
je 0x180068b90
mov rcx, qword [rbp]
lea rdx, [rbp + 0xb0]
call fcn.18005c880
mov rcx, qword [r14 + 0xb0]
mov rdx, qword [r14 + 0xb8]
mov r8, rdx
and r8, rax
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rax, [rcx - 0x10]
xor r9d, r9d
movdqu xmm1, xmmword [rcx + r8]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb r10d, xmm2
test r10d, r10d
je 0x180068b6b
nop word [rax + rax]
tzcnt r11d, r10d
add r11, r8
and r11, rdx
shl r11, 4
mov r15, rax
sub r15, r11
cmp r13d, dword [r15]
je 0x180068db8
lea r11d, [r10 - 1]
and r11w, r10w
mov r10d, r11d
jne 0x180068b40
pcmpeqb xmm1, xmm9
pmovmskb r10d, xmm1
test r10d, r10d
jne 0x180068b90
add r8, r9
add r8, 0x10
add r9, 0x10
and r8, rdx
jmp 0x180068b1f
cmp qword [r14 + 0x48], 0
je 0x180068c73
mov eax, r13d
movabs rcx, 0x13198a2e03707344
xor rax, rcx
movabs rcx, 0x5851f42d4c957f2d
mul rcx
mov rcx, rax
xor rcx, rdx
mov rax, rcx
movabs rdx, 0x243f6a8885a308d3
mul rdx
xor rdx, rax
rol rdx, cl
mov r8, rdx
shr r8, 0x39
mov rax, qword [r14 + 0x30]
mov rcx, qword [r14 + 0x38]
movd xmm0, r8d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
xor r8d, r8d
and rdx, rcx
movdqu xmm1, xmmword [rax + rdx]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb r9d, xmm2
test r9d, r9d
je 0x180068c4c
nop word cs:[rax + rax]
tzcnt r10d, r9d
add r10, rdx
and r10, rcx
lea r11, [r10*8]
mov r15, rax
sub r15, r11
cmp r13d, dword [r15 - 8]
je 0x180068c68
lea r10d, [r9 - 1]
and r10w, r9w
mov r9d, r10d
jne 0x180068c20
pcmpeqb xmm1, xmm9
pmovmskb r9d, xmm1
test r9d, r9d
jne 0x180068c73
add rdx, r8
add rdx, 0x10
add r8, 0x10
jmp 0x180068bf9
neg r10
movzx r8d, word [rax + r10*8 - 4]
jmp 0x180068c76
xor r8d, r8d
lea rcx, [rbp + 0x60]
mov rdx, r14
movaps xmm3, xmm6
call fcn.18006b1c0
movups xmm0, xmmword [rbp + 0x60]
movdqu xmm1, xmmword [rbp + 0x70]
movdqu xmm2, xmmword [rbp + 0x80]
movdqa xmmword [rbp + 0x50], xmm2
movdqa xmmword [rbp + 0x40], xmm1
movaps xmmword [rbp + 0x30], xmm0
lea rcx, [rbp + 0x90]
mov rax, qword [rcx + 0x10]
mov qword [rbp - 0x30], rax
movups xmm0, xmmword [rcx]
movaps xmmword [rbp - 0x40], xmm0
movss xmm0, dword [rbp + 0x58]
cvttss2si rax, xmm0
ucomiss xmm0, xmm7
mov ecx, 0
cmovb eax, ecx
ucomiss xmm0, xmm8
mov ecx, 0xffffffff
cmova eax, ecx
cmp eax, 0x18
jne 0x180068d92
movss xmm0, dword [rbp + 0x5c]
cvttss2si rax, xmm0
ucomiss xmm0, xmm7
mov ecx, 0
cmovb eax, ecx
ucomiss xmm0, xmm8
mov ecx, 0xffffffff
cmova eax, ecx
cmp eax, 0x18
jne 0x180068d92
lea rcx, [rbp - 0x28]
mov edx, 0x18
mov r8d, 0x18
mov r9d, 0x16762004
call fcn.18015e0c0
xor eax, eax
cmp rax, qword [rbp - 0x28]
jno 0x18006923c
mov r15, qword [rbp - 0x20]
mov qword [rbp - 0x50], r15
mov rcx, qword [r15 + 0x10]
lea rax, [rbp + 0x50]
mov qword [rbp + 0x60], rax
lea rax, [rbp + 0x54]
mov qword [rbp + 0x68], rax
lea rax, [rbp + 0x40]
mov qword [rbp + 0x70], rax
lea rax, [rbp + 0x48]
mov qword [rbp + 0x78], rax
lea rax, [rbp - 0x40]
mov qword [rbp + 0x80], rax
mov byte [rbp + 0xb7], 1
lea rdx, [rbp + 0x60]
call fcn.180051fe0
mov r8, qword [r15 + 0x10]
mov byte [rbp + 0xb7], 0
mov rcx, qword [rbp - 0x48]
mov edx, r13d
call fcn.1800193e0
mov rdx, qword [rbp - 0x40]
test rdx, rdx
je 0x180068daa
mov rcx, qword [rbp - 0x38]
mov r8d, 1
call fcn.18006a580
cmp qword [r14 + 0xc8], 0
je 0x180068e81
mov rcx, qword [rbp]
lea rdx, [rbp + 0xb0]
call fcn.18005c880
mov rcx, qword [r14 + 0xb0]
mov rdx, qword [r14 + 0xb8]
mov r8, rdx
and r8, rax
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r12, [rcx - 0x10]
xor r9d, r9d
movdqu xmm1, xmmword [rcx + r8]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb r10d, xmm2
test r10d, r10d
je 0x180068e4a
nop word cs:[rax + rax]
tzcnt r11d, r10d
add r11, r8
and r11, rdx
mov r15, r11
shl r15, 4
mov rax, r12
sub rax, r15
cmp r13d, dword [rax]
je 0x180068e70
lea eax, [r10 - 1]
and ax, r10w
mov r10d, eax
jne 0x180068e20
pcmpeqb xmm1, xmm9
pmovmskb eax, xmm1
test eax, eax
jne 0x180068e81
add r8, r9
add r8, 0x10
add r9, 0x10
and r8, rdx
jmp 0x180068df9
neg r11
shl r11, 4
mov r15, qword [rcx + r11 - 8]
jmp 0x180068fd2
mov rax, qword [0x180277178]
movzx eax, byte [rax]
test al, al
jne 0x180069125
mov ecx, dword [0x18028e9a0]
test cl, 1
jne 0x180069125
cmp ecx, 0x100
jae 0x180069048
mov edx, ecx
or edx, 0x20000000
mov eax, ecx
lock cmpxchg dword [0x18028e9a0], edx
jne 0x180069048
movd xmm0, ecx
pshufd xmm0, xmm0, 0x50
lea rax, [0x18028e9a0]
jmp 0x180069080
lea rcx, [rbp + 0x60]
lea rdx, [0x18028e9a0]
lea r8, [rbp - 0x28]
lea r9, [0x18028e998]
call fcn.1801844d0
mov eax, dword [rbp + 0x60]
test eax, eax
je 0x180068f7f
cmp eax, 2
je 0x180068fc0
mov rax, qword [rbp + 0x68]
movq xmm0, qword [rbp + 0x70]
lea rcx, [0x18028e998]
mov qword [rbp + 0x30], rcx
mov qword [rbp + 0x38], rax
movq qword [rbp + 0x40], xmm0
lea rcx, [rbp + 0x60]
lea rdx, [rbp + 0x30]
call fcn.180197010
mov r8d, dword [rbp + 0x70]
mov rcx, qword [rbp + 0x68]
mov eax, r8d
or eax, 0x20000000
mov edx, dword [rbp + 0x74]
lock cmpxchg dword [rcx], edx
je 0x180068fc0
xor edx, r8d
or edx, 0x20000000
mov eax, dword [rcx]
nop dword [rax + rax]
mov r8d, eax
xor r8d, edx
lock cmpxchg dword [rcx], r8d
jne 0x180068f60
cmp eax, 0x40000000
jb 0x180068fc0
xor eax, edx
mov edx, eax
call fcn.1801958d0
jmp 0x180068fc0
mov rcx, qword [rbp + 0x68]
mov edx, 0xffffff00
lock xadd dword [rcx], edx
mov eax, edx
and eax, 0x3fffff00
cmp eax, 0x100
setne al
cmp edx, 0x40000000
setb r8b
or r8b, al
jne 0x180068fc0
add edx, 0xffffff00
call fcn.1801958d0
nop word cs:[rax + rax]
mov rcx, qword [0x18028e998]
mov edx, r15d
call fcn.18003a990
mov r15, rax
mov ecx, r13d
call fcn.180011770
not al
movzx r12d, al
and r12d, 1
lea eax, [r12*8 + 0x10]
cmp edi, 0xc0000001
mov ecx, 0xc0000000
cmovge ecx, edi
cmp ecx, 0x3fffffff
mov edx, 0x3fffffff
cmovge ecx, edx
mov dword [rbp + 0x60], ecx
mov dword [rbp + 0x64], 0
mov dword [rbp + 0x68], eax
mov dword [rbp + 0x6c], 0x18
mov r13, qword [rbp - 0x10]
mov r8, qword [r13 + 0x10]
mov rcx, r15
xor edx, edx
lea r9, [rbp + 0x60]
call sub.SDL2.dll_SDL_UpperBlitScaled
lea edi, [rdi + r12*8]
add edi, 0x10
cmp rbx, qword [rbp - 8]
jne 0x1800689e0
jmp 0x180069138
lea rcx, [rbp + 0x60]
lea rdx, [0x18028e9a0]
lea r8, [rbp - 0x28]
lea r9, [0x18028e998]
call fcn.1801844d0
mov eax, dword [rbp + 0x60]
test eax, eax
je 0x1800690ef
cmp eax, 2
je 0x180069125
mov rax, qword [rbp + 0x68]
movq xmm0, qword [rbp + 0x70]
lea rcx, [0x18028e998]
mov qword [rbp + 0x30], rcx
mov qword [rbp + 0x38], rax
movq qword [rbp + 0x40], xmm0
lea rcx, [rbp + 0x60]
lea rdx, [rbp + 0x30]
call fcn.180197010
mov r8d, dword [rbp + 0x70]
mov rcx, qword [rbp + 0x68]
mov eax, r8d
or eax, 0x20000000
mov edx, dword [rbp + 0x74]
lock cmpxchg dword [rcx], edx
je 0x180069125
xor edx, r8d
or edx, 0x20000000
mov eax, dword [rcx]
nop word cs:[rax + rax]
mov r8d, eax
xor r8d, edx
lock cmpxchg dword [rcx], r8d
jne 0x1800690d0
cmp eax, 0x40000000
jb 0x180069125
xor eax, edx
mov edx, eax
call fcn.1801958d0
jmp 0x180069125
mov rcx, qword [rbp + 0x68]
mov edx, 0xffffff00
lock xadd dword [rcx], edx
mov eax, edx
and eax, 0x3fffff00
cmp eax, 0x100
setne al
cmp edx, 0x40000000
setb r8b
or r8b, al
jne 0x180069125
add edx, 0xffffff00
call fcn.1801958d0
mov rcx, qword [0x18028e998]
mov dl, 0x20
call fcn.18003a990
jmp 0x180068fcf
mov rcx, qword [r13 + 0x10]
mov edx, dword [rbp + 0x14]
mov r8d, dword [rbp + 0x18]
mov r9d, dword [rbp + 0x1c]
call sub.SDL2.dll_SDL_SetSurfaceColorMod
lea rcx, [rbp + 0x30]
mov edx, esi
mov r8d, 0x18
mov r9d, 0x16762004
call fcn.18015e0c0
xor eax, eax
cmp rax, qword [rbp + 0x30]
jno 0x1800692b2
mov rdi, qword [rbp + 0x38]
mov qword [rbp - 0x28], rdi
test byte [rbp + 0x20], 1
je 0x1800691a9
mov rax, qword [rdi + 0x10]
mov rax, qword [rax + 8]
mov qword [rbp + 0x60], rax
mov ecx, dword [rbp + 0x24]
or ecx, 0xff000000
lea rdx, [rbp + 0x60]
call fcn.18015e370
mov rcx, qword [rdi + 0x10]
xor edx, edx
mov r8d, eax
call sub.SDL2.dll_SDL_FillRect
mov rcx, qword [r13 + 0x10]
mov r8, qword [rdi + 0x10]
xor edx, edx
xor r9d, r9d
call sub.SDL2.dll_SDL_UpperBlit
mov rdi, qword [rdi + 0x10]
dec qword [r13]
mov rbx, qword [rbp + 0x28]
jne 0x1800691eb
mov rcx, qword [r13 + 0x10]
call sub.SDL2.dll_SDL_FreeSurface
dec qword [r13 + 8]
jne 0x1800691eb
mov edx, 0x18
mov r8d, 8
mov rcx, r13
call fcn.18006a580
mov rax, qword [rbp + 8]
mov rdx, qword [rax]
test rdx, rdx
je 0x180069205
mov r8d, 1
mov rcx, rbx
call fcn.18006a580
mov rax, rdi
mov edx, esi
movaps xmm6, xmmword [rbp + 0xc0]
movaps xmm7, xmmword [rbp + 0xd0]
movaps xmm8, xmmword [rbp + 0xe0]
movaps xmm9, xmmword [rbp + 0xf0]
add rsp, 0x188
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rax, qword [rbp - 0x18]
mov qword [rbp + 0x70], rax
movups xmm0, xmmword [rbp - 0x28]
movaps xmmword [rbp + 0x60], xmm0
lea rax, str.src_font.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1801a7ef0]
lea r9, [0x1801a7f40]
lea r8, [rbp + 0x60]
mov edx, 0x2b
call fcn.18019e500
jmp 0x1800692ec
mov rax, qword [rbp + 0x40]
mov qword [rbp + 0x70], rax
movdqu xmm0, xmmword [rbp + 0x30]
movdqa xmmword [rbp + 0x60], xmm0
lea rax, str.src_font.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1801a7ef0]
lea r9, [0x1801a7f40]
lea r8, [rbp + 0x60]
mov edx, 0x2b
call fcn.18019e500
jmp 0x1800692ec
mov rax, qword [rbp + 0x40]
mov qword [rbp + 0x70], rax
movdqu xmm0, xmmword [rbp + 0x30]
movdqa xmmword [rbp + 0x60], xmm0
lea rax, str.src_font.rs
mov qword [rsp + 0x20], rax
lea rcx, [0x1801a7ef0]
lea r9, [0x1801a7f40]
lea r8, [rbp + 0x60]
mov edx, 0x2b
call fcn.18019e500
ud2