Function at 0x140050d0a
Capabilities:
Inspect section memory permissions

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
mov r12, rcx
mov rax, qword [0x1400ca0f0]
xor rax, rsp
mov qword [rsp + 0x100], rax
mov qword [rsp + 0xf8], 0x400
xor eax, eax
mov qword [rsp + 0xd0], rax
mov ecx, 0x400
mov edx, 2
xor r8d, r8d
call fcn.140011830
mov r13, rax
movsxd rcx, dword [r12 + 0x178]
mov edx, 0x14
xor r8d, r8d
call fcn.140011830
mov cl, byte [r12 + 0xf2]
cmp cl, byte [r12 + 0x181]
mov r14, rax
setne r15b
cmp byte [r12 + 0xf8], 0
je 0x140050de3
cmp byte [r12 + 0x180], 0
je 0x140050dc2
mov eax, 0x40000000
cmp byte [r12 + 0xfb], 0
jne 0x140050dc7
xor eax, eax
cmp byte [r12 + 0x1166], 0
sete al
shl eax, 0x1e
jmp 0x140050dc7
mov eax, 0x20000000
mov ecx, eax
or ecx, 0x10000000
cmp byte [r12 + 0xe2], 0
cmove ecx, eax
mov qword [rsp + 0xd0], rcx
movsxd rdx, dword [r12 + 0xc8]
movsxd rax, dword [r12 + 0x20]
mov rbx, rdx
sub rbx, rax
mov rcx, r12
mov r8d, 0x153d
xor r9d, r9d
call fcn.140052f54
mov rbp, rax
mov esi, dword [r12 + 0xcc]
mov rcx, r12
mov rdx, rax
mov r8d, ebx
call fcn.1400557dc
test rax, rax
je 0x140050e41
movsxd rcx, esi
mov rdx, qword [r12 + 0x1128]
mov rdi, rbx
shl rdi, 5
mov rdx, qword [rdx + rdi + 0x10]
mov esi, dword [rdx + rcx*4]
jmp 0x140050e45
mov rax, qword [rbp + 0x18]
test esi, esi
jle 0x140050e5d
mov ecx, esi
lea rcx, [rcx + rcx*4]
xor edx, edx
cmp dword [rax + rcx*4], 0xdfff
sete dl
sub esi, edx
mov edi, esi
cmp byte [rbp + 0xc], 0
je 0x140050e76
mov rcx, qword [rbp + 0x18]
call fcn.1400118b0
mov rcx, rbp
call fcn.1400118b0
mov ecx, dword [r12 + 0x34]
test ecx, ecx
mov esi, 0
mov qword [rsp + 0xb0], rdi
js 0x140050f09
mov eax, dword [r12 + 0x30]
cmp ecx, ebx
jne 0x140050ea8
mov rdx, qword [rsp + 0xd0]
cmp dword [r12 + 0x38], edx
jne 0x140050ea8
cmp eax, edi
je 0x140050f09
movsxd rdx, eax
mov rbp, qword [r12 + 0x28]
mov rcx, qword [rbp + rcx*8]
mov rcx, qword [rcx + 0x18]
lea rdx, [rdx + rdx*4]
lea rbp, [rcx + rdx*4]
test eax, eax
jle 0x140050eda
cmp dword [rbp], 0xdfff
jne 0x140050eda
or dword [rbp - 0x10], 0x3ffff
mov eax, dword [r12 + 0x30]
mov edi, dword [r12 + 0x178]
dec edi
cmp eax, edi
jge 0x140050ef8
cmp dword [rbp + 0x14], 0xdfff
jne 0x140050ef8
or dword [rbp + 0x18], 0x3ffff
or dword [rcx + rdx*4 + 4], 0x3ffff
mov dword [r12 + 0x38], 0
mov qword [r12 + 0x30], 0xffffffffffffffff
cmp dword [r12 + 0x174], 0
jle 0x140051dac
mov sil, r15b
shl esi, 0x14
mov dword [rsp + 0xc0], esi
mov qword [rsp + 0xf0], rbx
mov eax, ebx
mov qword [rsp + 0xd8], rax
xor esi, esi
mov qword [rsp + 0xb8], r14
mov qword [rsp + 0xe8], r12
mov edx, dword [r12 + 0x20]
add edx, esi
mov rcx, r12
mov dword [rsp + 0x54], edx
mov r8d, 0x1573
xor r9d, r9d
call fcn.140052f54
mov rdi, rax
mov rcx, r12
mov rdx, rax
mov r8d, esi
call fcn.1400557dc
mov qword [rsp + 0xa8], rax
test rax, rax
mov qword [rsp + 0xc8], rdi
je 0x140050faa
mov rax, qword [r12 + 0x1128]
mov rcx, rsi
shl rcx, 5
mov r10, qword [rax + rcx + 0x18]
jmp 0x140050fb9
mov rax, qword [rdi + 0x18]
mov qword [rsp + 0xa8], rax
xor r10d, r10d
mov ecx, dword [r12 + 0x178]
test ecx, ecx
mov qword [rsp + 0x60], rsi
jle 0x1400514e6
mov ebx, 4
xor ebp, ebp
mov r9d, dword [rsp + 0xc0]
mov qword [rsp + 0x90], r10
test r10, r10
je 0x140050ff0
mov r8d, dword [r10 + rbp*4]
jmp 0x140050ff3
mov r8d, ebp
mov rax, qword [rsp + 0xa8]
mov r14d, dword [rax + rbx*4 - 0x10]
mov eax, dword [rax + rbx*4 - 0xc]
mov esi, eax
and esi, 0xfffc0000
or esi, 0x20500
xor edx, edx
cmp byte [r12 + 0x1139], dl
cmovne esi, eax
cmp byte [r12 + 0x119b], dl
jne 0x14005107b
mov eax, esi
mov edi, 0x1ff
and eax, edi
mov r10d, 0xfffffff0
add eax, r10d
mov edx, esi
and edx, 0xfffffe00
or edx, 0x100
mov r11d, 0xf0
cmp eax, r11d
cmovae edx, esi
mov eax, edx
shr eax, 9
and eax, edi
add eax, r10d
mov r10, qword [rsp + 0x90]
mov esi, edx
and esi, 0xfffc01ff
or esi, 0x20400
cmp eax, r11d
cmovae esi, edx
cmp byte [r12 + 0x119c], 0
je 0x1400510cd
mov rax, qword [rsp + 0xa8]
mov dl, byte [rax + rbx*4 - 8]
mov dword [rsp + 0x78], edx
mov dl, byte [rax + rbx*4 - 7]
mov dword [rsp + 0x50], edx
mov r15b, byte [rax + rbx*4 - 6]
mov r11b, byte [rax + rbx*4 - 5]
mov dl, byte [rax + rbx*4 - 4]
mov dword [rsp + 0x58], edx
mov dl, byte [rax + rbx*4 - 3]
mov dword [rsp + 0x68], edx
mov dl, byte [rax + rbx*4 - 2]
mov dword [rsp + 0x74], edx
mov al, byte [rax + rbx*4 - 1]
mov dword [rsp + 0x98], eax
jmp 0x140051106
xor r11d, r11d
xor r15d, r15d
mov dword [rsp + 0x50], 0
mov dword [rsp + 0x78], 0
mov dword [rsp + 0x98], 0
mov dword [rsp + 0x74], 0
mov dword [rsp + 0x68], 0
mov dword [rsp + 0x58], 0
mov edi, r14d
and edi, 0xffffff00
cmp edi, 0xda00
je 0x140051159
cmp edi, 0xd900
je 0x140051140
cmp edi, 0xd800
jne 0x140051171
mov rax, qword [r12 + 0x10c8]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x214
jmp 0x14005116d
mov rax, qword [r12 + 0x10c8]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x614
jmp 0x14005116d
mov rax, qword [r12 + 0x10c8]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x14
movzx r14d, word [rdi]
dec ecx
movsxd rax, ecx
cmp rbp, rax
jge 0x140051195
mov eax, esi
or eax, 0x400000
mov rcx, qword [rsp + 0xa8]
cmp dword [rcx + rbx*4 + 4], 0xdfff
cmove esi, eax
mov rdi, qword [rsp + 0xb0]
mov eax, dword [r12 + 0xe6c]
and eax, 0xfffffffe
cmp eax, 2
mov dword [rsp + 0x80], r15d
jne 0x140051266
cmp dword [r12 + 0xe70], 0
mov rcx, qword [r12 + 0xe78]
je 0x140051210
cmp dword [rsp + 0x54], ecx
jl 0x140051266
shr rcx, 0x20
cmp r8d, ecx
jl 0x140051266
mov rdi, qword [r12 + 0xe80]
mov r15d, esi
xor r15d, r9d
xor ecx, ecx
cmp dword [rsp + 0x54], edi
jg 0x1400513f4
shr rdi, 0x20
cmp r8d, edi
mov rdi, qword [rsp + 0xb0]
jl 0x14005125f
jmp 0x14005126e
mov rax, rcx
shr rax, 0x20
xor edx, edx
cmp r8d, eax
setge dl
xor eax, eax
cmp dword [rsp + 0x54], ecx
setg al
cmovne edx, eax
cmp dl, 1
jne 0x140051266
mov rax, qword [r12 + 0xe80]
mov rcx, rax
shr rcx, 0x20
xor edx, edx
cmp r8d, ecx
setl dl
xor ecx, ecx
cmp dword [rsp + 0x54], eax
setl cl
cmovne edx, ecx
mov r15d, esi
xor r15d, r9d
xor ecx, ecx
test dl, dl
je 0x14005126e
mov ecx, 0x100000
jmp 0x14005126e
mov r15d, esi
xor r15d, r9d
xor ecx, ecx
xor r15d, ecx
bt esi, 0x15
jae 0x1400512b6
cmp byte [r12 + 0xfd], 0
je 0x1400512b6
cmp byte [r12 + 0x180], 0
mov rsi, qword [rsp + 0x60]
je 0x1400512ad
cmp byte [r12 + 0xfc], 0
je 0x1400512ad
mov rax, qword [r12 + 0x10c8]
movzx r14d, word [rax + 0x254]
and r15d, 0xffdfffff
jmp 0x1400512bb
mov rsi, qword [rsp + 0x60]
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
cmp r14d, dword [rax + rbx*4 - 0x10]
jne 0x1400512ea
mov eax, dword [rax + rbx*4 - 0xc]
mov ecx, eax
and ecx, 0xf7fffff
cmp r15d, ecx
jne 0x1400512ea
and eax, 0x800000
or r15d, eax
jmp 0x140051342
bt r15d, 0x16
jb 0x140051342
mov rcx, qword [r12 + 0x10b8]
mov rax, qword [rcx]
mov edx, r14d
mov r12, rbp
mov rbp, r14
mov r14, rdi
mov edi, r11d
call qword [rax + 0x20]
mov r11d, edi
mov rdi, r14
mov r14, rbp
mov rbp, r12
mov r12, qword [rsp + 0xe8]
mov r10, qword [rsp + 0x90]
mov r9d, dword [rsp + 0xc0]
mov ecx, r15d
or ecx, 0x800000
cmp eax, 2
cmove r15d, ecx
cmp rsi, qword [rsp + 0xd8]
jne 0x140051373
cmp rdi, rbp
jne 0x140051373
mov rax, qword [rsp + 0xd0]
or r15d, eax
mov dword [r12 + 0x38], eax
mov dword [r12 + 0x30], edi
mov rax, qword [rsp + 0xf0]
mov dword [r12 + 0x34], eax
mov rax, qword [rsp + 0xb8]
mov dword [rax + rbx*4 - 0xc], r15d
mov dword [rax + rbx*4 - 0x10], r14d
mov r14, rax
mov eax, dword [rsp + 0x78]
mov byte [r14 + rbx*4 - 8], al
mov eax, dword [rsp + 0x50]
mov byte [r14 + rbx*4 - 7], al
mov eax, dword [rsp + 0x80]
mov byte [r14 + rbx*4 - 6], al
mov byte [r14 + rbx*4 - 5], r11b
mov eax, dword [rsp + 0x58]
mov byte [r14 + rbx*4 - 4], al
mov eax, dword [rsp + 0x68]
mov byte [r14 + rbx*4 - 3], al
mov eax, dword [rsp + 0x74]
mov byte [r14 + rbx*4 - 2], al
mov eax, dword [rsp + 0x98]
mov byte [r14 + rbx*4 - 1], al
mov dword [r14 + rbx*4], 0
inc rbp
movsxd rcx, dword [r12 + 0x178]
add rbx, 5
cmp rbp, rcx
jl 0x140050fe5
jmp 0x140051401
mov rdi, qword [rsp + 0xb0]
jmp 0x14005126e
test ecx, ecx
jle 0x1400514e6
xor eax, eax
xor r9d, r9d
xor r8d, r8d
mov ebp, r8d
mov rbx, qword [r12 + 0x28]
mov rbx, qword [rbx + rsi*8]
mov rbx, qword [rbx + 0x18]
lea rdi, [rax*4]
lea rsi, [rdi + rdi*4]
mov edx, dword [rbx + rsi]
mov edi, dword [rbx + rsi + 4]
test edi, edi
mov r8d, eax
cmovns r8d, ebp
movzx r9d, r9b
mov ebp, 0
cmovs r9d, ebp
cmp edx, dword [r14 + rsi]
jne 0x140051470
mov edx, edi
and edx, 0xfffffff
lea rbp, [rax + rax*4]
cmp edx, dword [r14 + rbp*4 + 4]
jne 0x140051470
test r9b, 1
mov rsi, qword [rsp + 0x60]
jne 0x1400514c1
jmp 0x1400514d7
test r9b, 1
jne 0x1400514bc
movsxd rcx, r8d
mov r9b, 1
cmp rax, rcx
jle 0x1400514bc
lea rdx, [rcx + rcx*4]
lea rdi, [rdx*4 + 4]
mov rsi, qword [rsp + 0x60]
or dword [rbx + rdi], 0x3ffff
inc rcx
mov rdx, qword [r12 + 0x28]
mov rdx, qword [rdx + rsi*8]
mov rbx, qword [rdx + 0x18]
add rdi, 0x14
cmp rax, rcx
jne 0x140051492
lea rcx, [rax + rax*4]
mov edi, dword [rbx + rcx*4 + 4]
jmp 0x1400514c1
mov rsi, qword [rsp + 0x60]
lea rcx, [rax + rax*4]
or edi, 0x3ffff
mov dword [rbx + rcx*4 + 4], edi
mov ecx, dword [r12 + 0x178]
inc rax
movsxd rdx, ecx
cmp rax, rdx
jl 0x140051411
mov rax, qword [rsp + 0xc8]
movzx eax, word [rax]
mov rcx, qword [r12 + 0x28]
mov rcx, qword [rcx + rsi*8]
cmp ax, word [rcx]
setne dl
mov word [rcx], ax
cmp dword [r12 + 0x178], 0
jle 0x140051d72
mov al, byte [r12 + 0x9b]
mov byte [rsp + 0x49], al
mov al, byte [r12 + 0x9a]
mov byte [rsp + 0x4a], al
mov al, byte [r12 + 0x99]
mov byte [rsp + 0x4b], al
mov al, byte [r12 + 0x98]
mov byte [rsp + 0x4c], al
mov al, byte [r12 + 0x97]
mov byte [rsp + 0x4d], al
mov al, byte [r12 + 0x96]
mov byte [rsp + 0x4e], al
mov al, byte [r12 + 0x94]
mov byte [rsp + 0x54], al
mov al, byte [r12 + 0x95]
mov byte [rsp + 0x4f], al
xor esi, esi
mov dword [rsp + 0xa4], 0
mov eax, edx
xor r15d, r15d
mov dword [rsp + 0x8c], 0
mov dword [rsp + 0xc4], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x68], edx
mov dword [rsp + 0x74], eax
mov qword [rsp + 0x78], rsi
movsxd rsi, esi
lea rax, [rsi*4]
lea rdi, [rax + rax*4]
mov ebp, dword [r14 + rdi + 4]
mov rax, qword [r12 + 0x28]
mov rcx, qword [rsp + 0x60]
mov rax, qword [rax + rcx*8]
mov r10, qword [rax + 0x18]
mov r9d, dword [r10 + rdi + 4]
mov eax, r9d
xor eax, ebp
bt eax, 0x16
mov ecx, dword [rsp + 0x74]
movzx ecx, cl
mov eax, 1
cmovb ecx, eax
mov dword [rsp + 0x74], ecx
mov eax, dword [r14 + rdi]
mov qword [rsp + 0x80], rax
mov dword [rsp + 0x50], ebp
mov eax, ebp
xor eax, dword [rsp + 0x58]
test dword [r12 + 0x1090], eax
setne al
mov r8b, byte [r14 + rdi + 8]
mov cl, byte [rsp + 0x54]
and cl, 1
cmp r8b, cl
jne 0x14005167c
lea rcx, [rsi + rsi*4]
mov bl, byte [rsp + 0x4f]
cmp byte [r14 + rcx*4 + 9], bl
jne 0x14005167c
mov bl, byte [rsp + 0x4e]
cmp byte [r14 + rcx*4 + 0xa], bl
jne 0x14005167c
mov bl, byte [rsp + 0x4d]
cmp byte [r14 + rcx*4 + 0xb], bl
jne 0x14005167c
mov bl, byte [rsp + 0x4c]
and bl, 1
cmp byte [r14 + rcx*4 + 0xc], bl
jne 0x14005167c
mov bl, byte [rsp + 0x4b]
cmp byte [r14 + rcx*4 + 0xd], bl
jne 0x14005167c
mov bl, byte [rsp + 0x4a]
cmp byte [r14 + rcx*4 + 0xe], bl
jne 0x14005167c
mov bl, byte [rsp + 0x49]
cmp byte [r14 + rcx*4 + 0xf], bl
je 0x14005167e
mov al, 1
mov rcx, qword [rsp + 0x80]
add ecx, 0xffffdc46
cmp ecx, 4
jb 0x1400516b3
mov rcx, qword [rsp + 0x78]
test ecx, ecx
jle 0x1400516b5
dec ecx
movsxd rcx, ecx
lea rcx, [rcx + rcx*4]
mov ecx, dword [r14 + rcx*4]
mov ebp, 0xffffdc46
add ecx, ebp
cmp ecx, 3
ja 0x1400516b5
mov al, 1
mov rbx, qword [rsp + 0x80]
mov ecx, ebx
and ecx, 0xfffffc00
mov ebp, ebx
and ebp, 0xfffffe00
and ebx, 0xffffff00
cmp ebp, 0xf000
mov ebp, 0
cmove ebp, ebx
cmp ecx, 0xd800
cmove ebp, ebx
cmp ebp, dword [rsp + 0xc4]
movzx eax, al
mov ecx, 1
cmovne eax, ecx
mov rcx, qword [rsp + 0xa8]
lea rbx, [rcx + rdi]
lea rdx, [rsi + rsi*4]
cmp dword [rcx + rdx*4 + 0x10], 0
mov rsi, qword [rsp + 0x78]
je 0x140051797
mov al, 1
cmp dword [rbx], 0xdffe
jne 0x140051726
mov al, 1
jmp 0x14005173d
cmp esi, 2
jl 0x14005173d
cmp dword [rbx - 0x14], 0xdfff
jne 0x14005173d
cmp dword [rbx - 0x28], 0xdffe
je 0x140051722
mov qword [rsp + 0x90], rdx
mov qword [rsp + 0x98], rbx
mov rcx, qword [r12 + 0x10c8]
mov bl, byte [rcx + 8]
mov ecx, dword [rsp + 0x74]
mov r14d, ecx
and r14b, 1
mov ecx, ebx
or cl, r14b
mov qword [rsp + 0xe0], rdi
je 0x1400517ae
test al, al
jne 0x1400517e5
mov eax, dword [rsp + 0x68]
mov r14d, eax
mov r9d, dword [rsp + 0x50]
mov rdi, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x90]
jmp 0x140051966
test esi, esi
jle 0x14005171a
cmp dword [rbx - 4], 0
jne 0x140051718
jmp 0x14005171a
and r9d, 0xfffffff
cmp r9d, dword [rsp + 0x50]
jne 0x1400517d2
mov rcx, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x90]
cmp dword [r10 + rdx*4], ecx
je 0x1400517e5
test byte [rsp + 0x68], 1
sete cl
cmp r15d, 1
sete dl
test dl, cl
je 0x140051772
mov ecx, dword [rsp + 0x68]
mov r9d, ecx
mov al, 1
and r9b, al
test r15d, r15d
jle 0x1400518dc
or cl, byte [rsp + 0xa4]
and cl, al
mov rdi, qword [rsp + 0xb8]
je 0x1400518e4
mov rax, qword [rsp + 0xe0]
add rax, rdi
add rax, 8
mov qword [rsp + 0x68], rax
movzx eax, byte [rsp + 0x4d]
shl rax, 0x18
movzx ecx, byte [rsp + 0x4e]
shl rcx, 0x10
or rcx, rax
movzx eax, byte [rsp + 0x4f]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x54]
or rcx, rax
movzx eax, byte [rsp + 0x49]
shl eax, 0x18
movzx edx, byte [rsp + 0x4a]
shl edx, 0x10
or edx, eax
movzx eax, byte [rsp + 0x4b]
shl eax, 8
or eax, edx
movzx edx, byte [rsp + 0x4c]
or edx, eax
shl rdx, 0x20
or rdx, rcx
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x38], rdx
mov rcx, r12
mov rdx, qword [rsp + 0xc8]
mov r8d, dword [rsp + 0x8c]
mov rsi, qword [rsp + 0x60]
mov ebx, r9d
mov r9d, esi
call fcn.14005c029
mov r9d, ebx
mov rax, qword [rsp + 0x68]
mov r8b, byte [rax]
mov rax, qword [r12 + 0x10c8]
mov bl, byte [rax + 8]
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rsi, qword [rsp + 0x78]
mov r10, qword [rax + 0x18]
jmp 0x1400518e4
mov rdi, qword [rsp + 0xb8]
mov rdx, qword [rsp + 0x90]
mov al, byte [rdi + rdx*4 + 9]
mov byte [rsp + 0x4f], al
mov al, byte [rdi + rdx*4 + 0xa]
mov byte [rsp + 0x4e], al
mov al, byte [rdi + rdx*4 + 0xb]
mov byte [rsp + 0x4d], al
mov al, byte [rdi + rdx*4 + 0xc]
mov byte [rsp + 0x4c], al
mov al, byte [rdi + rdx*4 + 0xd]
mov byte [rsp + 0x4b], al
mov al, byte [rdi + rdx*4 + 0xe]
mov byte [rsp + 0x4a], al
mov al, byte [rdi + rdx*4 + 0xf]
mov byte [rsp + 0x49], al
test bl, bl
movzx eax, byte [rsp + 0xa4]
movzx ecx, r9b
cmove ecx, eax
mov dword [rsp + 0xa4], ecx
xor r15d, r15d
mov r9d, dword [rsp + 0x50]
mov dword [rsp + 0x58], r9d
mov dword [rsp + 0xc4], ebp
mov eax, esi
mov dword [rsp + 0x8c], esi
mov byte [rsp + 0x54], r8b
mov rdi, qword [rsp + 0x80]
mov rax, qword [rsp + 0xa8]
lea rsi, [rax + rdx*4]
add rsi, 0x10
lea rcx, [r10 + rdx*4]
mov rdx, qword [rsp + 0x98]
mov r8d, edi
call fcn.14005c1bf
movzx ecx, r14b
mov byte [rsp + 0x5f], al
test al, al
mov eax, 1
cmove ecx, eax
mov dword [rsp + 0x68], ecx
movsxd r14, r15d
xor eax, eax
mov byte [rsp + 0x28], al
mov qword [rsp + 0x20], 2
mov r8d, 2
mov rcx, r13
lea rdx, [rsp + 0xf8]
mov r9, r14
call fcn.1400118ba
mov r13, rax
lea eax, [rdi - 0x10001]
cmp eax, 0xffffe
ja 0x140051a03
lea ecx, [rdi - 0x10000]
mov eax, ecx
shr eax, 0xa
add eax, 0xffffd800
lea r15d, [r14 + 1]
and ecx, 0x3ff
or ecx, 0xdc00
mov word [r13 + r14*2 + 2], cx
jmp 0x140051a05
mov eax, edi
mov word [r13 + r14*2], ax
inc r15d
mov eax, dword [rsi]
test eax, eax
je 0x140051b28
mov rsi, qword [rsp + 0x98]
mov r14, qword [rsp + 0xb8]
cdqe
lea rdi, [rax + rax*4]
mov ebx, dword [rsi + rdi*4]
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x140051a7b
cmp eax, 0xd900
je 0x140051a64
cmp eax, 0xd800
jne 0x140051a91
mov rax, qword [r12 + 0x10c8]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x214
jmp 0x140051a8e
mov rax, qword [r12 + 0x10c8]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x614
jmp 0x140051a8e
mov rax, qword [r12 + 0x10c8]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x14
movzx ebx, word [rax]
movsxd rbp, r15d
mov byte [rsp + 0x28], 0
mov qword [rsp + 0x20], 2
mov r8d, 2
mov rcx, r13
lea rdx, [rsp + 0xf8]
mov r9, rbp
call fcn.1400118ba
mov r13, rax
lea eax, [rbx - 0x10001]
cmp eax, 0xffffe
ja 0x140051af3
add ebx, 0xffff0000
mov eax, ebx
shr eax, 0xa
add eax, 0xffffd800
lea r15d, [rbp + 1]
and ebx, 0x3ff
or ebx, 0xdc00
mov word [r13 + rbp*2 + 2], bx
jmp 0x140051af5
mov eax, ebx
lea rsi, [rsi + rdi*4]
mov word [r13 + rbp*2], ax
inc r15d
mov eax, dword [rsi + 0x10]
test eax, eax
jne 0x140051a28
or dword [rsp + 0x58], 0x80000000
mov rsi, qword [rsp + 0x60]
mov eax, dword [rsp + 0x50]
mov rdi, qword [rsp + 0x80]
jmp 0x140051b39
mov r14, qword [rsp + 0xb8]
mov rsi, qword [rsp + 0x60]
mov eax, dword [rsp + 0x50]
cmp byte [rsp + 0x5f], 0
jne 0x140051c09
mov rax, qword [r12 + 0x28]
mov rcx, qword [rax + rsi*8]
mov rbx, qword [rsp + 0x78]
mov edx, ebx
mov r8, qword [rsp + 0x98]
call fcn.14005b011
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov rdx, qword [rsp + 0xe0]
mov dword [rax + rdx], edi
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov ecx, dword [rsp + 0x50]
mov dword [rax + rdx + 4], ecx
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov cl, byte [rsp + 0x54]
mov byte [rax + rdx + 8], cl
mov cl, byte [rsp + 0x4f]
mov byte [rax + rdx + 9], cl
mov cl, byte [rsp + 0x4e]
mov byte [rax + rdx + 0xa], cl
mov cl, byte [rsp + 0x4d]
mov byte [rax + rdx + 0xb], cl
mov cl, byte [rsp + 0x4c]
mov byte [rax + rdx + 0xc], cl
mov cl, byte [rsp + 0x4b]
mov byte [rax + rdx + 0xd], cl
mov cl, byte [rsp + 0x4a]
mov byte [rax + rdx + 0xe], cl
mov cl, byte [rsp + 0x49]
mov byte [rax + rdx + 0xf], cl
mov eax, dword [rsp + 0x50]
cmp dword [rsp + 0x8c], ebx
jne 0x140051c09
mov rax, qword [r12 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov rcx, qword [rsp + 0x90]
or dword [rax + rcx*4 + 4], 0x80000000
mov eax, dword [rsp + 0x50]
bt eax, 0x16
jb 0x140051c19
mov rsi, qword [rsp + 0x78]
jmp 0x140051cbf
mov rax, qword [rsp + 0x78]
inc eax
mov rbx, rax
cmp eax, dword [r12 + 0x178]
jge 0x140051cbc
add qword [rsp + 0x98], 0x14
cmp rsi, qword [rsp + 0xd8]
jne 0x140051c66
cmp ebx, dword [rsp + 0xb0]
jne 0x140051c66
lea rcx, str.__i__our_curs_y__j__our_curs_x_
lea rdx, str..._terminal.c
mov r8d, 0x1695
call fcn.140088ff4
mov rax, qword [r12 + 0x28]
mov rbp, qword [rax + rsi*8]
mov rsi, rbx
movsxd rax, esi
lea rcx, [rax + rax*4]
shl rcx, 2
add rcx, qword [rbp + 0x18]
mov rdi, qword [rsp + 0x98]
mov r8d, dword [rdi]
mov r9d, dword [rdi + 4]
mov rdx, rdi
call fcn.14005c1bf
mov ecx, dword [rsp + 0x68]
movzx ecx, cl
test al, al
mov eax, 1
cmove ecx, eax
mov dword [rsp + 0x68], ecx
mov rcx, rbp
mov edx, esi
mov r8, rdi
call fcn.14005b011
jmp 0x140051cbf
mov rsi, rbx
inc esi
cmp esi, dword [r12 + 0x178]
jl 0x1400515aa
test byte [rsp + 0x68], 1
mov rdi, qword [rsp + 0xc8]
je 0x140051d7c
test r15d, r15d
jle 0x140051d7c
movzx eax, byte [rsp + 0x4d]
shl rax, 0x18
movzx ecx, byte [rsp + 0x4e]
shl rcx, 0x10
or rcx, rax
movzx eax, byte [rsp + 0x4f]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x54]
or rcx, rax
movzx eax, byte [rsp + 0x49]
shl eax, 0x18
movzx edx, byte [rsp + 0x4a]
shl edx, 0x10
or edx, eax
movzx eax, byte [rsp + 0x4b]
shl eax, 8
or eax, edx
movzx edx, byte [rsp + 0x4c]
or edx, eax
shl rdx, 0x20
or rdx, rcx
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x38], rdx
mov rcx, r12
mov rdx, rdi
mov r8d, dword [rsp + 0x8c]
mov rsi, qword [rsp + 0x60]
mov r9d, esi
call fcn.14005c029
jmp 0x140051d81
mov rdi, qword [rsp + 0xc8]
jmp 0x140051d81
mov rsi, qword [rsp + 0x60]
cmp byte [rdi + 0xc], 0
je 0x140051d98
mov rcx, qword [rdi + 0x18]
call fcn.1400118b0
mov rcx, rdi
call fcn.1400118b0
inc rsi
movsxd rax, dword [r12 + 0x174]
cmp rsi, rax
jl 0x140050f52
mov rcx, r14
call fcn.1400118b0
mov rcx, r13
call fcn.1400118b0
mov rcx, qword [rsp + 0x100]
xor rcx, rsp
call fcn.14007d5e0
nop
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret