Function at 0x140056091
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 r15, rcx
mov rax, qword [0x1400d80e0]
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.140012298
mov r13, rax
movsxd rcx, dword [r15 + 0x178]
mov edx, 0x14
xor r8d, r8d
call fcn.140012298
mov cl, byte [r15 + 0xf2]
cmp cl, byte [r15 + 0x181]
mov r14, rax
setne r12b
cmp byte [r15 + 0xf8], 0
je 0x140056162
cmp byte [r15 + 0x180], 0
je 0x140056142
mov eax, 0x40000000
cmp byte [r15 + 0xfb], 0
jne 0x140056147
xor eax, eax
cmp byte [r15 + 0x116e], 0
sete al
shl eax, 0x1e
jmp 0x140056147
mov eax, 0x20000000
mov ecx, eax
or ecx, 0x10000000
cmp byte [r15 + 0xe2], 0
cmove ecx, eax
mov qword [rsp + 0xd0], rcx
movsxd rdx, dword [r15 + 0xc8]
movsxd rax, dword [r15 + 0x20]
mov rbx, rdx
sub rbx, rax
mov rcx, r15
mov r8d, 0x1673
xor r9d, r9d
call fcn.14005833c
mov rbp, rax
mov esi, dword [r15 + 0xcc]
mov rcx, r15
mov rdx, rax
mov r8d, ebx
call fcn.14005af18
test rax, rax
je 0x1400561bc
movsxd rcx, esi
mov rdx, qword [r15 + 0x1130]
mov rdi, rbx
shl rdi, 5
mov rdx, qword [rdx + rdi + 0x10]
mov esi, dword [rdx + rcx*4]
jmp 0x1400561c0
mov rax, qword [rbp + 0x18]
test esi, esi
jle 0x1400561d8
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 0x1400561f1
mov rcx, qword [rbp + 0x18]
call fcn.140012312
mov rcx, rbp
call fcn.140012312
mov ecx, dword [r15 + 0x34]
test ecx, ecx
mov esi, 0
mov qword [rsp + 0x98], rdi
js 0x14005627d
mov eax, dword [r15 + 0x30]
cmp ecx, ebx
jne 0x140056220
mov rdx, qword [rsp + 0xd0]
cmp dword [r15 + 0x38], edx
jne 0x140056220
cmp eax, edi
je 0x14005627d
movsxd rdx, eax
mov rbp, qword [r15 + 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 0x140056250
cmp dword [rbp], 0xdfff
jne 0x140056250
or dword [rbp - 0x10], 0x3ffff
mov eax, dword [r15 + 0x30]
mov edi, dword [r15 + 0x178]
dec edi
cmp eax, edi
jge 0x14005626d
cmp dword [rbp + 0x14], 0xdfff
jne 0x14005626d
or dword [rbp + 0x18], 0x3ffff
or dword [rcx + rdx*4 + 4], 0x3ffff
mov dword [r15 + 0x38], 0
mov qword [r15 + 0x30], 0xffffffffffffffff
cmp dword [r15 + 0x174], 0
jle 0x1400570c4
mov sil, r12b
shl esi, 0x14
mov dword [rsp + 0xa8], esi
mov qword [rsp + 0xf0], rbx
mov eax, ebx
mov qword [rsp + 0xd8], rax
xor r12d, r12d
mov qword [rsp + 0xb0], r14
mov qword [rsp + 0xe8], r15
mov edx, dword [r15 + 0x20]
add edx, r12d
mov rcx, r15
mov dword [rsp + 0x58], edx
mov r8d, 0x16a9
xor r9d, r9d
call fcn.14005833c
mov rsi, rax
mov rcx, r15
mov rdx, rax
mov r8d, r12d
call fcn.14005af18
mov qword [rsp + 0xb8], rax
test rax, rax
mov qword [rsp + 0xc8], rsi
je 0x14005631c
mov rax, qword [r15 + 0x1130]
mov rcx, r12
shl rcx, 5
mov r11, qword [rax + rcx + 0x18]
jmp 0x14005632b
mov rax, qword [rsi + 0x18]
mov qword [rsp + 0xb8], rax
xor r11d, r11d
mov ecx, dword [r15 + 0x178]
test ecx, ecx
mov qword [rsp + 0x70], r12
jle 0x140056826
mov ebx, 4
xor edi, edi
mov r9, rdi
test r11, r11
je 0x140056354
mov r8d, dword [r11 + rdi*4]
jmp 0x140056357
mov r8d, edi
mov rsi, qword [rsp + 0xb8]
mov eax, dword [rsi + rbx*4 - 0xc]
mov ebp, eax
and ebp, 0xfffc0000
or ebp, 0x20500
cmp byte [r15 + 0x1141], 0
cmovne ebp, eax
cmp byte [r15 + 0x11a3], 0
jne 0x1400563ca
mov eax, ebp
mov edi, 0x1ff
and eax, edi
add eax, 0xfffffff0
mov edx, ebp
and edx, 0xfffffe00
or edx, 0x100
mov r10d, 0xf0
cmp eax, r10d
cmovae edx, ebp
mov eax, edx
shr eax, 9
and eax, edi
add eax, 0xfffffff0
mov ebp, edx
and ebp, 0xfffc01ff
or ebp, 0x20400
cmp eax, r10d
cmovae ebp, edx
cmp byte [r15 + 0x11a4], 0
je 0x14005641c
mov al, byte [rsi + rbx*4 - 8]
mov dword [rsp + 0x5c], eax
mov al, byte [rsi + rbx*4 - 7]
mov dword [rsp + 0x78], eax
mov al, byte [rsi + rbx*4 - 6]
mov dword [rsp + 0x60], eax
mov r10b, byte [rsi + rbx*4 - 5]
mov al, byte [rsi + rbx*4 - 4]
mov dword [rsp + 0x6c], eax
mov al, byte [rsi + rbx*4 - 3]
mov dword [rsp + 0x80], eax
mov al, byte [rsi + rbx*4 - 2]
mov dword [rsp + 0x90], eax
mov al, byte [rsi + rbx*4 - 1]
mov dword [rsp + 0xa0], eax
jmp 0x140056460
xor r10d, r10d
mov dword [rsp + 0x60], 0
mov dword [rsp + 0x78], 0
mov dword [rsp + 0x5c], 0
mov dword [rsp + 0xa0], 0
mov dword [rsp + 0x90], 0
mov dword [rsp + 0x80], 0
mov dword [rsp + 0x6c], 0
mov r14d, dword [rsi + rbx*4 - 0x10]
mov edi, r14d
and edi, 0xffffff00
cmp edi, 0xda00
je 0x1400564b6
cmp edi, 0xd900
je 0x14005649e
cmp edi, 0xd800
jne 0x1400564cd
mov rax, qword [r15 + 0x10d0]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x214
jmp 0x1400564c9
mov rax, qword [r15 + 0x10d0]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x614
jmp 0x1400564c9
mov rax, qword [r15 + 0x10d0]
movzx edx, r14b
lea rdi, [rax + rdx*2]
add rdi, 0x14
movzx r14d, word [rdi]
dec ecx
movsxd rax, ecx
cmp r9, rax
jge 0x1400564f1
mov eax, ebp
or eax, 0x400000
mov rcx, qword [rsp + 0xb8]
cmp dword [rcx + rbx*4 + 4], 0xdfff
cmove ebp, eax
mov r12, qword [rsp + 0x98]
mov eax, dword [r15 + 0xe74]
and eax, 0xfffffffe
cmp eax, 2
jne 0x1400565c4
cmp dword [r15 + 0xe78], 0
mov rcx, qword [r15 + 0xe80]
je 0x140056566
cmp dword [rsp + 0x58], ecx
jl 0x1400565c4
shr rcx, 0x20
cmp r8d, ecx
jl 0x1400565c4
mov rdi, qword [r15 + 0xe88]
mov esi, ebp
xor esi, dword [rsp + 0xa8]
xor ecx, ecx
cmp dword [rsp + 0x58], edi
jg 0x140056724
shr rdi, 0x20
cmp r8d, edi
mov r12, qword [rsp + 0x98]
mov rdi, r9
jl 0x1400565bd
jmp 0x1400565d2
mov rax, rcx
shr rax, 0x20
xor edx, edx
cmp r8d, eax
setge dl
xor eax, eax
cmp dword [rsp + 0x58], ecx
setg al
cmovne edx, eax
cmp dl, 1
jne 0x1400565c4
mov rdi, r14
mov rax, qword [r15 + 0xe88]
mov rcx, rax
shr rcx, 0x20
xor edx, edx
cmp r8d, ecx
setl dl
xor ecx, ecx
cmp dword [rsp + 0x58], eax
setl cl
cmovne edx, ecx
mov esi, ebp
xor esi, dword [rsp + 0xa8]
xor ecx, ecx
test dl, dl
mov rdi, r9
je 0x1400565d2
mov ecx, 0x100000
jmp 0x1400565d2
mov esi, ebp
xor esi, dword [rsp + 0xa8]
xor ecx, ecx
mov rdi, r9
xor esi, ecx
bt ebp, 0x15
jae 0x14005660d
cmp byte [r15 + 0xfd], 0
je 0x14005660d
cmp byte [r15 + 0x180], 0
je 0x140056607
cmp byte [r15 + 0xfc], 0
je 0x140056607
mov rax, qword [r15 + 0x10d0]
movzx r14d, word [rax + 0x254]
and esi, 0xffdfffff
mov rax, qword [r15 + 0x28]
mov rcx, qword [rsp + 0x70]
mov rax, qword [rax + rcx*8]
mov rax, qword [rax + 0x18]
cmp r14d, dword [rax + rbx*4 - 0x10]
jne 0x14005663e
mov eax, dword [rax + rbx*4 - 0xc]
mov ecx, eax
and ecx, 0xf7fffff
cmp esi, ecx
jne 0x14005663e
and eax, 0x800000
or esi, eax
jmp 0x140056676
bt esi, 0x16
jb 0x140056676
mov rcx, qword [r15 + 0x10c0]
mov rax, qword [rcx]
mov edx, r14d
mov rbp, r11
mov r15d, r10d
call qword [rax + 0x20]
mov r10d, r15d
mov r15, qword [rsp + 0xe8]
mov r11, rbp
mov ecx, esi
or ecx, 0x800000
cmp eax, 2
cmove esi, ecx
mov ecx, dword [rsp + 0x60]
mov rax, qword [rsp + 0x70]
cmp rax, qword [rsp + 0xd8]
jne 0x1400566ac
cmp r12, rdi
jne 0x1400566ac
mov rax, qword [rsp + 0xd0]
or esi, eax
mov dword [r15 + 0x38], eax
mov dword [r15 + 0x30], r12d
mov rax, qword [rsp + 0xf0]
mov dword [r15 + 0x34], eax
mov rax, qword [rsp + 0xb0]
mov dword [rax + rbx*4 - 0xc], esi
mov dword [rax + rbx*4 - 0x10], r14d
mov edx, dword [rsp + 0x5c]
mov byte [rax + rbx*4 - 8], dl
mov edx, dword [rsp + 0x78]
mov byte [rax + rbx*4 - 7], dl
mov byte [rax + rbx*4 - 6], cl
mov byte [rax + rbx*4 - 5], r10b
mov ecx, dword [rsp + 0x6c]
mov byte [rax + rbx*4 - 4], cl
mov ecx, dword [rsp + 0x80]
mov byte [rax + rbx*4 - 3], cl
mov ecx, dword [rsp + 0x90]
mov byte [rax + rbx*4 - 2], cl
mov ecx, dword [rsp + 0xa0]
mov byte [rax + rbx*4 - 1], cl
mov dword [rax + rbx*4], 0
inc rdi
movsxd rcx, dword [r15 + 0x178]
add rbx, 5
cmp rdi, rcx
mov r12, qword [rsp + 0x70]
jl 0x140056346
jmp 0x140056731
mov r12, qword [rsp + 0x98]
jmp 0x1400565cf
test ecx, ecx
mov r14, qword [rsp + 0xb0]
jle 0x140056826
xor eax, eax
xor r9d, r9d
xor r8d, r8d
mov ebp, r8d
mov rbx, qword [r15 + 0x28]
mov rbx, qword [rbx + r12*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 0x1400567a2
mov edx, edi
and edx, 0xfffffff
lea rbp, [rax + rax*4]
cmp edx, dword [r14 + rbp*4 + 4]
jne 0x1400567a2
test r9b, 1
jne 0x140056802
jmp 0x140056817
test r9b, 1
jne 0x140056802
movsxd rcx, r8d
mov r9b, 1
cmp rax, rcx
jle 0x140056802
lea rdi, [rcx + rcx*4]
or dword [rbx + rdi*4 + 4], 0x3ffff
inc rcx
cmp rcx, rax
je 0x1400567ee
lea rbx, [rdi*4 + 0x18]
mov rdx, qword [r15 + 0x28]
mov rdx, qword [rdx + r12*8]
mov rdx, qword [rdx + 0x18]
or dword [rdx + rbx], 0x3ffff
inc rcx
add rbx, 0x14
cmp rax, rcx
jne 0x1400567cf
mov rcx, qword [r15 + 0x28]
mov rcx, qword [rcx + r12*8]
mov rbx, qword [rcx + 0x18]
lea rcx, [rax + rax*4]
mov edi, dword [rbx + rcx*4 + 4]
lea rcx, [rax + rax*4]
or edi, 0x3ffff
mov dword [rbx + rcx*4 + 4], edi
mov ecx, dword [r15 + 0x178]
inc rax
movsxd rdx, ecx
cmp rax, rdx
jl 0x140056749
mov rax, qword [rsp + 0xc8]
movzx eax, word [rax]
mov rcx, qword [r15 + 0x28]
mov rcx, qword [rcx + r12*8]
cmp ax, word [rcx]
setne dl
mov word [rcx], ax
cmp dword [r15 + 0x178], 0
jle 0x14005708b
mov al, byte [r15 + 0x9b]
mov byte [rsp + 0x4f], al
mov al, byte [r15 + 0x9a]
mov byte [rsp + 0x50], al
mov al, byte [r15 + 0x99]
mov byte [rsp + 0x51], al
mov al, byte [r15 + 0x98]
mov byte [rsp + 0x52], al
mov al, byte [r15 + 0x97]
mov byte [rsp + 0x53], al
mov al, byte [r15 + 0x96]
mov byte [rsp + 0x54], al
mov al, byte [r15 + 0x94]
mov byte [rsp + 0x56], al
mov al, byte [r15 + 0x95]
mov byte [rsp + 0x55], al
xor esi, esi
mov dword [rsp + 0xac], 0
xor r12d, r12d
mov dword [rsp + 0x8c], 0
mov dword [rsp + 0xc4], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x60], edx
mov eax, edx
mov dword [rsp + 0x6c], eax
movsxd rdx, esi
lea rax, [rdx*4]
lea rbp, [rax + rax*4]
mov edi, dword [r14 + rbp + 4]
mov rax, qword [r15 + 0x28]
mov rcx, qword [rsp + 0x70]
mov rax, qword [rax + rcx*8]
mov r10, qword [rax + 0x18]
mov r9d, dword [r10 + rbp + 4]
mov eax, r9d
xor eax, edi
bt eax, 0x16
mov ecx, dword [rsp + 0x6c]
movzx ecx, cl
mov eax, 1
cmovb ecx, eax
mov dword [rsp + 0x6c], ecx
mov eax, edi
xor eax, dword [rsp + 0x58]
test dword [r15 + 0x1098], eax
setne al
mov r8b, byte [r14 + rbp + 8]
mov cl, byte [rsp + 0x56]
and cl, 1
cmp r8b, cl
jne 0x14005699b
lea rcx, [rdx + rdx*4]
mov bl, byte [rsp + 0x55]
cmp byte [r14 + rcx*4 + 9], bl
jne 0x14005699b
mov bl, byte [rsp + 0x54]
cmp byte [r14 + rcx*4 + 0xa], bl
jne 0x14005699b
mov bl, byte [rsp + 0x53]
cmp byte [r14 + rcx*4 + 0xb], bl
jne 0x14005699b
mov bl, byte [rsp + 0x52]
and bl, 1
cmp byte [r14 + rcx*4 + 0xc], bl
jne 0x14005699b
mov bl, byte [rsp + 0x51]
cmp byte [r14 + rcx*4 + 0xd], bl
jne 0x14005699b
mov bl, byte [rsp + 0x50]
cmp byte [r14 + rcx*4 + 0xe], bl
jne 0x14005699b
mov bl, byte [rsp + 0x4f]
cmp byte [r14 + rcx*4 + 0xf], bl
je 0x14005699d
mov al, 1
mov ecx, dword [r14 + rbp]
mov qword [rsp + 0xa0], rcx
add ecx, 0xffffdc46
cmp ecx, 4
jb 0x1400569cf
test esi, esi
jle 0x1400569d1
lea ecx, [rsi - 1]
lea rcx, [rcx + rcx*4]
mov ecx, dword [r14 + rcx*4]
mov ebx, 0xffffdc46
add ecx, ebx
cmp ecx, 3
ja 0x1400569d1
mov al, 1
mov dword [rsp + 0x5c], edi
mov qword [rsp + 0x78], rsi
mov rdi, qword [rsp + 0xa0]
mov ecx, edi
and ecx, 0xfffffc00
mov ebx, edi
and ebx, 0xfffffe00
and edi, 0xffffff00
cmp ebx, 0xdc00
mov esi, 0
cmove esi, edi
cmp ecx, 0xd800
cmove esi, edi
cmp esi, dword [rsp + 0xc4]
movzx eax, al
mov ecx, 1
cmovne eax, ecx
mov rcx, qword [rsp + 0xb8]
lea rbx, [rcx + rbp]
lea rdx, [rdx + rdx*4]
cmp dword [rcx + rdx*4 + 0x10], 0
je 0x140056ac1
mov al, 1
mov qword [rsp + 0x80], rdx
cmp dword [rbx], 0xdffe
mov rdi, qword [rsp + 0x98]
jne 0x140056a5a
mov al, 1
jmp 0x140056a73
cmp dword [rsp + 0x78], 2
jl 0x140056a73
cmp dword [rbx - 0x14], 0xdfff
jne 0x140056a73
cmp dword [rbx - 0x28], 0xdffe
je 0x140056a56
mov qword [rsp + 0x90], rbx
mov rcx, qword [r15 + 0x10d0]
mov bl, byte [rcx + 8]
mov ecx, dword [rsp + 0x6c]
mov r14d, ecx
and r14b, 1
mov ecx, ebx
or cl, r14b
mov qword [rsp + 0xe0], rbp
je 0x140056adb
test al, al
jne 0x140056b12
mov eax, dword [rsp + 0x60]
mov r14d, eax
mov rsi, qword [rsp + 0x78]
mov r9d, dword [rsp + 0x5c]
mov rdx, qword [rsp + 0x80]
jmp 0x140056c8b
cmp dword [rsp + 0x78], 0
jle 0x140056a3e
cmp dword [rbx - 4], 0
jne 0x140056a3c
jmp 0x140056a3e
and r9d, 0xfffffff
cmp r9d, dword [rsp + 0x5c]
jne 0x140056aff
mov rcx, qword [rsp + 0xa0]
mov rdx, qword [rsp + 0x80]
cmp dword [r10 + rdx*4], ecx
je 0x140056b12
test byte [rsp + 0x60], 1
sete cl
cmp r12d, 1
sete dl
test cl, dl
je 0x140056a9f
mov eax, dword [rsp + 0x60]
mov ecx, eax
and cl, 1
test r12d, r12d
jle 0x140056bfd
or al, byte [rsp + 0xac]
and al, 1
mov rdi, qword [rsp + 0xb0]
je 0x140056c05
mov rax, qword [rsp + 0xe0]
add rax, rdi
add rax, 8
mov qword [rsp + 0x60], rax
movzx eax, byte [rsp + 0x53]
shl rax, 0x18
mov ebx, ecx
movzx ecx, byte [rsp + 0x54]
shl rcx, 0x10
or rcx, rax
movzx eax, byte [rsp + 0x55]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x56]
or rcx, rax
movzx eax, byte [rsp + 0x4f]
shl eax, 0x18
movzx edx, byte [rsp + 0x50]
shl edx, 0x10
or edx, eax
movzx eax, byte [rsp + 0x51]
shl eax, 8
or eax, edx
movzx edx, byte [rsp + 0x52]
or edx, eax
shl rdx, 0x20
or rdx, rcx
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x38], rdx
mov rcx, r15
mov rdx, qword [rsp + 0xc8]
mov r8d, dword [rsp + 0x8c]
mov rbp, qword [rsp + 0x70]
mov r9d, ebp
call fcn.14006172a
mov ecx, ebx
mov rax, qword [rsp + 0x60]
mov r8b, byte [rax]
mov rax, qword [r15 + 0x10d0]
mov bl, byte [rax + 8]
mov rax, qword [r15 + 0x28]
mov rax, qword [rax + rbp*8]
mov r10, qword [rax + 0x18]
jmp 0x140056c05
mov rdi, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0x80]
mov al, byte [rdi + rdx*4 + 9]
mov byte [rsp + 0x55], al
mov al, byte [rdi + rdx*4 + 0xa]
mov byte [rsp + 0x54], al
mov al, byte [rdi + rdx*4 + 0xb]
mov byte [rsp + 0x53], al
mov al, byte [rdi + rdx*4 + 0xc]
mov byte [rsp + 0x52], al
mov al, byte [rdi + rdx*4 + 0xd]
mov byte [rsp + 0x51], al
mov al, byte [rdi + rdx*4 + 0xe]
mov byte [rsp + 0x50], al
mov al, byte [rdi + rdx*4 + 0xf]
mov byte [rsp + 0x4f], al
test bl, bl
movzx eax, byte [rsp + 0xac]
movzx ecx, cl
cmove ecx, eax
mov dword [rsp + 0xac], ecx
xor r12d, r12d
mov r9d, dword [rsp + 0x5c]
mov dword [rsp + 0x58], r9d
mov dword [rsp + 0xc4], esi
mov rsi, qword [rsp + 0x78]
mov eax, esi
mov dword [rsp + 0x8c], esi
mov byte [rsp + 0x56], r8b
mov rdi, qword [rsp + 0x98]
lea rcx, [r10 + rdx*4]
mov rdx, qword [rsp + 0x90]
mov rbx, qword [rsp + 0xa0]
mov r8d, ebx
call fcn.1400618c0
movzx ecx, r14b
mov byte [rsp + 0x57], al
test al, al
mov eax, 1
cmove ecx, eax
mov dword [rsp + 0x60], ecx
movsxd r14, r12d
mov byte [rsp + 0x28], 0
mov qword [rsp + 0x20], 2
mov r8d, 2
mov rcx, r13
lea rdx, [rsp + 0xf8]
mov r9, r14
call fcn.14001231c
mov r13, rax
lea eax, [rbx - 0x10001]
cmp eax, 0xffffe
ja 0x140056d1f
lea eax, [rbx + 0x3ff0000]
shr eax, 0xa
add eax, 0xffffd800
lea r12d, [r14 + 1]
mov ecx, ebx
and ecx, 0x3ff
or ecx, 0xdc00
mov word [r13 + r14*2 + 2], cx
jmp 0x140056d21
mov eax, ebx
mov rcx, qword [rsp + 0xb8]
mov rdx, qword [rsp + 0x80]
lea rcx, [rcx + rdx*4]
add rcx, 0x10
mov word [r13 + r14*2], ax
inc r12d
mov eax, dword [rcx]
test eax, eax
je 0x140056e53
mov rsi, qword [rsp + 0x90]
mov r14, qword [rsp + 0xb0]
cdqe
lea rdi, [rax + rax*4]
mov ebx, dword [rsi + rdi*4]
mov eax, ebx
and eax, 0xffffff00
cmp eax, 0xda00
je 0x140056dad
cmp eax, 0xd900
je 0x140056d97
cmp eax, 0xd800
jne 0x140056dc2
mov rax, qword [r15 + 0x10d0]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x214
jmp 0x140056dbf
mov rax, qword [r15 + 0x10d0]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x614
jmp 0x140056dbf
mov rax, qword [r15 + 0x10d0]
movzx ecx, bl
lea rax, [rax + rcx*2]
add rax, 0x14
movzx ebx, word [rax]
movsxd rbp, r12d
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.14001231c
mov r13, rax
lea eax, [rbx - 0x10001]
cmp eax, 0xffffe
ja 0x140056e22
lea eax, [rbx + 0x3ff0000]
shr eax, 0xa
add eax, 0xffffd800
lea r12d, [rbp + 1]
and ebx, 0x3ff
or ebx, 0xdc00
mov word [r13 + rbp*2 + 2], bx
jmp 0x140056e24
mov eax, ebx
lea rsi, [rsi + rdi*4]
mov word [r13 + rbp*2], ax
inc r12d
mov eax, dword [rsi + 0x10]
test eax, eax
jne 0x140056d5c
or dword [rsp + 0x58], 0x80000000
mov rdi, qword [rsp + 0x98]
mov rsi, qword [rsp + 0x78]
jmp 0x140056e5b
mov r14, qword [rsp + 0xb0]
mov al, byte [rsp + 0x57]
test al, al
jne 0x140056f34
mov rax, qword [r15 + 0x28]
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rax + rsi*8]
mov rdx, qword [rsp + 0x78]
mov r8, qword [rsp + 0x90]
call fcn.140060580
mov rax, qword [r15 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov rdx, qword [rsp + 0xe0]
mov rcx, qword [rsp + 0xa0]
mov dword [rax + rdx], ecx
mov rax, qword [r15 + 0x28]
mov rax, qword [rax + rsi*8]
mov rax, qword [rax + 0x18]
mov ecx, dword [rsp + 0x5c]
mov dword [rax + rdx + 4], ecx
mov rax, qword [r15 + 0x28]
mov rax, qword [rax + rsi*8]
mov rsi, qword [rsp + 0x78]
mov rax, qword [rax + 0x18]
mov cl, byte [rsp + 0x56]
mov byte [rax + rdx + 8], cl
mov cl, byte [rsp + 0x55]
mov byte [rax + rdx + 9], cl
mov cl, byte [rsp + 0x54]
mov byte [rax + rdx + 0xa], cl
mov cl, byte [rsp + 0x53]
mov byte [rax + rdx + 0xb], cl
mov cl, byte [rsp + 0x52]
mov byte [rax + rdx + 0xc], cl
mov cl, byte [rsp + 0x51]
mov byte [rax + rdx + 0xd], cl
mov cl, byte [rsp + 0x50]
mov byte [rax + rdx + 0xe], cl
mov cl, byte [rsp + 0x4f]
mov byte [rax + rdx + 0xf], cl
cmp dword [rsp + 0x8c], esi
jne 0x140056f34
mov rax, qword [r15 + 0x28]
mov rcx, qword [rsp + 0x70]
mov rax, qword [rax + rcx*8]
mov rax, qword [rax + 0x18]
mov rcx, qword [rsp + 0x80]
or dword [rax + rcx*4 + 4], 0x80000000
bt dword [rsp + 0x5c], 0x16
jae 0x140056fd9
inc esi
cmp esi, dword [r15 + 0x178]
jge 0x140056fd9
add qword [rsp + 0x90], 0x14
mov rax, qword [rsp + 0x70]
cmp rax, qword [rsp + 0xd8]
jne 0x140056f84
cmp esi, edi
jne 0x140056f84
lea rcx, str.__i__our_curs_y__j__our_curs_x_
lea rdx, str..._terminal.c
mov r8d, 0x17cb
call fcn.140090118
mov rax, qword [r15 + 0x28]
mov rcx, qword [rsp + 0x70]
mov rbp, qword [rax + rcx*8]
movsxd rax, esi
lea rcx, [rax + rax*4]
shl rcx, 2
add rcx, qword [rbp + 0x18]
mov rdi, qword [rsp + 0x90]
mov r8d, dword [rdi]
mov r9d, dword [rdi + 4]
mov rdx, rdi
call fcn.1400618c0
mov ecx, dword [rsp + 0x60]
movzx ecx, cl
test al, al
mov eax, 1
cmove ecx, eax
mov dword [rsp + 0x60], ecx
mov rcx, rbp
mov edx, esi
mov r8, rdi
call fcn.140060580
inc esi
cmp esi, dword [r15 + 0x178]
jl 0x1400568e0
test byte [rsp + 0x60], 1
mov rsi, qword [rsp + 0xc8]
je 0x140057095
test r12d, r12d
jle 0x140057095
movzx eax, byte [rsp + 0x53]
shl rax, 0x18
movzx ecx, byte [rsp + 0x54]
shl rcx, 0x10
or rcx, rax
movzx eax, byte [rsp + 0x55]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x56]
or rcx, rax
movzx eax, byte [rsp + 0x4f]
shl eax, 0x18
movzx edx, byte [rsp + 0x50]
shl edx, 0x10
or edx, eax
movzx eax, byte [rsp + 0x51]
shl eax, 8
or eax, edx
movzx edx, byte [rsp + 0x52]
or edx, eax
shl rdx, 0x20
or rdx, rcx
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x38], rdx
mov rcx, r15
mov rdx, rsi
mov r8d, dword [rsp + 0x8c]
mov r12, qword [rsp + 0x70]
mov r9d, r12d
call fcn.14006172a
jmp 0x14005709a
mov rsi, qword [rsp + 0xc8]
jmp 0x14005709a
mov r12, qword [rsp + 0x70]
cmp byte [rsi + 0xc], 0
je 0x1400570b1
mov rcx, qword [rsi + 0x18]
call fcn.140012312
mov rcx, rsi
call fcn.140012312
inc r12
movsxd rax, dword [r15 + 0x174]
cmp r12, rax
jl 0x1400562c5
mov rcx, r14
call fcn.140012312
mov rcx, r13
call fcn.140012312
mov rcx, qword [rsp + 0x100]
xor rcx, rsp
call fcn.1400841b0
nop
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret