Function at 0x18003f940
Capabilities:
Inspect section memory permissions

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0x4078
mov r11, r8
movsxd rax, dword [rsp + 0x40e0]
push 0xffffffffffffffff
pop r14
xor r13d, r13d
mov r15d, r14d
mov dword [rsp + 0x118], r9d
mov r8, rcx
mov dword [rsp + 0x138], r14d
lea rsi, [r11 + rax]
mov rbp, rsi
lea rbx, [rsi - 1]
neg rbp
mov dword [rsp + 0x128], r13d
mov dword [rsp + 0x140], r13d
mov qword [rsp + 0x120], 0
mov qword [rsp + 0x188], rax
test dword [rsp + 0x40e8], 0xff8f5a6f
je 0x18003f9d1
push 0xfffffffffffffffd
pop rax
add rsp, 0x4078
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
test rcx, rcx
je 0x1800404fc
test r11, r11
je 0x1800404fc
cmp qword [rsp + 0x40f0], 0
je 0x18003f9fa
cmp dword [rsp + 0x40f8], 0
jl 0x18003fa0a
jmp 0x18003fa0f
cmp dword [rsp + 0x40f8], 0
jg 0x1800404fc
jge 0x18003fa0f
push 0xfffffffffffffff1
pop rax
jmp 0x18003f9bd
mov qword [rsp + 0x100], 0
test rdx, rdx
mov r10, qword [rcx + 0x20]
jne 0x18003fa3f
mov eax, 0x989680
mov qword [rsp + 0xf0], 0
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x44], eax
jmp 0x18003faa1
mov eax, dword [rdx]
test al, 1
je 0x18003fa51
mov rdi, qword [rdx + 8]
mov qword [rsp + 0x100], rdi
test al, 2
je 0x18003fa5e
mov edi, dword [rdx + 0x10]
mov dword [rsp + 0x44], edi
jmp 0x18003fa66
mov dword [rsp + 0x44], 0x989680
test al, 0x10
je 0x18003fa73
mov edi, dword [rdx + 0x28]
mov dword [rsp + 0x48], edi
jmp 0x18003fa7b
mov dword [rsp + 0x48], 0x989680
test al, 4
je 0x18003fa8d
mov rdi, qword [rdx + 0x18]
mov qword [rsp + 0xf0], rdi
jmp 0x18003fa99
mov qword [rsp + 0xf0], 0
test al, 8
je 0x18003faa1
mov r10, qword [rdx + 0x20]
test r10, r10
lea rax, [0x18007d352]
cmove r10, rax
cmp dword [rcx], 0x50435245
je 0x18003fb33
mov r8, qword [rsp + 0x100]
lea rdx, [rsp + 0x4040]
mov qword [rsp + 0x108], rcx
lea r9, [rsp + 0x198]
mov qword [rsp + 0x130], r11
mov qword [rsp + 0x110], r10
call fcn.180045de0
mov r10, qword [rsp + 0x110]
mov r8, rax
mov r11, qword [rsp + 0x130]
mov rcx, qword [rsp + 0x108]
test r8, r8
jne 0x18003fb14
push 0xfffffffffffffffc
pop rax
jmp 0x18003f9bd
mov rdx, qword [rsp + 0x100]
test rdx, rdx
lea rax, [rsp + 0x198]
cmovne rdx, rax
mov qword [rsp + 0x100], rdx
mov eax, dword [rsp + 0x40e8]
mov edi, eax
mov r12d, dword [r8 + 8]
or edi, r12d
mov edx, r12d
mov r9d, r12d
and edi, 0x10
and edx, 0x10000000
and r9d, 0x40000
shr edi, 4
mov dword [rsp + 0x180], edi
shr edx, 0x1c
mov dword [rsp + 0x178], edx
movzx edi, word [r8 + 0x18]
add rcx, rdi
movzx edi, word [r8 + 0x1c]
movzx edx, word [r8 + 0x1a]
shr r9d, 0x12
mov dword [rsp + 0x148], r9d
mov r9d, r12d
imul edi, edx
mov edx, r12d
and r9d, 0x20
and edx, 0x800
shr r9d, 5
shr edx, 0xb
mov dword [rsp + 0x168], r9d
mov r9d, eax
mov dword [rsp + 0x108], edx
mov edx, eax
and r9d, 0x80
and edx, 0x100
shr r9d, 7
shr edx, 8
test eax, 0x700000
mov dword [rsp + 0x158], edx
mov edx, eax
mov dword [rsp + 0x160], r9d
mov r9d, eax
movsxd rdi, edi
cmove eax, r12d
and edx, 0x8000
and r9d, 0x400
add rcx, rdi
movsxd rdi, dword [rsp + 0x118]
mov dword [rsp + 0x190], edx
add rdi, r11
shr r9d, 0xa
shr edx, 0xf
mov dword [rsp + 0x150], r9d
lea r9, [r10 + 0x340]
mov dword [rsp + 0x130], edx
and eax, 0x700000
mov qword [rsp + 0x170], r9
je 0x18003fc6e
cmp eax, 0x100000
je 0x18003fc69
cmp eax, 0x200000
je 0x18003fc64
cmp eax, 0x300000
je 0x18003fc6e
cmp eax, 0x400000
je 0x18003fc5f
push 0xffffffffffffffe9
pop rax
jmp 0x18003f9bd
push 1
pop rdx
jmp 0x18003fca2
push 0xa
pop rax
jmp 0x18003fc73
push 0xd
pop rax
jmp 0x18003fc73
mov eax, 0xd0a
xor edx, edx
cmp eax, 0xff
jle 0x18003fc96
mov r9d, eax
shr r9d, 8
mov dword [rsp + 0x64], 2
mov byte [rsp + 0x68], r9b
mov byte [rsp + 0x69], al
jmp 0x18003fca2
mov dword [rsp + 0x64], 1
mov byte [rsp + 0x68], al
cmp dword [rsp + 0x190], 0
je 0x18003fcb9
test r12d, 0x80000000
jne 0x1800404f4
mov rax, qword [rsp + 0x170]
mov r9d, dword [rsp + 0x130]
mov dword [rsp + 0x60], edx
lea rdx, [rsp + 0x1c0]
mov qword [rsp + 0x78], rax
mov qword [rsp + 0xd8], rdx
mov dword [rsp + 0x98], r9d
mov eax, dword [rdx - 0x70]
mov edx, dword [rdx - 0x68]
mov r9d, dword [rsp + 0x160]
mov dword [rsp + 0x94], eax
mov dword [rsp + 0x88], edx
mov dword [rsp + 0x84], r9d
mov eax, dword [rsp + 0x108]
mov edx, dword [rsp + 0x168]
mov r9d, dword [rsp + 0x40e0]
mov qword [rsp + 0x70], r10
mov qword [rsp + 0xe8], 0
mov dword [rsp + 0x9c], 0
mov dword [rsp + 0x8c], eax
mov dword [rsp + 0x90], edx
mov qword [rsp + 0xb0], rdi
mov dword [rsp + 0xd0], r9d
mov qword [rsp + 0xa8], r11
mov qword [rsp + 0xa0], rcx
cmp dword [rsp + 0x108], 0
je 0x18003fdfc
test dword [rsp + 0x40e8], 0x2000
jne 0x18003fdfc
mov rcx, r11
mov edx, dword [rsp + 0x118]
mov qword [rsp + 0x130], r8
mov qword [rsp + 0x110], r10
call fcn.180045fc0
mov r10, qword [rsp + 0x110]
mov r8, qword [rsp + 0x130]
test eax, eax
jl 0x18003fdc4
push 0xfffffffffffffff6
pop rax
jmp 0x18003f9bd
cmp dword [rsp + 0x40e0], 0
jle 0x18003fdfc
mov eax, dword [rsp + 0x118]
cmp eax, dword [rsp + 0x40e0]
jle 0x18003fdfc
movzx eax, byte [rsi]
cmp eax, 0x7f
jle 0x18003fdfc
and eax, 0xc0
je 0x18003fdfc
cmp eax, 0xc0
je 0x18003fdfc
push 0xfffffffffffffff5
pop rax
jmp 0x18003f9bd
mov eax, 0x55555556
and r12d, 7
mov r9d, dword [rsp + 0x40f8]
mov r11d, r9d
imul r9d
sar r11d, 0x1f
sub edx, r11d
lea r11d, [rdx + rdx*2]
neg r11d
add r11d, r9d
neg r11d
add r11d, r9d
movzx r9d, word [r8 + 0x12]
test r9d, r9d
jle 0x18003fe49
mov eax, 0x55555556
imul r11d
mov eax, r11d
sar eax, 0x1f
sub edx, eax
cmp r9d, edx
jge 0x18003fe58
mov r9, qword [rsp + 0x40f0]
mov qword [rsp + 0x50], r9
jmp 0x18003feba
mov qword [rsp + 0x130], r8
lea r11d, [r9 + r9*2 + 3]
mov ecx, r11d
shl rcx, 2
mov dword [rsp + 0x118], r11d
mov qword [rsp + 0x110], r10
call qword [fcn.180068700]
mov r10, qword [rsp + 0x110]
mov r9, rax
mov r8, qword [rsp + 0x130]
mov r11d, dword [rsp + 0x118]
test r9, r9
jne 0x18003feaa
push 0xfffffffffffffffa
pop rax
jmp 0x18003f9bd
mov qword [rsp + 0x50], r9
mov dword [rsp + 0x128], 1
mov eax, 0x55555556
lea ecx, [r11 + r11]
imul ecx
movzx eax, word [r8 + 0x10]
sar ecx, 0x1f
sub edx, ecx
mov dword [rsp + 0x58], r11d
lea eax, [rax + rax + 2]
cmp eax, dword [rsp + 0x40f8]
mov dword [rsp + 0x5c], edx
mov dword [rsp + 0x80], 0
cmovg eax, r11d
mov dword [rsp + 0xcc], 0xffffffff
test r9, r9
je 0x18003ff3c
mov edx, eax
shr edx, 0x1f
add edx, eax
movsxd r11, r11d
sar edx, 1
movsxd rdx, edx
shl rdx, 2
neg rdx
lea r9, [r9 + r11*4]
add rdx, r9
add r9, 0xfffffffffffffffc
add rdx, 4
cmp r9, rdx
jb 0x18003ff3c
mov dword [r9], 0xffffffff
add r9, 0xfffffffffffffffc
cmp r9, rdx
jae 0x18003ff2c
cmp dword [rsp + 0x180], 0
jne 0x18003ffaa
test dword [r8 + 8], 0x40000000
je 0x18003ff76
movzx r13d, word [r8 + 0x14]
movzx r14d, r13b
and r13d, 0x100
shr r13d, 8
cmp r13d, 1
jne 0x18003ffaa
mov rdx, qword [rsp + 0x70]
movzx r14d, byte [rdx + r14]
jmp 0x18003ffaa
cmp dword [rsp + 0x178], 0
jne 0x18003ffaa
cmp qword [rsp + 0x100], 0
je 0x18003ffaa
mov rdx, qword [rsp + 0x100]
xor r9d, r9d
test byte [rdx + 4], 1
lea r11, [rdx + 8]
cmove r11, r9
mov qword [rsp + 0x120], r11
test dword [r8 + 8], 0x20000000
je 0x18003ffde
movzx edx, word [r8 + 0x16]
movzx r15d, dl
and edx, 0x100
shr edx, 8
mov dword [rsp + 0x140], edx
movzx r8d, byte [r15 + r10 + 0x100]
mov dword [rsp + 0x138], r8d
cdqe
mov qword [rsp + 0x118], rax
mov rdx, qword [rsp + 0x50]
mov r11, rdi
test rdx, rdx
je 0x180040015
mov rax, qword [rsp + 0x118]
lea rax, [rdx + rax*4]
cmp rdx, rax
jae 0x180040015
mov dword [rdx], 0xffffffff
add rdx, 4
cmp rdx, rax
jb 0x180040006
cmp dword [rsp + 0x148], 0
je 0x1800400a1
mov rdx, qword [rsp + 0xb0]
mov rdi, rsi
cmp rsi, rdx
jae 0x1800400a1
cmp dword [rsp + 0x60], 0
je 0x180040072
cmp rdi, rdx
jae 0x180040099
mov rcx, rdi
lea r8, [rsp + 0x64]
mov r9d, dword [rsp + 0x108]
mov qword [rsp + 0x100], r11
call fcn.180045930
mov r11, qword [rsp + 0x100]
test eax, eax
jne 0x1800400a1
mov rdx, qword [rsp + 0xb0]
jmp 0x180040099
mov rax, rdx
movsxd r8, dword [rsp + 0x64]
sub rax, r8
cmp rdi, rax
ja 0x180040099
mov al, byte [rdi]
cmp al, byte [rsp + 0x68]
jne 0x180040099
cmp r8, 1
je 0x1800400a1
mov al, byte [rdi + 1]
cmp al, byte [rsp + 0x69]
je 0x1800400a1
inc rdi
cmp rdi, rdx
jb 0x180040033
test r14d, r14d
jl 0x1800400ff
test r13d, r13d
je 0x1800400da
cmp rsi, rdi
jae 0x1800401f5
mov r8, qword [rsp + 0x70]
movzx eax, byte [rsi]
movzx edx, byte [r8 + rax]
cmp edx, r14d
je 0x1800401f5
inc rsi
dec rbp
cmp rsi, rdi
jb 0x1800400b9
jmp 0x1800401f5
cmp rsi, rdi
jae 0x1800401f5
movzx eax, byte [rsi]
cmp eax, r14d
je 0x1800401f5
inc rsi
dec rbp
cmp rsi, rdi
jb 0x1800400e3
jmp 0x1800401f5
cmp dword [rsp + 0x178], 0
je 0x1800401ba
mov rdx, qword [rsp + 0xa8]
mov rax, qword [rsp + 0x188]
lea r8, [rax + rdx]
cmp rsi, r8
jbe 0x1800401f5
cmp rsi, rdi
ja 0x1800401f5
cmp dword [rsp + 0x60], 0
je 0x18004016e
cmp rsi, rdx
jbe 0x1800401a2
mov rcx, rsi
lea r8, [rsp + 0x64]
mov r9d, dword [rsp + 0x108]
mov qword [rsp + 0x100], r11
call fcn.180045cb0
mov r11, qword [rsp + 0x100]
test eax, eax
jne 0x1800401f5
jmp 0x1800401a2
mov r8d, dword [rsp + 0x64]
movsxd r9, r8d
add rdx, r9
cmp rsi, rdx
jb 0x1800401a2
mov eax, r8d
neg eax
cdqe
mov dl, byte [rax + rsi]
cmp dl, byte [rsp + 0x68]
jne 0x1800401a2
cmp r8d, 1
je 0x1800401f5
neg r9
mov al, byte [r9 + rsi + 1]
cmp al, byte [rsp + 0x69]
je 0x1800401f5
inc rsi
dec rbp
cmp rsi, rdi
ja 0x1800401f5
mov rdx, qword [rsp + 0xa8]
jmp 0x180040133
cmp qword [rsp + 0x120], 0
je 0x1800401f5
cmp rsi, rdi
jae 0x1800401f5
mov cl, byte [rsi]
mov al, cl
shr al, 3
and cl, 7
mov dl, 1
shl dl, cl
movzx r8d, al
mov r9, qword [rsp + 0x120]
test byte [r8 + r9], dl
jne 0x1800401f5
inc rsi
dec rbp
cmp rsi, rdi
jb 0x1800401ca
mov rdi, r11
test r15d, r15d
jl 0x180040269
lea rax, [r11 + rbp]
cmp rax, 0x3e8
jge 0x180040269
cmp dword [rsp + 0x98], 0
jne 0x180040269
xor edx, edx
test r14d, r14d
setge dl
add rdx, rsi
cmp rdx, rbx
jbe 0x180040269
cmp dword [rsp + 0x140], 0
je 0x180040248
cmp rdx, r11
jae 0x180040261
movzx eax, byte [rdx]
inc rdx
cmp eax, r15d
je 0x180040258
cmp eax, dword [rsp + 0x138]
je 0x180040258
jmp 0x18004022d
cmp rdx, r11
jae 0x180040261
movzx eax, byte [rdx]
inc rdx
cmp eax, r15d
jne 0x180040248
lea rbx, [rdx - 1]
cmp rbx, r11
jb 0x180040269
xor r10d, r10d
jmp 0x18004049e
mov r10, rsp
mov rcx, rsi
push 2
pop r8
lea r9, [rsp + 0x40]
xor eax, eax
mov rdx, qword [rsp + 0xa0]
mov dword [r10 + 0x20], r12d
mov qword [r10 + 0x28], 0
mov dword [r10 + 0x30], eax
mov dword [r10 + 0x38], eax
mov qword [rsp + 0xb8], rsi
mov dword [rsp + 0x40], eax
mov dword [rsp + 0xe0], eax
mov qword [rsp + 0x100], r11
call fcn.180040510
mov r11, qword [rsp + 0x100]
mov r10d, eax
test r10d, r10d
jne 0x1800403d9
cmp dword [rsp + 0x148], 0
je 0x18004035f
cmp dword [rsp + 0x60], 0
je 0x18004032b
mov rdx, qword [rsp + 0xb0]
cmp rsi, rdx
jae 0x18004035f
mov rcx, rsi
lea r8, [rsp + 0x64]
mov r9d, dword [rsp + 0x108]
mov qword [rsp + 0x100], r11
mov dword [rsp + 0x110], r10d
call fcn.180045930
mov r10d, dword [rsp + 0x110]
mov r11, qword [rsp + 0x100]
test eax, eax
jne 0x18004049e
jmp 0x18004035f
movsxd r8, dword [rsp + 0x64]
mov rdx, qword [rsp + 0xb0]
sub rdx, r8
cmp rsi, rdx
ja 0x18004035f
mov dl, byte [rsi]
cmp dl, byte [rsp + 0x68]
jne 0x18004035f
cmp r8, 1
je 0x18004049e
mov dl, byte [rsi + 1]
cmp dl, byte [rsp + 0x69]
je 0x18004049e
dec rbp
inc rsi
cmp dword [rsp + 0x108], 0
je 0x180040389
cmp rsi, r11
jae 0x180040389
mov dl, byte [rsi]
and dl, 0xc0
cmp dl, 0x80
jne 0x180040389
inc rsi
dec rbp
cmp rsi, r11
jb 0x180040374
cmp dword [rsp + 0x180], 0
jne 0x18004049e
cmp rsi, r11
ja 0x18004049e
cmp byte [rsi - 1], 0xd
jne 0x18003ffe8
cmp dword [rsp + 0x60], 1
je 0x1800403bc
cmp dword [rsp + 0x64], 2
jne 0x18003ffe8
cmp rsi, r11
jae 0x18003ffe8
cmp byte [rsi], 0xa
jne 0x18003ffe8
dec rbp
inc rsi
jmp 0x18003ffe8
cmp r10d, 1
jne 0x18004049e
cmp dword [rsp + 0x128], 0
je 0x180040447
cmp dword [rsp + 0x40f8], 4
jl 0x180040421
mov rax, qword [rsp + 0x40f0]
movsxd rbx, dword [rsp + 0x40f8]
mov rdx, qword [rsp + 0x50]
add rdx, 8
lea rcx, [rax + 8]
lea r8, [rbx*4 - 8]
call fcn.18006fcf0
mov eax, dword [rsp + 0x40f8]
cmp eax, dword [rsp + 0xc8]
jge 0x18004043c
mov dword [rsp + 0x80], 1
mov rcx, qword [rsp + 0x50]
call qword [0x180086260]
cmp dword [rsp + 0x80], 0
je 0x180040455
xor eax, eax
jmp 0x180040465
mov eax, dword [rsp + 0xc8]
mov edx, eax
shr edx, 0x1f
add eax, edx
sar eax, 1
cmp dword [rsp + 0x40f8], 2
jge 0x180040476
xor eax, eax
jmp 0x18003f9bd
mov rbx, qword [rsp + 0x40f0]
mov rdx, qword [rsp + 0xa8]
sub rsi, rdx
mov dword [rbx], esi
mov rsi, qword [rsp + 0xc0]
sub rsi, rdx
mov dword [rbx + 4], esi
jmp 0x18003f9bd
cmp dword [rsp + 0x128], 0
je 0x1800404c3
mov rcx, qword [rsp + 0x50]
mov dword [rsp + 0x110], r10d
call qword [0x180086260]
mov r10d, dword [rsp + 0x110]
test r10d, r10d
je 0x1800404d0
mov eax, r10d
jmp 0x18003f9bd
cmp dword [rsp + 0x98], 0
je 0x1800404ec
cmp dword [rsp + 0x9c], 0
je 0x1800404ec
push 0xfffffffffffffff4
pop rax
jmp 0x18003f9bd
push 0xffffffffffffffff
pop rax
jmp 0x18003f9bd
push 0xfffffffffffffff3
pop rax
jmp 0x18003f9bd
push 0xfffffffffffffffe
pop rax
jmp 0x18003f9bd