From b58820c0f3f2bc87eca84ce2039b4ab811c0d701 Mon Sep 17 00:00:00 2001 From: german Date: Tue, 10 Mar 2026 16:50:29 +0400 Subject: [PATCH] Swap and copy commands --- ASM.md | 2 + BINCOM.md | 14 +- EXAMPLES.md | 12 + asm-savers.h | 4 +- ntfiles.h | 32 +- ntsys | Bin 40024 -> 40144 bytes ntsys-assembler.h | 5 +- ntsys.s | 4191 +++++++++++++++++++++++++++++++++++++++++++++ swap.asm | 9 + swap.exe | Bin 0 -> 53 bytes 10 files changed, 4263 insertions(+), 6 deletions(-) create mode 100644 ntsys.s create mode 100644 swap.asm create mode 100644 swap.exe diff --git a/ASM.md b/ASM.md index 177976f..4bbe6bb 100644 --- a/ASM.md +++ b/ASM.md @@ -35,6 +35,8 @@ main: - ```sword``` - 16bit знаковый - ```sdword``` - 32bit знаковый - ```sqword``` - 64bit знаковый +- ```db``` - метка +- ```dw``` - указатель (size_t) - Строки - [ASCIIZ-строка](https://ru.wikipedia.org/wiki/%D0%9D%D1%83%D0%BB%D1%8C-%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0?ysclid=mmhsfli7p5897685524) Строки заключаются в двойные кавычки: diff --git a/BINCOM.md b/BINCOM.md index 6e41fa9..f2df629 100644 --- a/BINCOM.md +++ b/BINCOM.md @@ -1,5 +1,5 @@ -# BINCOM - справочник по коммандам NTSYS -Эта страница посвящена коммандам в NTSYS. +# BINCOM - справочник по командам NTSYS +Эта страница посвящена командам в NTSYS. ## Кратко ```c void (*operations[])(void) = { @@ -98,4 +98,12 @@ void (*operations[])(void) = { > - Вызов BASH (Запись на стек строки и числа **0x03**) > - Запрос к RANDOM (Запись на стек числа **0x04**) > - Установка SEED (Запись на стек **WORD-SEED** и числа **0x05**) -- **SYSCALL 0x1A** - Выполнить вызов к ядру (**ARG**). Формат: **0x1A** \ No newline at end of file +- **SYSCALL 0x1A** - Выполнить вызов к ядру (**ARG**). Формат: **0x1A** +## Управление стеком +> [!NOTE] +> Как работает **SWAP**? +> Команда **SWAP** меняет местами два элемента на стеке, сдвигая другие. +> Она принимает количество элементов в качестве параметра. +> Элементы сдвигаются влево. +- **SWAP 0x1B** - Swap (**ARG1 ARG2**). Формат: **0x1B РАЗМЕР** +- **COPY 0x1C** - Скопировать последний элемент (**ARG**). Формат: **0x1C РАЗМЕР** \ No newline at end of file diff --git a/EXAMPLES.md b/EXAMPLES.md index 7bfef0b..e198ca8 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -45,4 +45,16 @@ lwait: ; Цикл задержки mloop: ; Главный цикл push db, main ; Адрес main jmp ; Повторяем цикл +``` +## Пример инструкции SWAP +```asm +main: ; Метка main + push.string "Hello, world!\n" ; Строка + push byte 0x00 ; Дескриптор + syscall ; Системный вызов + push.string "Hello, world!\n" ; Строка + push byte 3 ; Кол-во блоков + swap word ; Блок размером в 2 байта + push byte 0x00 ; Дескриптор + syscall ; Системный вызов ``` \ No newline at end of file diff --git a/asm-savers.h b/asm-savers.h index cc1ad81..4600099 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -187,6 +187,8 @@ static void __input_datatype(ntsys_argument_parser_t* parser, byte_t* mode) { data_type = 0x01; } else if (strcmp(str, "word") == 0) { data_type = 0x02; + } else if (strcmp(str, "dw") == 0) { + data_type = 0x02; } else if (strcmp(str, "dword") == 0) { data_type = 0x04; } else if (strcmp(str, "qword") == 0) { @@ -251,7 +253,7 @@ static void __input_data(ntsys_argument_parser_t* parser, byte_t* mode) { count_system = 16; } else if (str[1] == 'b') { count_system = 2; - } else { + } else if ((str[1] < '0' || str[1] > '9') && !is_space(str[1])) { ntsys_error("Unknown number system!"); return; } diff --git a/ntfiles.h b/ntfiles.h index 8cf1b98..b8bf5da 100644 --- a/ntfiles.h +++ b/ntfiles.h @@ -625,6 +625,34 @@ static void nt_fs_syscall(void) { } } +void stack_swap(void) { + size_t size = buf[cnt++]; + pop_arg(1, arg1); + pop_arg(size, arg2); + sp -= size; + size_t i = 0; + while (i < ((size_t)(*(byte_t*)arg1) * size)) { + stack[sp + i] = stack[sp + (i) + size]; + i ++; + } + i = 0; + byte_t r = ((*(byte_t*)arg1) - 1) * size; + while (i < size) { + stack[sp + r + i] = arg2[i]; + i ++; + } +} + +void stack_copy(void) { + size_t size = buf[cnt++]; + sp -= size; + size_t i = 0; + while (i < size) { + stack[sp + i] = stack[sp + (i) + size]; + i ++; + } +} + void (*fn_fGH6VSEzu7qNiGVE[])(void) = { /* Операции со стеком (0 - 2) */ push, pop, push_str, @@ -645,7 +673,9 @@ void (*fn_fGH6VSEzu7qNiGVE[])(void) = { /* Адресация на стеке (24 - 25) */ get_sp, set_sp, /* Системные вызовы (26) */ - nt_fs_syscall + nt_fs_syscall, + /* Управление положение на стеке (27 - 28) */ + stack_swap, stack_copy }; #undef stack diff --git a/ntsys b/ntsys index b0e663187d7ed27d20890175e01f83f3119d3772..5cd015dab5b163d3caae157416d07968258dd0b8 100755 GIT binary patch delta 11644 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 delta 10891 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 T9&*{UkX~S#)RA3(t@Hl^FYsC^ diff --git a/ntsys-assembler.h b/ntsys-assembler.h index 5340d87..1c09ffb 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -12,7 +12,7 @@ * XX - шестнадцатиричные данные */ -const size_t ntsys_command_count = 0x1C; +const size_t ntsys_command_count = 0x1E; char* ntsys_asm_table[] = { "push=00:T:D", @@ -50,6 +50,9 @@ char* ntsys_asm_table[] = { "syscall=1A", + "swap=1B:T", + "dup=1C:T", + "pass=" }; diff --git a/ntsys.s b/ntsys.s new file mode 100644 index 0000000..5f25f4d --- /dev/null +++ b/ntsys.s @@ -0,0 +1,4191 @@ + .file "ntsys.c" + .text + .p2align 4 + .type push, @function +push: +.LFB28: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %edx + movq __ntsys_buffer(%rip), %rsi + movzbl (%rsi,%rdx), %edi + movq %rdx, %rax + movl __ntsys_stack_pointer(%rip), %edx + movzbl %dil, %ecx + subl %ecx, %edx + movl %edx, __ntsys_stack_pointer(%rip) + testq %rdi, %rdi + je .L2 + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + movzbl (%rsi,%rax), %ecx + movq __ntsys_stack(%rip), %rax + movb %cl, (%rax,%rdx) + movl $1, %edx + cmpq $1, %rdi + je .L4 + .p2align 4,,10 + .p2align 3 +.L3: + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_buffer(%rip), %rcx + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + movzbl (%rcx,%rax), %esi + movq __ntsys_stack(%rip), %rcx + movl __ntsys_stack_pointer(%rip), %eax + addq %rdx, %rcx + addq $1, %rdx + movb %sil, (%rcx,%rax) + cmpq %rdx, %rdi + jne .L3 +.L4: + movl __ntsys_buffer_ptr(%rip), %eax +.L2: + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + ret + .cfi_endproc +.LFE28: + .size push, .-push + .p2align 4 + .type pop, @function +pop: +.LFB29: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %eax + addl %eax, __ntsys_stack_pointer(%rip) + ret + .cfi_endproc +.LFE29: + .size pop, .-pop + .p2align 4 + .type push_str, @function +push_str: +.LFB30: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_buffer(%rip), %rdi + movl __ntsys_stack_pointer(%rip), %r9d + cmpb $0, (%rdi,%rax) + movq %rax, %r8 + je .L14 + xorl %edx, %edx + .p2align 4,,10 + .p2align 3 +.L15: + movq %rdx, %rcx + addq $1, %rdx + leal (%r8,%rdx), %esi + movl %esi, __ntsys_buffer_ptr(%rip) + cmpb $0, (%rdi,%rsi) + movq %rsi, %rax + jne .L15 + addq $2, %rcx + movl %r9d, %edx + subl %ecx, %edx + subl %ecx, %eax + movl %edx, __ntsys_stack_pointer(%rip) + testq %rcx, %rcx + je .L18 + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + movzbl (%rdi,%rax), %esi + movq __ntsys_stack(%rip), %rax + movb %sil, (%rax,%rdx) + cmpq $1, %rcx + je .L17 + movl $1, %edx + .p2align 4,,10 + .p2align 3 +.L19: + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_buffer(%rip), %rsi + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + movzbl (%rsi,%rax), %edi + movq __ntsys_stack(%rip), %rsi + movl __ntsys_stack_pointer(%rip), %eax + addq %rdx, %rsi + addq $1, %rdx + movb %dil, (%rsi,%rax) + cmpq %rdx, %rcx + jne .L19 +.L17: + movl __ntsys_buffer_ptr(%rip), %eax +.L18: + addl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + ret + .p2align 4,,10 + .p2align 3 +.L14: + leal -1(%r9), %edx + movl %edx, __ntsys_stack_pointer(%rip) + movzbl (%rdi,%rax), %ecx + movq __ntsys_stack(%rip), %rax + movb %cl, (%rax,%rdx) + jmp .L17 + .cfi_endproc +.LFE30: + .size push_str, .-push_str + .p2align 4 + .globl stack_copy + .type stack_copy, @function +stack_copy: +.LFB64: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %esi + movl __ntsys_stack_pointer(%rip), %eax + movzbl %sil, %edx + subl %edx, %eax + movl %eax, __ntsys_stack_pointer(%rip) + testq %rsi, %rsi + je .L27 + movq __ntsys_stack(%rip), %rdx + leaq (%rdx,%rsi), %rcx + movzbl (%rcx,%rax), %ecx + movb %cl, (%rdx,%rax) + movl $1, %edx + cmpq $1, %rsi + je .L27 + .p2align 4,,10 + .p2align 3 +.L29: + movl __ntsys_stack_pointer(%rip), %eax + movq __ntsys_stack(%rip), %rcx + addq %rdx, %rax + addq $1, %rdx + leaq (%rcx,%rax), %rdi + movzbl (%rdi,%rsi), %edi + movb %dil, (%rcx,%rax) + cmpq %rdx, %rsi + jne .L29 +.L27: + ret + .cfi_endproc +.LFE64: + .size stack_copy, .-stack_copy + .p2align 4 + .type get_sp, @function +get_sp: +.LFB58: + .cfi_startproc + endbr64 + movl __ntsys_stack_pointer(%rip), %eax + movq __ntsys_stack(%rip), %rcx + leal -2(%rax), %edx + movl %edx, __ntsys_stack_pointer(%rip) + movb %dl, (%rcx,%rdx) + movl __ntsys_stack_pointer(%rip), %eax + movzbl 1+__ntsys_stack_pointer(%rip), %ecx + movq __ntsys_stack(%rip), %rdx + movb %cl, 1(%rdx,%rax) + ret + .cfi_endproc +.LFE58: + .size get_sp, .-get_sp + .p2align 4 + .type set_sp, @function +set_sp: +.LFB59: + .cfi_startproc + endbr64 + movl __ntsys_stack_pointer(%rip), %eax + movq __ntsys_stack(%rip), %rdx + movzbl (%rdx,%rax), %ecx + movb %cl, arg1_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%rdx,%rax), %eax + movb %al, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, __ntsys_stack_pointer(%rip) + ret + .cfi_endproc +.LFE59: + .size set_sp, .-set_sp + .p2align 4 + .type nt_goto, @function +nt_goto: +.LFB44: + .cfi_startproc + endbr64 + movl __ntsys_stack_pointer(%rip), %edx + movq __ntsys_stack(%rip), %rcx + movzbl (%rcx,%rdx), %esi + movq %rdx, %rax + addl $2, %eax + movb %sil, arg1_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%rcx,%rdx), %edx + movl %eax, __ntsys_stack_pointer(%rip) + movb %dl, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, __ntsys_buffer_ptr(%rip) + ret + .cfi_endproc +.LFE44: + .size nt_goto, .-nt_goto + .p2align 4 + .type mrd, @function +mrd: +.LFB57: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + movl __ntsys_stack_pointer(%rip), %ecx + movq __ntsys_stack(%rip), %rsi + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rsi,%rcx), %edi + movzbl (%rdx,%rax), %r8d + movq %rcx, %rax + movb %dil, arg1_fGH6VSEzu7qNiGVE(%rip) + addl $2, %eax + movzbl 1(%rsi,%rcx), %ecx + subl %r8d, %eax + movb %cl, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %ecx + movl %eax, __ntsys_stack_pointer(%rip) + testq %r8, %r8 + je .L40 + movzbl (%rsi,%rcx), %edx + addq $1, %rcx + movb %dl, (%rsi,%rax) + movl $1, %edx + cmpq $1, %r8 + je .L40 + .p2align 4,,10 + .p2align 3 +.L43: + movq __ntsys_stack(%rip), %rax + movl __ntsys_stack_pointer(%rip), %esi + movzbl (%rax,%rcx), %edi + addq %rdx, %rax + addq $1, %rdx + addq $1, %rcx + movb %dil, (%rax,%rsi) + cmpq %rdx, %r8 + jne .L43 +.L40: + ret + .cfi_endproc +.LFE57: + .size mrd, .-mrd + .p2align 4 + .type nt_not, @function +nt_not: +.LFB32: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %r8d + testq %r8, %r8 + je .L50 + movl __ntsys_stack_pointer(%rip), %edi + xorl %eax, %eax + addq __ntsys_stack(%rip), %rdi + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rsi + .p2align 4,,10 + .p2align 3 +.L52: + movzbl (%rdi,%rax), %edx + movq %rax, %rcx + movb %dl, (%rsi,%rax) + leaq 1(%rax), %rax + cmpq %rax, %r8 + jne .L52 + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + notl %eax + movb %al, (%rdi) + movl $1, %eax + cmpq $1, %r8 + je .L50 + .p2align 4,,10 + .p2align 3 +.L53: + movzbl (%rsi,%rax), %edx + movq __ntsys_stack(%rip), %r8 + movl __ntsys_stack_pointer(%rip), %edi + addq %rax, %r8 + notl %edx + movb %dl, (%r8,%rdi) + movq %rax, %rdx + addq $1, %rax + cmpq %rdx, %rcx + jne .L53 +.L50: + ret + .cfi_endproc +.LFE32: + .size nt_not, .-nt_not + .p2align 4 + .type mwrt, @function +mwrt: +.LFB56: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_stack(%rip), %r10 + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %esi + movl __ntsys_stack_pointer(%rip), %eax + movzbl (%r10,%rax), %edx + movq %rax, %r8 + movq %rsi, %r9 + addl $2, %r8d + movb %dl, arg1_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%r10,%rax), %eax + movl %r8d, __ntsys_stack_pointer(%rip) + movb %al, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + testq %rsi, %rsi + je .L62 + movl %r8d, %edx + xorl %eax, %eax + leaq (%r10,%rdx), %rdi + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %rdx + .p2align 4,,10 + .p2align 3 +.L64: + movzbl (%rdi,%rax), %ecx + movb %cl, (%rdx,%rax) + addq $1, %rax + cmpq %rax, %rsi + jne .L64 + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %ecx + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + addl %r8d, %r9d + movl %r9d, __ntsys_stack_pointer(%rip) + leaq (%rsi,%rcx), %rdi + movb %al, (%r10,%rcx) + subq %rcx, %rdx + leaq 1(%rcx), %rax + cmpq $1, %rsi + je .L62 + .p2align 4,,10 + .p2align 3 +.L66: + movzbl (%rdx,%rax), %esi + movq __ntsys_stack(%rip), %rcx + movb %sil, (%rcx,%rax) + addq $1, %rax + cmpq %rax, %rdi + jne .L66 +.L62: + ret + .cfi_endproc +.LFE56: + .size mwrt, .-mwrt + .p2align 4 + .globl stack_swap + .type stack_swap, @function +stack_swap: +.LFB63: + .cfi_startproc + endbr64 + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_stack(%rip), %rcx + pushq %rbx + .cfi_def_cfa_offset 16 + .cfi_offset 3, -16 + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %r10d + movl __ntsys_stack_pointer(%rip), %edx + movzbl (%rcx,%rdx), %esi + leal 1(%rdx), %ebx + movl %ebx, __ntsys_stack_pointer(%rip) + leaq (%rcx,%rbx), %r11 + movb %sil, arg1_fGH6VSEzu7qNiGVE(%rip) + testq %r10, %r10 + je .L74 + movq %r10, %r9 + xorl %edx, %edx + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %r8 + .p2align 4,,10 + .p2align 3 +.L76: + movzbl (%r11,%rdx), %eax + movq %rdx, %rdi + movb %al, (%r8,%rdx) + leaq 1(%rdx), %rdx + cmpq %rdx, %r10 + jne .L76 + movzbl %sil, %eax + imulq %r10, %rax + testq %rax, %rax + je .L77 + addq %r10, %rcx + movzbl (%rcx,%rbx), %eax + movb %al, (%r11) + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %ecx + movl $1, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %r11 + movq %rcx, %rsi + imulq %r10, %rcx + cmpq $1, %rcx + jbe .L92 + .p2align 4,,10 + .p2align 3 +.L78: + movl __ntsys_stack_pointer(%rip), %ecx + movq __ntsys_stack(%rip), %rsi + addq %rax, %rcx + addq $1, %rax + leaq (%rsi,%rcx), %r10 + movzbl (%r10,%rdx), %r10d + movb %r10b, (%rsi,%rcx) + movzbl (%r11), %ecx + movq %rcx, %rsi + imulq %rdx, %rcx + cmpq %rcx, %rax + jb .L78 +.L92: + movq __ntsys_stack(%rip), %rcx +.L77: + leal -1(%rsi), %eax + xorl %edx, %edx + imull %r9d, %eax + movzbl %al, %eax + jmp .L80 + .p2align 4,,10 + .p2align 3 +.L93: + movq __ntsys_stack(%rip), %rcx +.L80: + movzbl (%r8,%rdx), %r9d + addq %rdx, %rcx + movl %eax, %esi + addl __ntsys_stack_pointer(%rip), %esi + movb %r9b, (%rcx,%rsi) + movq %rdx, %rcx + addq $1, %rdx + cmpq %rdi, %rcx + jne .L93 +.L74: + popq %rbx + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE63: + .size stack_swap, .-stack_swap + .p2align 4 + .type bez_bnez, @function +bez_bnez: +.LFB45: + .cfi_startproc + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_stack(%rip), %r11 + pushq %rbx + .cfi_def_cfa_offset 16 + .cfi_offset 3, -16 + movl %edi, %r10d + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %r9d + movl __ntsys_stack_pointer(%rip), %edx + movq %r9, %rdi + movl %r9d, %ebx + leaq (%r11,%rdx), %rsi + movq %rdx, %r8 + andl $15, %edi + andl $15, %ebx + je .L123 + xorl %eax, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rcx + .p2align 4,,10 + .p2align 3 +.L108: + movzbl (%rsi,%rax), %edx + movb %dl, (%rcx,%rax) + addq $1, %rax + cmpq %rax, %rdi + jne .L108 + movzbl %bl, %ebx + addl %ebx, %r8d + movl %r8d, __ntsys_stack_pointer(%rip) + cmpb $-15, %r9b + je .L99 + ja .L100 + cmpb $4, %r9b + je .L105 + ja .L97 + cmpb $1, %r9b + je .L99 +.L98: + cmpb $2, %r9b + jne .L122 +.L107: + cmpw $0, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %cl + jmp .L103 + .p2align 4,,10 + .p2align 3 +.L100: + cmpb $-12, %r9b + je .L105 + cmpb $-8, %r9b + je .L106 + cmpb $-14, %r9b + je .L107 +.L122: + xorl %ecx, %ecx + jmp .L103 + .p2align 4,,10 + .p2align 3 +.L123: + cmpb $4, %r9b + je .L105 + jbe .L98 +.L97: + cmpb $8, %r9b + jne .L122 +.L106: + cmpq $0, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %cl +.L103: + movl %r8d, %eax + addl $2, %r8d + movzbl (%r11,%rax), %edx + movb %dl, arg2_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%r11,%rax), %eax + movl %r8d, __ntsys_stack_pointer(%rip) + movb %al, 1+arg2_fGH6VSEzu7qNiGVE(%rip) + cmpb %r10b, %cl + je .L94 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, __ntsys_buffer_ptr(%rip) +.L94: + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L99: + .cfi_restore_state + cmpb $0, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %cl + jmp .L103 + .p2align 4,,10 + .p2align 3 +.L105: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + testl %eax, %eax + sete %cl + jmp .L103 + .cfi_endproc +.LFE45: + .size bez_bnez, .-bez_bnez + .p2align 4 + .type bnez, @function +bnez: +.LFB54: + .cfi_startproc + endbr64 + movl $1, %edi + jmp bez_bnez + .cfi_endproc +.LFE54: + .size bnez, .-bnez + .p2align 4 + .type bez, @function +bez: +.LFB55: + .cfi_startproc + endbr64 + xorl %edi, %edi + jmp bez_bnez + .cfi_endproc +.LFE55: + .size bez, .-bez + .p2align 4 + .type logic_operation, @function +logic_operation: +.LFB38: + .cfi_startproc + movl __ntsys_buffer_ptr(%rip), %eax + movl __ntsys_stack_pointer(%rip), %r10d + pushq %r12 + .cfi_def_cfa_offset 16 + .cfi_offset 12, -16 + movl %edi, %r11d + pushq %rbp + .cfi_def_cfa_offset 24 + .cfi_offset 6, -24 + leal 1(%rax), %edx + pushq %rbx + .cfi_def_cfa_offset 32 + .cfi_offset 3, -32 + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %esi + testq %rsi, %rsi + je .L127 + movq __ntsys_stack(%rip), %rbx + movl %r10d, %edx + movq %rsi, %rbp + xorl %eax, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rcx + leaq (%rbx,%rdx), %rdi + .p2align 4,,10 + .p2align 3 +.L128: + movzbl (%rdi,%rax), %edx + movb %dl, (%rcx,%rax) + movq %rax, %rdx + leaq 1(%rax), %rax + cmpq %rax, %rsi + jne .L128 + movzbl %bpl, %eax + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %r8 + leal (%r10,%rax), %r12d + xorl %eax, %eax + movl %r12d, __ntsys_stack_pointer(%rip) + movq %r12, %r10 + leaq (%rbx,%r12), %r9 + .p2align 4,,10 + .p2align 3 +.L136: + movzbl (%r9,%rax), %edi + movb %dil, (%r8,%rax) + movq %rax, %rdi + addq $1, %rax + cmpq %rdx, %rdi + jne .L136 + cmpb $4, %r11b + je .L137 + cmpb $5, %r11b + je .L138 + cmpb $2, %r11b + je .L139 + cmpb $3, %r11b + jne .L226 + cmpb $4, %bpl + je .L154 + ja .L155 + cmpb $1, %bpl + je .L156 + cmpb $2, %bpl + jne .L223 +.L157: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + orw arg2_fGH6VSEzu7qNiGVE(%rip), %ax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L154: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + orl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + orq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L130: + movl %r10d, __ntsys_stack_pointer(%rip) + movq __ntsys_stack(%rip), %rbx + movl %r10d, %r12d + testq %rsi, %rsi + je .L126 +.L159: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rcx + movb %al, (%rbx,%r12) + cmpq $1, %rsi + je .L126 +.L171: + movl $1, %eax + .p2align 4,,10 + .p2align 3 +.L172: + movq __ntsys_stack(%rip), %rdi + movzbl (%rcx,%rax), %r8d + movl __ntsys_stack_pointer(%rip), %edx + addq %rax, %rdi + addq $1, %rax + movb %r8b, (%rdi,%rdx) + cmpq %rax, %rsi + jne .L172 + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 24 + popq %rbp + .cfi_def_cfa_offset 16 + popq %r12 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L138: + .cfi_restore_state + cmpb $4, %bpl + je .L165 + ja .L166 + cmpb $1, %bpl + je .L167 + cmpb $2, %bpl + jne .L224 +.L168: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + xorw arg2_fGH6VSEzu7qNiGVE(%rip), %ax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L165: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + xorl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L170: + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + xorq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movl %r10d, __ntsys_stack_pointer(%rip) + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L159 +.L226: + cmpb $4, %bpl + je .L141 + ja .L142 + cmpb $1, %bpl + je .L143 + cmpb $2, %bpl + jne .L223 +.L144: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + sarl %cl, %eax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L141: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + shrl %cl, arg1_fGH6VSEzu7qNiGVE(%rip) +.L146: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rcx + movl %r10d, __ntsys_stack_pointer(%rip) + shrq %cl, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L159 + .p2align 4,,10 + .p2align 3 +.L137: + cmpb $4, %bpl + je .L160 + ja .L161 + cmpb $1, %bpl + jne .L227 + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + andb arg2_fGH6VSEzu7qNiGVE(%rip), %al + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) +.L163: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + andw arg2_fGH6VSEzu7qNiGVE(%rip), %ax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L160: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + andl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L164: + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + andq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movl %r10d, __ntsys_stack_pointer(%rip) + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L159 + .p2align 4,,10 + .p2align 3 +.L139: + cmpb $4, %bpl + je .L147 + ja .L148 + cmpb $1, %bpl + jne .L228 + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + sall %cl, %eax + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) +.L150: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + sall %cl, %eax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) +.L147: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + sall %cl, arg1_fGH6VSEzu7qNiGVE(%rip) +.L152: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rcx + movl %r10d, __ntsys_stack_pointer(%rip) + salq %cl, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L159 + .p2align 4,,10 + .p2align 3 +.L127: + cmpb $3, %dil + je .L130 +.L126: + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 24 + popq %rbp + .cfi_def_cfa_offset 16 + popq %r12 + .cfi_def_cfa_offset 8 + ret +.L161: + .cfi_restore_state + cmpb $8, %bpl + je .L164 +.L223: + movl %r10d, __ntsys_stack_pointer(%rip) + jmp .L159 +.L148: + cmpb $8, %bpl + je .L152 + jmp .L223 +.L155: + cmpb $8, %bpl + jne .L223 + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + orq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movl %r10d, __ntsys_stack_pointer(%rip) + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L159 +.L142: + cmpb $8, %bpl + je .L146 + jmp .L223 +.L156: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + orb arg2_fGH6VSEzu7qNiGVE(%rip), %al + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L157 +.L167: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + xorb arg2_fGH6VSEzu7qNiGVE(%rip), %al + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L168 +.L228: + cmpb $2, %bpl + je .L150 + jmp .L223 + .p2align 4,,10 + .p2align 3 +.L227: + cmpb $2, %bpl + je .L163 + jmp .L223 + .p2align 4,,10 + .p2align 3 +.L143: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + sarl %cl, %eax + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L144 +.L166: + cmpb $8, %bpl + je .L170 +.L224: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movl %r10d, __ntsys_stack_pointer(%rip) + movb %al, (%rbx,%r12) + jmp .L171 + .cfi_endproc +.LFE38: + .size logic_operation, .-logic_operation + .p2align 4 + .type nt_shr, @function +nt_shr: +.LFB39: + .cfi_startproc + endbr64 + movl $1, %edi + jmp logic_operation + .cfi_endproc +.LFE39: + .size nt_shr, .-nt_shr + .p2align 4 + .type nt_shl, @function +nt_shl: +.LFB40: + .cfi_startproc + endbr64 + movl $2, %edi + jmp logic_operation + .cfi_endproc +.LFE40: + .size nt_shl, .-nt_shl + .p2align 4 + .type nt_or, @function +nt_or: +.LFB41: + .cfi_startproc + endbr64 + movl $3, %edi + jmp logic_operation + .cfi_endproc +.LFE41: + .size nt_or, .-nt_or + .p2align 4 + .type nt_and, @function +nt_and: +.LFB42: + .cfi_startproc + endbr64 + movl $4, %edi + jmp logic_operation + .cfi_endproc +.LFE42: + .size nt_and, .-nt_and + .p2align 4 + .type nt_xor, @function +nt_xor: +.LFB43: + .cfi_startproc + endbr64 + movl $5, %edi + jmp logic_operation + .cfi_endproc +.LFE43: + .size nt_xor, .-nt_xor + .p2align 4 + .type n_up_down_eq, @function +n_up_down_eq: +.LFB47: + .cfi_startproc + movl __ntsys_buffer_ptr(%rip), %eax + movq __ntsys_stack(%rip), %r11 + pushq %rbx + .cfi_def_cfa_offset 16 + .cfi_offset 3, -16 + movl %edi, %r9d + leal 1(%rax), %edx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %r10d + movl __ntsys_stack_pointer(%rip), %edx + movq %r10, %r8 + movl %r10d, %ebx + leaq (%r11,%rdx), %rdi + movq %rdx, %rcx + andl $15, %r8d + andl $15, %ebx + je .L335 + xorl %eax, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rsi + .p2align 4,,10 + .p2align 3 +.L235: + movzbl (%rdi,%rax), %edx + movb %dl, (%rsi,%rax) + movq %rax, %rdx + leaq 1(%rax), %rax + cmpq %rax, %r8 + jne .L235 + movzbl %bl, %r8d + xorl %eax, %eax + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %rsi + addl %r8d, %ecx + movl %ecx, %ecx + movl %ecx, __ntsys_stack_pointer(%rip) + movq %rcx, %rbx + leaq (%r11,%rcx), %rdi + .p2align 4,,10 + .p2align 3 +.L239: + movzbl (%rdi,%rax), %ecx + movb %cl, (%rsi,%rax) + movq %rax, %rcx + addq $1, %rax + cmpq %rdx, %rcx + jne .L239 + movl %r9d, %eax + leal (%r8,%rbx), %ecx + andl $15, %eax + movl %ecx, __ntsys_stack_pointer(%rip) + cmpb $1, %al + je .L240 + cmpb $2, %al + je .L241 + testb %al, %al + jne .L334 + movl %ecx, %edx + cmpb $-15, %r10b + je .L243 + ja .L244 + movl %ecx, %edx + cmpb $4, %r10b + je .L245 + movl %ecx, %edx + ja .L246 + cmpb $1, %r10b + jne .L336 + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + sete %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L241: + movl %ecx, %edx + cmpb $-15, %r10b + je .L262 + ja .L263 + movl %ecx, %edx + cmpb $4, %r10b + je .L264 + movl %ecx, %edx + ja .L265 + cmpb $1, %r10b + jne .L337 + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setb %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L334: + movl %ecx, %edx +.L242: + notl %r9d + andl $240, %r9d + je .L338 + movzbl (%r11,%rdx), %eax + addl $2, %ecx + movb %al, arg2_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%r11,%rdx), %eax + movl %ecx, __ntsys_stack_pointer(%rip) + movb %al, 1+arg2_fGH6VSEzu7qNiGVE(%rip) +.L234: + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L240: + .cfi_restore_state + movl %ecx, %edx + cmpb $-15, %r10b + je .L253 + ja .L254 + movl %ecx, %edx + cmpb $4, %r10b + je .L255 + movl %ecx, %edx + ja .L256 + cmpb $1, %r10b + jne .L339 + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + cmpb %al, arg2_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setb %al + jmp .L252 +.L256: + cmpb $8, %r10b + jne .L242 +.L253: + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg2_fGH6VSEzu7qNiGVE(%rip) + setb %al + .p2align 4,,10 + .p2align 3 +.L252: + notl %r9d + andl $240, %r9d + je .L273 +.L271: + movzbl (%r11,%rdx), %esi + addl $2, %ecx + movb %sil, arg2_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%r11,%rdx), %edx + movl %ecx, __ntsys_stack_pointer(%rip) + movb %dl, 1+arg2_fGH6VSEzu7qNiGVE(%rip) + testb %al, %al + je .L234 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + movl %eax, __ntsys_buffer_ptr(%rip) + ret +.L246: + .cfi_restore_state + cmpb $8, %r10b + jne .L242 +.L243: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %al + jmp .L252 +.L265: + cmpb $8, %r10b + jne .L242 +.L262: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + setb %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L338: + xorl %eax, %eax +.L273: + xorl $1, %eax + jmp .L271 + .p2align 4,,10 + .p2align 3 +.L335: + movl %r9d, %eax + andl $15, %eax + cmpb $1, %al + je .L236 + cmpb $2, %al + je .L340 + testb %al, %al + jne .L242 + cmpb $4, %r10b + je .L245 + ja .L246 +.L275: + cmpb $2, %r10b + jne .L242 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L254: + cmpb $-12, %r10b + je .L259 + cmpb $-8, %r10b + je .L260 + cmpb $-14, %r10b + jne .L334 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setg %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L244: + cmpb $-12, %r10b + je .L249 + cmpb $-8, %r10b + je .L250 + cmpb $-14, %r10b + jne .L334 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + sete %al + jmp .L252 + .p2align 4,,10 + .p2align 3 +.L263: + cmpb $-12, %r10b + je .L268 + cmpb $-8, %r10b + je .L269 + cmpb $-14, %r10b + jne .L334 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setl %al + jmp .L252 +.L250: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + sete %al + jmp .L252 +.L269: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setl %al + jmp .L252 +.L260: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + cmpq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setg %al + jmp .L252 +.L259: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setg %al + jmp .L252 +.L255: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg2_fGH6VSEzu7qNiGVE(%rip) + setb %al + jmp .L252 +.L264: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + setb %al + jmp .L252 +.L249: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + sete %al + jmp .L252 +.L268: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %ecx, %edx + setl %al + jmp .L252 +.L245: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + sete %al + jmp .L252 +.L340: + cmpb $4, %r10b + je .L264 + ja .L265 +.L276: + cmpb $2, %r10b + jne .L242 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + setb %al + jmp .L252 +.L236: + cmpb $4, %r10b + je .L255 + ja .L256 +.L277: + cmpb $2, %r10b + jne .L242 + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + cmpw %ax, arg2_fGH6VSEzu7qNiGVE(%rip) + setb %al + jmp .L252 +.L339: + movl %ecx, %edx + jmp .L277 +.L336: + movl %ecx, %edx + jmp .L275 +.L337: + movl %ecx, %edx + jmp .L276 + .cfi_endproc +.LFE47: + .size n_up_down_eq, .-n_up_down_eq + .p2align 4 + .type eq, @function +eq: +.LFB48: + .cfi_startproc + endbr64 + xorl %edi, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE48: + .size eq, .-eq + .p2align 4 + .type neq, @function +neq: +.LFB49: + .cfi_startproc + endbr64 + movl $240, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE49: + .size neq, .-neq + .p2align 4 + .type up, @function +up: +.LFB50: + .cfi_startproc + endbr64 + movl $1, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE50: + .size up, .-up + .p2align 4 + .type down, @function +down: +.LFB51: + .cfi_startproc + endbr64 + movl $2, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE51: + .size down, .-down + .p2align 4 + .type upne, @function +upne: +.LFB52: + .cfi_startproc + endbr64 + movl $241, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE52: + .size upne, .-upne + .p2align 4 + .type downe, @function +downe: +.LFB53: + .cfi_startproc + endbr64 + movl $242, %edi + jmp n_up_down_eq + .cfi_endproc +.LFE53: + .size downe, .-downe + .p2align 4 + .type nt_fs_syscall, @function +nt_fs_syscall: +.LFB62: + .cfi_startproc + endbr64 + movl __ntsys_stack_pointer(%rip), %eax + movq __ntsys_stack(%rip), %rsi + movq %rax, %rcx + movzbl (%rsi,%rax), %eax + leal 1(%rcx), %edx + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %edx, __ntsys_stack_pointer(%rip) + cmpb $5, %al + ja .L361 + leaq .L350(%rip), %rdi + pushq %rbx + .cfi_def_cfa_offset 16 + .cfi_offset 3, -16 + movslq (%rdi,%rax,4), %rax + addq %rdi, %rax + notrack jmp *%rax + .section .rodata + .align 4 + .align 4 +.L350: + .long .L355-.L350 + .long .L354-.L350 + .long .L353-.L350 + .long .L352-.L350 + .long .L351-.L350 + .long .L349-.L350 + .text + .p2align 4,,10 + .p2align 3 +.L351: + call rand@PLT + movl __ntsys_stack_pointer(%rip), %ebx + movslq %eax, %rdx + movl %eax, %esi + imulq $-2139062143, %rdx, %rdx + sarl $31, %esi + leal -1(%rbx), %ecx + movl %ecx, __ntsys_stack_pointer(%rip) + shrq $32, %rdx + addl %eax, %edx + sarl $7, %edx + subl %esi, %edx + movl %edx, %esi + sall $8, %esi + subl %edx, %esi + movq __ntsys_stack(%rip), %rdx + subl %esi, %eax + movb %al, (%rdx,%rcx) + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L349: + .cfi_restore_state + movzbl (%rsi,%rdx), %eax + addl $3, %ecx + popq %rbx + .cfi_remember_state + .cfi_restore 3 + .cfi_def_cfa_offset 8 + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%rsi,%rdx), %eax + movl %ecx, __ntsys_stack_pointer(%rip) + movb %al, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %edi + jmp srand@PLT + .p2align 4,,10 + .p2align 3 +.L355: + .cfi_restore_state + leaq (%rsi,%rdx), %rdi + movq stdout(%rip), %rsi + call fputs@PLT +.L356: + movl __ntsys_stack_pointer(%rip), %edi + movq %rdi, %rbx + addq __ntsys_stack(%rip), %rdi + call strlen@PLT + leal 1(%rbx,%rax), %eax + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + movl %eax, __ntsys_stack_pointer(%rip) + ret + .p2align 4,,10 + .p2align 3 +.L353: + .cfi_restore_state + movzbl (%rsi,%rdx), %eax + addl $3, %ecx + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 8 + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movzbl 1(%rsi,%rdx), %eax + movl %ecx, __ntsys_stack_pointer(%rip) + movb %al, 1+arg1_fGH6VSEzu7qNiGVE(%rip) + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, fGH6VSEzu7qNiGVE_stat(%rip) + movl __ntsys_buffer_size(%rip), %eax + subl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + ret + .p2align 4,,10 + .p2align 3 +.L352: + .cfi_restore_state + leaq (%rsi,%rdx), %rdi + call system@PLT + movl %eax, fGH6VSEzu7qNiGVE_stat(%rip) + testl %eax, %eax + je .L356 + movl __ntsys_buffer_size(%rip), %eax + subl $1, %eax + movl %eax, __ntsys_buffer_ptr(%rip) + jmp .L356 + .p2align 4,,10 + .p2align 3 +.L354: + movq stdin(%rip), %rdi + call getc@PLT + movq __ntsys_stack(%rip), %rdx + movl %eax, %ecx + movl __ntsys_stack_pointer(%rip), %eax + subl $1, %eax + movl %eax, __ntsys_stack_pointer(%rip) + movb %cl, (%rdx,%rax) + popq %rbx + .cfi_def_cfa_offset 8 + ret +.L361: + .cfi_restore 3 + ret + .cfi_endproc +.LFE62: + .size nt_fs_syscall, .-nt_fs_syscall + .p2align 4 + .type operation, @function +operation: +.LFB33: + .cfi_startproc + movl __ntsys_buffer_ptr(%rip), %eax + movl __ntsys_stack_pointer(%rip), %r10d + pushq %r12 + .cfi_def_cfa_offset 16 + .cfi_offset 12, -16 + pushq %rbp + .cfi_def_cfa_offset 24 + .cfi_offset 6, -24 + leal 1(%rax), %edx + pushq %rbx + .cfi_def_cfa_offset 32 + .cfi_offset 3, -32 + movl %edi, %ebx + movl %edx, __ntsys_buffer_ptr(%rip) + movq __ntsys_buffer(%rip), %rdx + movzbl (%rdx,%rax), %r9d + movq %r9, %rsi + movl %r9d, %ebp + andl $15, %esi + andl $15, %ebp + je .L365 + movq __ntsys_stack(%rip), %r11 + movl %r10d, %edx + xorl %eax, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rcx + leaq (%r11,%rdx), %rdi + .p2align 4,,10 + .p2align 3 +.L366: + movzbl (%rdi,%rax), %edx + movb %dl, (%rcx,%rax) + movq %rax, %rdx + leaq 1(%rax), %rax + cmpq %rax, %rsi + jne .L366 + movzbl %bpl, %eax + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %rdi + leal (%r10,%rax), %r12d + xorl %eax, %eax + movl %r12d, __ntsys_stack_pointer(%rip) + movq %r12, %r10 + leaq (%r11,%r12), %r8 + .p2align 4,,10 + .p2align 3 +.L367: + movzbl (%r8,%rax), %ecx + movb %cl, (%rdi,%rax) + movq %rax, %rcx + addq $1, %rax + cmpq %rdx, %rcx + jne .L367 + cmpb $3, %bl + je .L378 + cmpb $4, %bl + je .L379 + cmpb $2, %bl + je .L380 + cmpb $-15, %r9b + je .L381 + ja .L382 + cmpb $4, %r9b + je .L389 + ja .L384 + cmpb $1, %r9b + jne .L427 +.L381: + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + addb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 + .p2align 4,,10 + .p2align 3 +.L379: + cmpb $-15, %r9b + je .L413 + ja .L414 + cmpb $4, %r9b + je .L374 + ja .L375 + cmpb $1, %r9b + je .L415 + cmpb $2, %r9b + jne .L372 + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + xorl %edx, %edx + divw (%rdi) + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 + .p2align 4,,10 + .p2align 3 +.L380: + cmpb $-15, %r9b + je .L394 + ja .L395 + cmpb $4, %r9b + je .L401 + ja .L397 + cmpb $1, %r9b + je .L394 + cmpb $2, %r9b + jne .L372 +.L403: + movzwl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + subw arg2_fGH6VSEzu7qNiGVE(%rip), %ax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 + .p2align 4,,10 + .p2align 3 +.L378: + cmpb $-15, %r9b + je .L404 + ja .L405 + cmpb $4, %r9b + je .L409 + ja .L371 + cmpb $1, %r9b + je .L406 + cmpb $2, %r9b + jne .L372 +.L411: + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + imulw arg1_fGH6VSEzu7qNiGVE(%rip), %ax + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + .p2align 4,,10 + .p2align 3 +.L393: + movl %r10d, __ntsys_stack_pointer(%rip) +.L425: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + andl $14, %r9d + movb %al, (%r11,%r12) + je .L364 +.L422: + movl $1, %eax + leaq arg1_fGH6VSEzu7qNiGVE(%rip), %rcx + .p2align 4,,10 + .p2align 3 +.L423: + movq __ntsys_stack(%rip), %rdi + movzbl (%rcx,%rax), %r8d + movl __ntsys_stack_pointer(%rip), %edx + addq %rax, %rdi + addq $1, %rax + movb %r8b, (%rdi,%rdx) + cmpq %rax, %rsi + jne .L423 +.L364: + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 24 + popq %rbp + .cfi_def_cfa_offset 16 + popq %r12 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L365: + .cfi_restore_state + cmpb $3, %dil + je .L461 + cmpb $4, %dil + je .L462 + cmpb $2, %dil + je .L376 + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + cmpb $4, %r9b + je .L389 + ja .L384 +.L427: + cmpb $2, %r9b + jne .L372 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + addw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L382: + cmpb $-12, %r9b + je .L389 + cmpb $-8, %r9b + je .L390 + cmpb $-14, %r9b + jne .L393 + movzwl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + addw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L395: + cmpb $-12, %r9b + je .L401 + cmpb $-8, %r9b + je .L402 + cmpb $-14, %r9b + je .L403 + jmp .L393 +.L414: + cmpb $-12, %r9b + je .L418 + cmpb $-8, %r9b + je .L419 + cmpb $-14, %r9b + jne .L393 + movswl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movswl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + cltd + idivl %ecx + movw %ax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L405: + cmpb $-12, %r9b + je .L409 + cmpb $-8, %r9b + je .L410 + cmpb $-14, %r9b + je .L411 + jmp .L393 +.L376: + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + cmpb $4, %r9b + je .L401 + ja .L397 +.L372: + movl %r10d, __ntsys_stack_pointer(%rip) + testb %bpl, %bpl + je .L364 + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %edx + movq __ntsys_stack(%rip), %rax + movb %dl, (%rax,%r10) + jmp .L422 +.L390: + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + addq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L410: + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + imulq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L402: + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + subq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L419: + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + cqto + idivq (%rdi) + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L384: + cmpb $8, %r9b + jne .L388 + movq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + addq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L462: + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + leaq arg2_fGH6VSEzu7qNiGVE(%rip), %rdi + cmpb $4, %r9b + je .L374 + jbe .L372 +.L375: + cmpb $8, %r9b + jne .L388 + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + xorl %edx, %edx + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + divq arg2_fGH6VSEzu7qNiGVE(%rip) + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L461: + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + cmpb $4, %r9b + je .L409 + jbe .L372 +.L371: + cmpb $8, %r9b + jne .L388 + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + imulq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + movl %r10d, %r12d + movq __ntsys_stack(%rip), %r11 + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L397: + cmpb $8, %r9b + jne .L388 + movq arg1_fGH6VSEzu7qNiGVE(%rip), %rax + subq arg2_fGH6VSEzu7qNiGVE(%rip), %rax + movl %r10d, %r12d + movq %rax, arg1_fGH6VSEzu7qNiGVE(%rip) + movq __ntsys_stack(%rip), %r11 + jmp .L393 + .p2align 4,,10 + .p2align 3 +.L388: + movl %r10d, __ntsys_stack_pointer(%rip) + testb %bpl, %bpl + je .L364 + movq __ntsys_stack(%rip), %r11 + movl %r10d, %r12d + jmp .L425 +.L401: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + subl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L394: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + subb arg2_fGH6VSEzu7qNiGVE(%rip), %al + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L409: + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + imull arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L389: + movl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + addl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L415: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + divb (%rdi) + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L418: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + cltd + idivl (%rdi) + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L404: + movzbl arg2_fGH6VSEzu7qNiGVE(%rip), %eax + mulb arg1_fGH6VSEzu7qNiGVE(%rip) +.L412: + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + movl %r10d, __ntsys_stack_pointer(%rip) + movb %al, (%r11,%r12) + jmp .L364 +.L406: + movzbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + mulb arg2_fGH6VSEzu7qNiGVE(%rip) + movb %al, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L374: + movl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + xorl %edx, %edx + divl (%rdi) + movl %eax, arg1_fGH6VSEzu7qNiGVE(%rip) + jmp .L393 +.L413: + movsbl arg1_fGH6VSEzu7qNiGVE(%rip), %eax + movsbl arg2_fGH6VSEzu7qNiGVE(%rip), %ecx + cltd + idivl %ecx + jmp .L412 + .cfi_endproc +.LFE33: + .size operation, .-operation + .p2align 4 + .type add, @function +add: +.LFB34: + .cfi_startproc + endbr64 + movl $1, %edi + jmp operation + .cfi_endproc +.LFE34: + .size add, .-add + .p2align 4 + .type sub, @function +sub: +.LFB35: + .cfi_startproc + endbr64 + movl $2, %edi + jmp operation + .cfi_endproc +.LFE35: + .size sub, .-sub + .p2align 4 + .type mul, @function +mul: +.LFB36: + .cfi_startproc + endbr64 + movl $3, %edi + jmp operation + .cfi_endproc +.LFE36: + .size mul, .-mul + .p2align 4 + .type div_r, @function +div_r: +.LFB37: + .cfi_startproc + endbr64 + movl $4, %edi + jmp operation + .cfi_endproc +.LFE37: + .size div_r, .-div_r + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "\033[1mntsys: \033[91m%s\033[0m\n" + .text + .p2align 4 + .globl ntsys_error + .type ntsys_error, @function +ntsys_error: +.LFB27: + .cfi_startproc + endbr64 + movq %rdi, %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + jmp __printf_chk@PLT + .cfi_endproc +.LFE27: + .size ntsys_error, .-ntsys_error + .section .rodata.str1.1 +.LC1: + .string "Out of memory!" + .text + .p2align 4 + .globl ntsys_get_str + .type ntsys_get_str, @function +ntsys_get_str: +.LFB66: + .cfi_startproc + endbr64 + pushq %r14 + .cfi_def_cfa_offset 16 + .cfi_offset 14, -16 + pushq %r13 + .cfi_def_cfa_offset 24 + .cfi_offset 13, -24 + pushq %r12 + .cfi_def_cfa_offset 32 + .cfi_offset 12, -32 + pushq %rbp + .cfi_def_cfa_offset 40 + .cfi_offset 6, -40 + movq %rsi, %rbp + pushq %rbx + .cfi_def_cfa_offset 48 + .cfi_offset 3, -48 + testq %rdi, %rdi + je .L469 + call free@PLT +.L469: + movq %rbp, %rdi + xorl %r14d, %r14d + xorl %ebx, %ebx + movl $1, %r12d + call ftell@PLT + movq %rax, %r13 + jmp .L470 + .p2align 4,,10 + .p2align 3 +.L472: + cmpl $10, %eax + je .L504 + cmpl $13, %eax + je .L504 + cmpl $33, %eax + cmovnb %r12d, %r14d + addq $1, %rbx +.L470: + movq %rbp, %rdi + call getc@PLT + cmpl $-1, %eax + jne .L472 + testb %r14b, %r14b + jne .L541 +.L473: + xorl %r13d, %r13d + jmp .L468 + .p2align 4,,10 + .p2align 3 +.L541: + testq %rbx, %rbx + je .L473 +.L479: + movq %r13, %rsi + xorl %edx, %edx + movq %rbp, %rdi + call fseek@PLT + leaq 1(%rbx), %rdi + call malloc@PLT + movq %rax, %r13 + testq %rax, %rax + je .L481 + movq %rax, %r12 + movq %rax, %r14 + movq $-18434, %rbx + jmp .L482 + .p2align 4,,10 + .p2align 3 +.L484: + movb %al, (%r14) + addq $1, %r14 +.L482: + movq %rbp, %rdi + call getc@PLT + leal 1(%rax), %edx + cmpl $14, %edx + ja .L484 + btq %rdx, %rbx + jc .L484 + movb $0, (%r14) + movq %r13, %rdi + call strlen@PLT + testq %rax, %rax + je .L485 + movzbl 0(%r13), %edx + leaq -1(%r13), %rcx + movq %rcx, %rbx + cmpb $34, %dl + je .L542 + cmpb $59, %dl + je .L503 + cmpb $35, %dl + jne .L543 +.L503: + xorl %ebp, %ebp +.L498: + movb $0, 1(%rcx) + movq %r13, %rdi + call strlen@PLT + xorl %esi, %esi +.L491: + addq $1, %rbp + addq $1, %rbx + cmpq %rax, %rbp + jnb .L494 +.L544: + movzbl 1(%rbx), %edx + movq %rbx, %rcx + cmpb $34, %dl + je .L495 + cmpb $59, %dl + je .L505 + cmpb $35, %dl + jne .L488 +.L505: + testb %sil, %sil + je .L498 + addq $1, %rbp + addq $1, %rbx + cmpq %rax, %rbp + jb .L544 +.L494: + cmpb $0, 0(%r13) + je .L485 + testq %rax, %rax + je .L485 + addq %r13, %rax + .p2align 4,,10 + .p2align 3 +.L497: + cmpb $32, (%r12) + ja .L468 + addq $1, %r12 + cmpq %rax, %r12 + jne .L497 +.L485: + movq %r13, %rdi + call free@PLT +.L539: + movl $5, %edi + call malloc@PLT + movl $1936941424, (%rax) + movq %rax, %r13 + movb $0, 4(%rax) +.L468: + popq %rbx + .cfi_remember_state + .cfi_def_cfa_offset 40 + movq %r13, %rax + popq %rbp + .cfi_def_cfa_offset 32 + popq %r12 + .cfi_def_cfa_offset 24 + popq %r13 + .cfi_def_cfa_offset 16 + popq %r14 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L542: + .cfi_restore_state + movq %r13, %rcx + xorl %esi, %esi + xorl %ebp, %ebp + .p2align 4,,10 + .p2align 3 +.L495: + cmpb $92, (%rcx) + je .L491 + xorl $1, %esi + jmp .L491 + .p2align 4,,10 + .p2align 3 +.L488: + cmpb $44, %dl + jne .L491 + testb %sil, %sil + jne .L491 +.L492: + movb $32, 1(%rcx) + movq %r13, %rdi + call strlen@PLT + xorl %esi, %esi + jmp .L491 + .p2align 4,,10 + .p2align 3 +.L504: + testb %r14b, %r14b + je .L539 + testq %rbx, %rbx + jne .L479 + jmp .L539 +.L543: + xorl %ebp, %ebp + cmpb $44, %dl + je .L492 + xorl %esi, %esi + jmp .L491 +.L481: + leaq .LC1(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L473 + .cfi_endproc +.LFE66: + .size ntsys_get_str, .-ntsys_get_str + .section .rodata.str1.1 +.LC2: + .string "No close of string!" +.LC3: + .string "Unknown ident!" + .text + .p2align 4 + .globl ntsys_get_arg + .type ntsys_get_arg, @function +ntsys_get_arg: +.LFB68: + .cfi_startproc + endbr64 + pushq %r15 + .cfi_def_cfa_offset 16 + .cfi_offset 15, -16 + pushq %r14 + .cfi_def_cfa_offset 24 + .cfi_offset 14, -24 + pushq %r13 + .cfi_def_cfa_offset 32 + .cfi_offset 13, -32 + pushq %r12 + .cfi_def_cfa_offset 40 + .cfi_offset 12, -40 + movq %rdi, %r12 + pushq %rbp + .cfi_def_cfa_offset 48 + .cfi_offset 6, -48 + pushq %rbx + .cfi_def_cfa_offset 56 + .cfi_offset 3, -56 + subq $8, %rsp + .cfi_def_cfa_offset 64 + movq 8(%rdi), %rbx + movzbl (%rbx), %edx + leal -1(%rdx), %eax + cmpb $31, %al + ja .L549 + .p2align 4,,10 + .p2align 3 +.L546: + movzbl 1(%rbx), %edx + addq $1, %rbx + leal -1(%rdx), %eax + cmpb $31, %al + jbe .L546 +.L549: + movzbl (%rbx), %eax + cmpb $34, %al + je .L604 + cmpb $32, %al + ja .L605 + movq %rbx, %r13 + xorl %ebp, %ebp +.L553: + movq %rbx, %rdi + call strlen@PLT + movq %rbx, %rdi + movq %rax, %rdx + leaq 1(%rbp), %rax + cmpq %rax, %rdx + sbbq $-1, %rbp + addq %rbx, %rbp + movq %rbp, 8(%r12) + movb $0, 0(%r13) + call strlen@PLT + leaq -1(%rbx,%rax), %rdx + movzbl (%rdx), %eax + cmpb $10, %al + je .L583 + cmpb $13, %al + je .L583 + movzbl (%rbx), %eax + testb %al, %al + je .L558 +.L608: + cmpb $34, %al + je .L606 +.L562: + movq %rbx, (%r12) + addq $8, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + movq %rbx, %rax + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L605: + .cfi_restore_state + movq %rbx, %rax + xorl %ebp, %ebp + xorl %ecx, %ecx + .p2align 4,,10 + .p2align 3 +.L551: + movzbl 1(%rax), %edx + addq $1, %rax + addq $1, %rbp + movq %rax, %r13 + cmpb $34, %dl + je .L607 + cmpb $32, %dl + ja .L551 + testb %cl, %cl + je .L553 + testb %dl, %dl + jne .L551 + jmp .L553 + .p2align 4,,10 + .p2align 3 +.L607: + movzbl -1(%rax), %edx +.L547: + movl %ecx, %esi + xorl $1, %esi + cmpb $92, %dl + cmovne %esi, %ecx + jmp .L551 + .p2align 4,,10 + .p2align 3 +.L583: + movb $0, (%rdx) + movzbl (%rbx), %eax + testb %al, %al + jne .L608 +.L558: + xorl %ebx, %ebx + jmp .L562 + .p2align 4,,10 + .p2align 3 +.L604: + movq %rbx, %rax + xorl %ecx, %ecx + xorl %ebp, %ebp + jmp .L547 + .p2align 4,,10 + .p2align 3 +.L606: + leaq 1(%rbx), %r14 + movq %r14, %rdi + call strlen@PLT + leaq (%rbx,%rax), %rdx + cmpb $34, (%rdx) + jne .L560 + movl $2, %ecx + cmpq %rcx, %rax + cmovb %rcx, %rax + cmpb $92, -2(%r14,%rax) + je .L560 + movb $0, (%rdx) + movq %r14, %rdi + movq %r14, %rbp + leaq .L572(%rip), %r15 + call strlen@PLT + jmp .L563 + .p2align 4,,10 + .p2align 3 +.L565: + addq $1, %rbp +.L563: + movq %rbp, %rdx + subq %rbx, %rdx + subq $1, %rdx + cmpq %rax, %rdx + jnb .L609 + cmpb $92, 0(%rbp) + jne .L565 + movl $1, %r13d + jmp .L564 + .p2align 4,,10 + .p2align 3 +.L566: + movzbl 0(%rbp,%r13), %eax + movb %al, -1(%rbp,%r13) + addq $1, %r13 +.L564: + movq %rbp, %rdi + call strlen@PLT + cmpq %rax, %r13 + jb .L566 + movb $0, -1(%rbp,%rax) + movzbl 0(%rbp), %eax + cmpb $118, %al + jg .L567 + cmpb $96, %al + jle .L610 + subl $97, %eax + cmpb $21, %al + ja .L567 + movzbl %al, %eax + movslq (%r15,%rax,4), %rax + addq %r15, %rax + notrack jmp *%rax + .section .rodata + .align 4 + .align 4 +.L572: + .long .L578-.L572 + .long .L577-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L576-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L575-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L567-.L572 + .long .L574-.L572 + .long .L567-.L572 + .long .L573-.L572 + .long .L567-.L572 + .long .L571-.L572 + .text + .p2align 4,,10 + .p2align 3 +.L567: + leaq .LC3(%rip), %rdx + movl $2, %edi + xorl %eax, %eax + xorl %ebx, %ebx + leaq .LC0(%rip), %rsi + call __printf_chk@PLT + jmp .L562 +.L571: + movb $11, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L573: + movb $9, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L574: + movb $13, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L575: + movb $10, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L576: + movb $12, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L577: + movb $8, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L578: + movb $7, 0(%rbp) + movq %r14, %rdi + call strlen@PLT + jmp .L565 + .p2align 4,,10 + .p2align 3 +.L609: + movq %r14, %rbx + jmp .L562 + .p2align 4,,10 + .p2align 3 +.L610: + cmpb $34, %al + je .L603 + cmpb $48, %al + jne .L567 + movb $0, 0(%rbp) +.L603: + movq %r14, %rdi + call strlen@PLT + jmp .L565 +.L560: + leaq .LC2(%rip), %rdx + movl $2, %edi + xorl %eax, %eax + xorl %ebx, %ebx + leaq .LC0(%rip), %rsi + call __printf_chk@PLT + jmp .L562 + .cfi_endproc +.LFE68: + .size ntsys_get_arg, .-ntsys_get_arg + .p2align 4 + .globl __load_label + .type __load_label, @function +__load_label: +.LFB74: + .cfi_startproc + endbr64 + pushq %r13 + .cfi_def_cfa_offset 16 + .cfi_offset 13, -16 + pushq %r12 + .cfi_def_cfa_offset 24 + .cfi_offset 12, -24 + pushq %rbp + .cfi_def_cfa_offset 32 + .cfi_offset 6, -32 + pushq %rbx + .cfi_def_cfa_offset 40 + .cfi_offset 3, -40 + movq %rdi, %rbx + subq $8, %rsp + .cfi_def_cfa_offset 48 + movq 16(%rdi), %rbp + movq %rbp, %rdi + call strlen@PLT + movq %rbp, %rdi + movb $0, -1(%rbp,%rax) + call strlen@PLT + leaq 1(%rax), %r12 + movq 56(%rbx), %rax + movq %r12, %rdi + movq (%rax), %rdx + movq 40(%rbx), %rax + leaq (%rax,%rdx,8), %r13 + call malloc@PLT + movq %rax, 0(%r13) + testq %rax, %rax + je .L615 + movq %r12, %rdx + movq %rbp, %rsi + movq %rax, %rdi + call __strcpy_chk@PLT + movq 8(%rbx), %rdi + call ftell@PLT + movq 56(%rbx), %rdx + movq 48(%rbx), %rcx + movq %rax, %rsi + movq (%rdx), %rax + movw %si, (%rcx,%rax,2) + addq $1, %rax + movq %rax, (%rdx) + xorl %eax, %eax +.L611: + addq $8, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 40 + popq %rbx + .cfi_def_cfa_offset 32 + popq %rbp + .cfi_def_cfa_offset 24 + popq %r12 + .cfi_def_cfa_offset 16 + popq %r13 + .cfi_def_cfa_offset 8 + ret +.L615: + .cfi_restore_state + leaq .LC1(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + movl $1, %eax + jmp .L611 + .cfi_endproc +.LFE74: + .size __load_label, .-__load_label + .section .rodata.str1.1 +.LC4: + .string "Cannot find argument!" +.LC5: + .string "byte" +.LC6: + .string "word" +.LC7: + .string "dword" +.LC8: + .string "qword" +.LC9: + .string "sbyte" +.LC10: + .string "sword" +.LC11: + .string "sdword" +.LC12: + .string "sqword" +.LC13: + .string "Incorrect datatype!" +.LC14: + .string "Unknown number system!" + .section .rodata.str1.8,"aMS",@progbits,1 + .align 8 +.LC15: + .string "Incorrect datatype! For jump to label please use db type!" + .align 8 +.LC16: + .string "\033[1mntsys: \033[91mUndefined operator \"%s\"!\033[0m\n" + .text + .p2align 4 + .globl __ntsys_arg_function_loader + .type __ntsys_arg_function_loader, @function +__ntsys_arg_function_loader: +.LFB77: + .cfi_startproc + endbr64 + pushq %r15 + .cfi_def_cfa_offset 16 + .cfi_offset 15, -16 + pushq %r14 + .cfi_def_cfa_offset 24 + .cfi_offset 14, -24 + pushq %r13 + .cfi_def_cfa_offset 32 + .cfi_offset 13, -32 + movq %rdi, %r13 + pushq %r12 + .cfi_def_cfa_offset 40 + .cfi_offset 12, -40 + pushq %rbp + .cfi_def_cfa_offset 48 + .cfi_offset 6, -48 + pushq %rbx + .cfi_def_cfa_offset 56 + .cfi_offset 3, -56 + subq $136, %rsp + .cfi_def_cfa_offset 192 + movq %fs:40, %rax + movq %rax, 120(%rsp) + xorl %eax, %eax + cmpb $0, 64(%rdi) + jne .L731 +.L617: + leaq 45(%rsp), %rax + movq 0(%r13), %rbp + movq %rax, 24(%rsp) +.L663: + movq %rbp, %rdi + call ntsys_get_arg + testq %rax, %rax + je .L668 +.L664: + movq 0(%r13), %rbp + movq 0(%rbp), %r12 + movq %r12, 16(%r13) + testq %r12, %r12 + je .L668 + movq %r12, %rdi + call strlen@PLT + cmpb $58, -1(%r12,%rax) + je .L732 + movq 24(%r13), %rax + movq %rax, 8(%rsp) + movq 32(%r13), %rax + movq %rax, 16(%rsp) + testq %rax, %rax + je .L623 + xorl %ebx, %ebx + leaq 48(%rsp), %rbp + .p2align 4,,10 + .p2align 3 +.L622: + movq 8(%rsp), %rax + xorl %r14d, %r14d + movq (%rax,%rbx,8), %r15 + movq %r15, %rdi + call strlen@PLT + jmp .L662 + .p2align 4,,10 + .p2align 3 +.L625: + cmpb $61, (%r15,%r14) + je .L624 + addq $1, %r14 +.L662: + cmpq %rax, %r14 + jne .L625 +.L624: + movq %r15, %rsi + movq %rbp, %rdi + movl $64, %ecx + movq %r14, %rdx + call __strncpy_chk@PLT + movq %rbp, %rsi + movq %r12, %rdi + movb $0, 48(%rsp,%r14) + call strcmp@PLT + testl %eax, %eax + je .L733 + addq $1, %rbx + cmpq %rbx, 16(%rsp) + jne .L622 +.L623: + movq %r12, %rdx + leaq .LC16(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT +.L620: + movl $1, %eax +.L616: + movq 120(%rsp), %rdx + subq %fs:40, %rdx + jne .L734 + addq $136, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + ret +.L733: + .cfi_restore_state + leaq 1(%r15,%r14), %rbx + xorl %r14d, %r14d + jmp .L627 + .p2align 4,,10 + .p2align 3 +.L738: + movzbl 46(%rsp), %eax + cmpb $84, %al + je .L735 + cmpb $68, %al + je .L736 + cmpb $83, %al + je .L737 +.L637: + addq $2, %rbx +.L627: + movq %rbx, %rdi + call strlen@PLT + cmpq $1, %rax + jbe .L730 + movq 24(%rsp), %rdi + movl $2, %edx + movq %rbx, %rsi + call strncpy@PLT + cmpb $58, 45(%rsp) + movb $0, 47(%rsp) + je .L738 + movq 24(%rsp), %rdi + xorl %esi, %esi + movl $16, %edx + call strtol@PLT + movq 8(%r13), %rsi + movsbl %al, %edi + call fputc@PLT + jmp .L637 +.L732: + cmpb $0, 64(%r13) + jne .L663 + movq %r13, %rdi + call __load_label + cmpl $1, %eax + je .L620 +.L730: + movq 0(%r13), %rbp + movq %rbp, %rdi + call ntsys_get_arg + testq %rax, %rax + jne .L664 +.L668: + cmpb $0, 64(%r13) + je .L665 + xorl %eax, %eax + jmp .L616 + .p2align 4,,10 + .p2align 3 +.L735: + movq 0(%r13), %rdi + call ntsys_get_arg + testq %rax, %rax + je .L658 + movq 0(%r13), %rax + movq (%rax), %r12 + movq %r12, 16(%r13) + testq %r12, %r12 + je .L658 + leaq .LC5(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L672 + leaq .LC6(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L674 + movzbl (%r12), %ebp + cmpl $100, %ebp + je .L739 +.L684: + leaq .LC7(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L675 + leaq .LC8(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L676 + leaq .LC9(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L677 + leaq .LC10(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L678 + leaq .LC11(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L679 + leaq .LC12(%rip), %rsi + movq %r12, %rdi + call strcmp@PLT + testl %eax, %eax + je .L680 + cmpl $100, %ebp + je .L740 +.L685: + leaq .LC13(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L637 + .p2align 4,,10 + .p2align 3 +.L736: + movq 0(%r13), %rdi + call ntsys_get_arg + testq %rax, %rax + je .L658 + movq 0(%r13), %rbp + movq 0(%rbp), %r15 + movq %r15, 16(%r13) + testq %r15, %r15 + je .L658 + movzbl (%r15), %eax + subl $48, %eax + cmpb $9, %al + ja .L642 + movzbl 1(%r15), %eax + cmpb $120, %al + je .L681 + cmpb $98, %al + je .L682 + leal -48(%rax), %edx + cmpb $9, %dl + jbe .L683 + cmpb $32, %al + ja .L741 +.L683: + movl $10, %edx +.L644: + xorl %esi, %esi + movq %r15, %rdi + call strtol@PLT + movq 8(%r13), %rcx + movq %rax, 32(%rsp) + cmpb $-15, %r14b + je .L645 + ja .L646 + cmpb $4, %r14b + je .L647 + ja .L648 + cmpb $1, %r14b + je .L645 + cmpb $2, %r14b + jne .L637 +.L649: + leaq 32(%rsp), %rdi + movl $2, %edx + movl $1, %esi + call fwrite@PLT + jmp .L637 + .p2align 4,,10 + .p2align 3 +.L658: + leaq .LC4(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L637 +.L737: + movq 0(%r13), %rdi + call ntsys_get_arg + testq %rax, %rax + je .L658 + movq 0(%r13), %rax + movq (%rax), %r12 + movq %r12, 16(%r13) + testq %r12, %r12 + je .L658 + xorl %ebp, %ebp + jmp .L659 + .p2align 4,,10 + .p2align 3 +.L660: + movsbl (%r12,%rbp), %edi + addq $1, %rbp + call fputc@PLT +.L659: + movq %r12, %rdi + call strlen@PLT + movq 8(%r13), %rsi + cmpq %rax, %rbp + jb .L660 + xorl %edi, %edi + call fputc@PLT + jmp .L637 +.L739: + cmpb $119, 1(%r12) + jne .L684 + cmpb $0, 2(%r12) + jne .L684 +.L674: + movl $2, %edi + movl $2, %r14d +.L633: + movq 8(%r13), %rsi + call fputc@PLT + jmp .L637 +.L642: + cmpb $-78, %r14b + jne .L742 + cmpb $0, 64(%r13) + je .L653 + movq 56(%r13), %rax + movq (%rax), %rbp + testq %rbp, %rbp + je .L638 + movq 40(%r13), %r14 + xorl %r12d, %r12d + jmp .L656 +.L655: + addq $1, %r12 + cmpq %rbp, %r12 + je .L638 +.L656: + movq (%r14,%r12,8), %rsi + movq %r15, %rdi + call strcmp@PLT + testl %eax, %eax + jne .L655 + movq 48(%r13), %rax + movq 8(%r13), %rcx + leaq 32(%rsp), %rdi + movl $2, %edx + movl $1, %esi + movzwl (%rax,%r12,2), %eax + movw %ax, 32(%rsp) + call fwrite@PLT +.L638: + movl $-78, %r14d + jmp .L637 +.L672: + movl $1, %edi + movl $1, %r14d + jmp .L633 +.L742: + leaq .LC15(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L637 +.L665: + movq 8(%r13), %rdi + call ftell@PLT + movq 72(%r13), %rdx + addl $1, %eax + movl %eax, (%rdx) + xorl %eax, %eax + jmp .L616 +.L731: + cmpb $1, fGH6VSEzu7qNiGVE_hd_ew(%rip) + je .L617 + movq 8(%rdi), %rsi + movl $77, %edi + movb $1, fGH6VSEzu7qNiGVE_hd_ew(%rip) + call fputc@PLT + movq 8(%r13), %rsi + movl $90, %edi + call fputc@PLT + movq 72(%r13), %rdi + movq 8(%r13), %rcx + leaq fGH6VSEzu7qNiGVE_mem_size(%rip), %rax + movq %rax, 80(%r13) + movl $4, %edx + movl $1, %esi + addl $8, (%rdi) + call fwrite@PLT + movq 8(%r13), %rcx + movq 80(%r13), %rdi + movl $2, %edx + movl $1, %esi + call fwrite@PLT + jmp .L617 +.L646: + cmpb $-12, %r14b + je .L647 + cmpb $-8, %r14b + je .L651 + cmpb $-14, %r14b + je .L649 + jmp .L637 +.L681: + movl $16, %edx +.L643: + addq $2, %r15 + jmp .L644 +.L682: + movl $2, %edx + jmp .L643 +.L675: + movl $4, %edi + movl $4, %r14d + jmp .L633 +.L648: + cmpb $8, %r14b + jne .L637 +.L651: + leaq 32(%rsp), %rdi + movl $8, %edx + movl $1, %esi + call fwrite@PLT + jmp .L637 +.L741: + leaq .LC14(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L637 +.L647: + leaq 32(%rsp), %rdi + movl $4, %edx + movl $1, %esi + call fwrite@PLT + jmp .L637 +.L645: + leaq 32(%rsp), %rdi + movl $1, %edx + movl $1, %esi + call fwrite@PLT + jmp .L637 +.L676: + movl $8, %edi + movl $8, %r14d + jmp .L633 +.L653: + movq 8(%r13), %rsi + movl $69, %edi + call putc@PLT + movq 8(%r13), %rsi + movl $70, %edi + call putc@PLT + jmp .L638 +.L677: + movl $241, %edi + movl $-15, %r14d + jmp .L633 +.L734: + call __stack_chk_fail@PLT +.L740: + cmpb $98, 1(%r12) + jne .L685 + cmpb $0, 2(%r12) + jne .L685 + movq 8(%r13), %rsi + movl $2, %edi + call fputc@PLT + jmp .L638 +.L680: + movl $248, %edi + movl $-8, %r14d + jmp .L633 +.L679: + movl $244, %edi + movl $-12, %r14d + jmp .L633 +.L678: + movl $242, %edi + movl $-14, %r14d + jmp .L633 + .cfi_endproc +.LFE77: + .size __ntsys_arg_function_loader, .-__ntsys_arg_function_loader + .p2align 4 + .globl ntsys_asm_from_string + .type ntsys_asm_from_string, @function +ntsys_asm_from_string: +.LFB78: + .cfi_startproc + endbr64 + subq $120, %rsp + .cfi_def_cfa_offset 128 + movq %rsi, %xmm0 + movq %fs:40, %rax + movq %rax, 104(%rsp) + xorl %eax, %eax + movq %rsp, %rax + movdqa %xmm0, %xmm1 + leaq 16(%rsp), %rdi + movq %rax, 16(%rsp) + leaq ntsys_asm_table(%rip), %rax + punpcklqdq %xmm1, %xmm1 + movq %rax, 40(%rsp) + movq 128(%rsp), %rax + movq %rdx, 24(%rsp) + movq %rax, 72(%rsp) + movq 136(%rsp), %rax + movq %rsi, 32(%rsp) + movq $30, 48(%rsp) + movq %r8, 56(%rsp) + movq %r9, 64(%rsp) + movb %cl, 80(%rsp) + movq %rax, 88(%rsp) + movq $0, 96(%rsp) + movaps %xmm1, (%rsp) + call __ntsys_arg_function_loader + movq 104(%rsp), %rdx + subq %fs:40, %rdx + jne .L746 + addq $120, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 8 + ret +.L746: + .cfi_restore_state + call __stack_chk_fail@PLT + .cfi_endproc +.LFE78: + .size ntsys_asm_from_string, .-ntsys_asm_from_string + .section .rodata.str1.1 +.LC17: + .string "r" +.LC18: + .string "Cannot open assembler file!" + .section .rodata.str1.8 + .align 8 +.LC19: + .string "Cannot create or rewrite output file!" + .section .rodata.str1.1 +.LC20: + .string "wb" + .text + .p2align 4 + .globl ntsys_compile_asm + .type ntsys_compile_asm, @function +ntsys_compile_asm: +.LFB79: + .cfi_startproc + endbr64 + pushq %r15 + .cfi_def_cfa_offset 16 + .cfi_offset 15, -16 + pushq %r14 + .cfi_def_cfa_offset 24 + .cfi_offset 14, -24 + pushq %r13 + .cfi_def_cfa_offset 32 + .cfi_offset 13, -32 + pushq %r12 + .cfi_def_cfa_offset 40 + .cfi_offset 12, -40 + pushq %rbp + .cfi_def_cfa_offset 48 + .cfi_offset 6, -48 + pushq %rbx + .cfi_def_cfa_offset 56 + .cfi_offset 3, -56 + subq $184, %rsp + .cfi_def_cfa_offset 240 + movq %rsi, 40(%rsp) + leaq .LC17(%rip), %rsi + movq %fs:40, %rax + movq %rax, 168(%rsp) + xorl %eax, %eax + call fopen@PLT + testq %rax, %rax + je .L798 + movq %rax, %rbx + xorl %r15d, %r15d + leaq 80(%rsp), %r12 + xorl %r14d, %r14d + .p2align 4,,10 + .p2align 3 +.L748: + movq %r14, %rdi + movq %rbx, %rsi + call ntsys_get_str + movq %rax, %xmm0 + movq %rax, %r14 + punpcklqdq %xmm0, %xmm0 + testq %rax, %rax + je .L799 + movq %r12, %rdi + movaps %xmm0, 80(%rsp) + call ntsys_get_arg + movq %rax, %rdi + movq %rax, %rbp + call strlen@PLT + cmpb $58, -1(%rbp,%rax) + jne .L748 + addq $1, %r15 + jmp .L748 + .p2align 4,,10 + .p2align 3 +.L799: + leaq 0(,%r15,8), %rax + movl $1, %esi + movq %rax, %rdi + movq %rax, 32(%rsp) + call calloc@PLT + leaq (%r15,%r15), %rdi + movq %rax, %r12 + call malloc@PLT + movq %r12, %xmm2 + movq %rbx, %rdi + movq %rax, 24(%rsp) + movhps 24(%rsp), %xmm2 + movaps %xmm2, (%rsp) + call rewind@PLT + movl $0, 52(%rsp) + movq $0, 56(%rsp) + call tmpfile@PLT + movq %rax, %rbp + testq %rax, %rax + je .L795 + leaq ntsys_asm_table(%rip), %r13 + jmp .L752 + .p2align 4,,10 + .p2align 3 +.L757: + leaq 64(%rsp), %rax + movdqa (%rsp), %xmm1 + leaq 80(%rsp), %rdi + movq %rbp, 88(%rsp) + movq %rax, 80(%rsp) + leaq 56(%rsp), %rax + movq %rax, 136(%rsp) + leaq 52(%rsp), %rax + movq %r14, 96(%rsp) + movq %r13, 104(%rsp) + movq $30, 112(%rsp) + movb $0, 144(%rsp) + movq %rax, 152(%rsp) + movq $0, 160(%rsp) + movaps %xmm0, 64(%rsp) + movups %xmm1, 120(%rsp) + call __ntsys_arg_function_loader + testl %eax, %eax + jne .L800 +.L752: + movq %r14, %rdi + movq %rbx, %rsi + call ntsys_get_str + movq %rax, %xmm0 + movq %rax, %r14 + punpcklqdq %xmm0, %xmm0 + testq %rax, %rax + jne .L757 + movq %rbp, %rdi + call fclose@PLT + movq %rbx, %rdi + call rewind@PLT + movq 40(%rsp), %rdi + leaq .LC20(%rip), %rsi + call fopen@PLT + movq %rax, %rbp + testq %rax, %rax + je .L795 + leaq ntsys_asm_table(%rip), %r13 + jmp .L758 + .p2align 4,,10 + .p2align 3 +.L762: + leaq 64(%rsp), %rax + leaq 80(%rsp), %rdi + movq %rbp, 88(%rsp) + movq %rax, 80(%rsp) + movq 24(%rsp), %rax + movq %r14, 96(%rsp) + movq %rax, 128(%rsp) + leaq 56(%rsp), %rax + movq %rax, 136(%rsp) + leaq 52(%rsp), %rax + movq %r13, 104(%rsp) + movq $30, 112(%rsp) + movq %r12, 120(%rsp) + movb $1, 144(%rsp) + movq %rax, 152(%rsp) + movq $0, 160(%rsp) + movaps %xmm0, 64(%rsp) + call __ntsys_arg_function_loader + testl %eax, %eax + jne .L801 +.L758: + movq %r14, %rdi + movq %rbx, %rsi + call ntsys_get_str + movq %rax, %xmm0 + movq %rax, %r14 + punpcklqdq %xmm0, %xmm0 + testq %rax, %rax + jne .L762 + movq %rbp, %rdi + call fflush@PLT + movq %rbx, %rdi + call fclose@PLT + movq %rbp, %rdi + call fclose@PLT + testq %r15, %r15 + je .L763 + movq 32(%rsp), %rbp + movq %r12, %rbx + addq %r12, %rbp + .p2align 4,,10 + .p2align 3 +.L765: + movq (%rbx), %rdi + testq %rdi, %rdi + je .L764 + call free@PLT +.L764: + addq $8, %rbx + cmpq %rbp, %rbx + jne .L765 +.L763: + movq %r12, %rdi + call free@PLT + movq 24(%rsp), %rdi + call free@PLT + xorl %eax, %eax +.L747: + movq 168(%rsp), %rdx + subq %fs:40, %rdx + jne .L802 + addq $184, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L800: + .cfi_restore_state + movq %r14, %rdi + call free@PLT + movq %rbx, %rdi + call fclose@PLT + movq %rbp, %rdi + call fclose@PLT + testq %r15, %r15 + je .L759 + movq 32(%rsp), %rbp + movq %r12, %rbx + addq %r12, %rbp + .p2align 4,,10 + .p2align 3 +.L756: + movq (%rbx), %rdi + testq %rdi, %rdi + je .L755 + call free@PLT +.L755: + addq $8, %rbx + cmpq %rbp, %rbx + jne .L756 +.L759: + movq %r12, %rdi + call free@PLT + movq 24(%rsp), %rdi + call free@PLT +.L749: + movl $1, %eax + jmp .L747 + .p2align 4,,10 + .p2align 3 +.L801: + movq %r14, %rdi + call free@PLT + movq %rbx, %rdi + call fclose@PLT + movq %rbp, %rdi + call fclose@PLT + testq %r15, %r15 + je .L759 + movq 32(%rsp), %rbp + movq %r12, %rbx + addq %r12, %rbp + .p2align 4,,10 + .p2align 3 +.L761: + movq (%rbx), %rdi + testq %rdi, %rdi + je .L760 + call free@PLT +.L760: + addq $8, %rbx + cmpq %rbp, %rbx + jne .L761 + jmp .L759 +.L795: + leaq .LC19(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + movq %rbx, %rdi + call fclose@PLT + jmp .L749 +.L798: + leaq .LC18(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L749 +.L802: + call __stack_chk_fail@PLT + .cfi_endproc +.LFE79: + .size ntsys_compile_asm, .-ntsys_compile_asm + .section .rodata.str1.1 +.LC21: + .string "rb" +.LC22: + .string "Cannot open file!" + .section .rodata.str1.8 + .align 8 +.LC23: + .string "Header read error or digital signature is invalid!" + .section .rodata.str1.1 +.LC24: + .string "File size %lu 0x%lX\n" +.LC25: + .string "Memory size %u 0x%X\n" + .section .rodata.str1.8 + .align 8 +.LC26: + .string "Command %d 0x%X\nPosition %d 0x%X\nStack point %d 0x%X\n\n" + .section .rodata.str1.1 +.LC27: + .string "dump.bin" +.LC28: + .string "Cannot open dump file!" +.LC29: + .string "Press any key to continue..." + .text + .p2align 4 + .globl ntsys_api_call + .type ntsys_api_call, @function +ntsys_api_call: +.LFB82: + .cfi_startproc + endbr64 + pushq %r15 + .cfi_def_cfa_offset 16 + .cfi_offset 15, -16 + pushq %r14 + .cfi_def_cfa_offset 24 + .cfi_offset 14, -24 + pushq %r13 + .cfi_def_cfa_offset 32 + .cfi_offset 13, -32 + pushq %r12 + .cfi_def_cfa_offset 40 + .cfi_offset 12, -40 + pushq %rbp + .cfi_def_cfa_offset 48 + .cfi_offset 6, -48 + pushq %rbx + .cfi_def_cfa_offset 56 + .cfi_offset 3, -56 + movl %esi, %ebx + leaq .LC21(%rip), %rsi + subq $56, %rsp + .cfi_def_cfa_offset 112 + movq %fs:40, %rax + movq %rax, 40(%rsp) + xorl %eax, %eax + call fopen@PLT + testq %rax, %rax + je .L830 + movl $8, %edx + leaq 32(%rsp), %rdi + movq %rax, %rcx + movq %rax, %r12 + movl $1, %esi + call fread@PLT + movzwl 32(%rsp), %edx + movb $0, 24(%rsp) + movw %dx, 22(%rsp) + movl 34(%rsp), %edx + movl %edx, 25(%rsp) + movzwl 38(%rsp), %edx + movw %dx, 29(%rsp) + movzbl 22(%rsp), %edx + subl $77, %edx + je .L831 + cmpw $8, %ax + jne .L821 +.L835: + testw %dx, %dx + jne .L821 + movzwl 29(%rsp), %r14d + movl 25(%rsp), %r15d + movq %r14, %rdi + movq %r14, %rbp + call malloc@PLT + movq %rax, (%rsp) + testq %rax, %rax + je .L832 + leaq -8(%r15), %r13 + testb %bl, %bl + jne .L833 + movq (%rsp), %rax + movq %r13, %rdi + movl %r14d, __ntsys_stack_pointer(%rip) + movq %rax, __ntsys_stack(%rip) + call malloc@PLT + movq %r13, %rdx + movl $1, %esi + movq %r12, %rcx + movq %rax, %rdi + movq %rax, __ntsys_buffer(%rip) + movq %rax, %rbx + leaq fn_fGH6VSEzu7qNiGVE(%rip), %r13 + call fread@PLT + xorl %edx, %edx + xorl %esi, %esi + movl $0, __ntsys_buffer_ptr(%rip) + movq %rax, __ntsys_buffer_size(%rip) + testq %rax, %rax + je .L815 + .p2align 4,,10 + .p2align 3 +.L814: + movzbl (%rbx,%rsi), %eax + addl $1, %edx + movl %edx, __ntsys_buffer_ptr(%rip) + call *0(%r13,%rax,8) + movl __ntsys_buffer_ptr(%rip), %esi + cmpq __ntsys_buffer_size(%rip), %rsi + movq %rsi, %rdx + jb .L814 +.L815: + movq %rbx, %rdi + call free@PLT + movl fGH6VSEzu7qNiGVE_stat(%rip), %ebx +.L817: + movq %r12, %rdi + call fclose@PLT + movq (%rsp), %rdi + call free@PLT +.L803: + movq 40(%rsp), %rax + subq %fs:40, %rax + jne .L834 + addq $56, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + movl %ebx, %eax + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L831: + .cfi_restore_state + movzbl 23(%rsp), %edx + subl $90, %edx + cmpw $8, %ax + je .L835 +.L821: + leaq .LC23(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT +.L805: + movl $1, %ebx + jmp .L803 + .p2align 4,,10 + .p2align 3 +.L833: + movq %r15, %rcx + movq %r15, %rdx + leaq .LC24(%rip), %rsi + xorl %eax, %eax + movl $2, %edi + leaq .LC26(%rip), %r15 + call __printf_chk@PLT + movl %r14d, %ecx + movl %r14d, %edx + movl $2, %edi + leaq .LC25(%rip), %rsi + xorl %eax, %eax + call __printf_chk@PLT + movq (%rsp), %rax + movq %r13, %rdi + movl %r14d, __ntsys_stack_pointer(%rip) + leaq .LC20(%rip), %r14 + movq %rax, __ntsys_stack(%rip) + call malloc@PLT + movq %r13, %rdx + movq %r12, %rcx + movl $1, %esi + movq %rax, %rdi + movq %rax, __ntsys_buffer(%rip) + movq %rax, %rbx + leaq fn_fGH6VSEzu7qNiGVE(%rip), %r13 + call fread@PLT + movq stdout(%rip), %rsi + movl $10, %edi + movl $0, __ntsys_buffer_ptr(%rip) + movq %rax, __ntsys_buffer_size(%rip) + call putc@PLT + movl __ntsys_buffer_ptr(%rip), %eax + cmpq __ntsys_buffer_size(%rip), %rax + movq %rax, %r9 + jnb .L815 + movq %r12, 8(%rsp) + .p2align 4,,10 + .p2align 3 +.L812: + movl __ntsys_stack_pointer(%rip), %edx + subq $8, %rsp + .cfi_def_cfa_offset 120 + movzbl (%rbx,%rax), %r12d + xorl %eax, %eax + movq stdout(%rip), %rdi + movl $2, %esi + pushq %rdx + .cfi_def_cfa_offset 128 + movl %r12d, %ecx + movl %r12d, %r8d + pushq %rdx + .cfi_def_cfa_offset 136 + movq %r15, %rdx + pushq %r9 + .cfi_def_cfa_offset 144 + call __fprintf_chk@PLT + movslq %r12d, %r8 + addq $32, %rsp + .cfi_def_cfa_offset 112 + addl $1, __ntsys_buffer_ptr(%rip) + call *0(%r13,%r8,8) + movq %r14, %rsi + leaq .LC27(%rip), %rdi + call fopen@PLT + movq %rax, %r12 + testq %rax, %rax + je .L836 + movq __ntsys_stack(%rip), %rdi + movq %rax, %rcx + movq %rbp, %rdx + movl $1, %esi + call fwrite@PLT + movq %r12, %rdi + call fclose@PLT + leaq .LC29(%rip), %rdi + call puts@PLT + movq stdin(%rip), %rdi + call getc@PLT + movl __ntsys_buffer_ptr(%rip), %eax + cmpq __ntsys_buffer_size(%rip), %rax + movq %rax, %r9 + jb .L812 + movq 8(%rsp), %r12 + jmp .L815 +.L836: + leaq .LC28(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + movq 8(%rsp), %r12 + movl $1, %ebx + call __printf_chk@PLT + jmp .L817 +.L830: + leaq .LC22(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L805 +.L832: + leaq .LC1(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + call __printf_chk@PLT + jmp .L805 +.L834: + call __stack_chk_fail@PLT + .cfi_endproc +.LFE82: + .size ntsys_api_call, .-ntsys_api_call + .section .rodata.str1.1 +.LC30: + .string "out.exe" + .section .rodata + .align 8 +.LC31: + .ascii "BINARY Emulator - LICENSE GPL V3\n VM for micron files\nU" + .ascii "sing:\n ntsys [OPTIONS...] [FILENAME]\nExamples:\n nts" + .ascii "ys --asm FILE.asm\n ntsys [--asm] FILE.asm --out FILE.exe" + .ascii "\n ntsys FILE.exe" + .string "\nOptions:\n --help / -h - show this help\n --version / -v - show version\n --asm / -a - compile assembler program\n --out / -o - set output file name\n --debug / -d - display debugging info\n --mem / -m - asm output memory size" + .string "" + .section .rodata.str1.1 +.LC32: + .string "1.0" +.LC33: + .string "Unknown option!" +.LC34: + .string "Please specify the file name!" + .text + .p2align 4 + .globl _lib_ntsys_main + .type _lib_ntsys_main, @function +_lib_ntsys_main: +.LFB83: + .cfi_startproc + endbr64 + pushq %r15 + .cfi_def_cfa_offset 16 + .cfi_offset 15, -16 + pushq %r14 + .cfi_def_cfa_offset 24 + .cfi_offset 14, -24 + pushq %r13 + .cfi_def_cfa_offset 32 + .cfi_offset 13, -32 + pushq %r12 + .cfi_def_cfa_offset 40 + .cfi_offset 12, -40 + pushq %rbp + .cfi_def_cfa_offset 48 + .cfi_offset 6, -48 + pushq %rbx + .cfi_def_cfa_offset 56 + .cfi_offset 3, -56 + subq $24, %rsp + .cfi_def_cfa_offset 80 + cmpl $1, %edi + jbe .L838 + leal -2(%rdi), %eax + movb $0, 15(%rsp) + leaq 8(%rsi), %rbx + xorl %edx, %edx + leaq 16(%rsi,%rax,8), %r13 + xorl %ebp, %ebp + movl $82, %r8d + xorl %r12d, %r12d + leaq .LC30(%rip), %r15 + leaq .L842(%rip), %r14 + jmp .L851 + .p2align 4,,10 + .p2align 3 +.L839: + testb %bpl, %bpl + jne .L855 + testb %dl, %dl + jne .L860 + movq %rdi, %r12 +.L847: + addq $8, %rbx + cmpq %r13, %rbx + je .L861 +.L851: + movq (%rbx), %rdi + cmpb $45, (%rdi) + jne .L839 + xorl %eax, %eax + cmpb $45, 1(%rdi) + sete %al + movzbl 1(%rdi,%rax), %eax + subl $97, %eax + cmpb $21, %al + ja .L840 + movzbl %al, %eax + movslq (%r14,%rax,4), %rax + addq %r14, %rax + notrack jmp *%rax + .section .rodata + .align 4 + .align 4 +.L842: + .long .L854-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L846-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L845-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L844-.L842 + .long .L840-.L842 + .long .L843-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L840-.L842 + .long .L841-.L842 + .text + .p2align 4,,10 + .p2align 3 +.L855: + addq $8, %rbx + movq %rdi, %r15 + xorl %ebp, %ebp + cmpq %r13, %rbx + jne .L851 +.L861: + testq %r12, %r12 + je .L838 + testb %bpl, %bpl + jne .L838 + cmpb $82, %r8b + je .L862 + addq $24, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + movq %r15, %rsi + movq %r12, %rdi + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + jmp ntsys_compile_asm + .p2align 4,,10 + .p2align 3 +.L860: + .cfi_restore_state + movl $10, %edx + xorl %esi, %esi + movb %r8b, 14(%rsp) + call strtol@PLT + movzbl 14(%rsp), %r8d + xorl %edx, %edx + movw %ax, fGH6VSEzu7qNiGVE_mem_size(%rip) + jmp .L847 + .p2align 4,,10 + .p2align 3 +.L840: + leaq .LC33(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT +.L850: + movl $1, %eax + jmp .L837 + .p2align 4,,10 + .p2align 3 +.L841: + leaq .LC32(%rip), %rdi + call puts@PLT +.L848: + xorl %eax, %eax +.L837: + addq $24, %rsp + .cfi_remember_state + .cfi_def_cfa_offset 56 + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + ret + .p2align 4,,10 + .p2align 3 +.L844: + .cfi_restore_state + movl $1, %edx + movl $65, %r8d + jmp .L847 + .p2align 4,,10 + .p2align 3 +.L845: + leaq .LC31(%rip), %rdi + call puts@PLT + jmp .L848 + .p2align 4,,10 + .p2align 3 +.L843: + movl $1, %ebp + movl $65, %r8d + jmp .L847 + .p2align 4,,10 + .p2align 3 +.L854: + movl $65, %r8d + jmp .L847 + .p2align 4,,10 + .p2align 3 +.L846: + movb $1, 15(%rsp) + jmp .L847 +.L838: + leaq .LC34(%rip), %rdx + leaq .LC0(%rip), %rsi + movl $2, %edi + xorl %eax, %eax + call __printf_chk@PLT + jmp .L850 +.L862: + movzbl 15(%rsp), %esi + addq $24, %rsp + .cfi_def_cfa_offset 56 + movq %r12, %rdi + popq %rbx + .cfi_def_cfa_offset 48 + popq %rbp + .cfi_def_cfa_offset 40 + popq %r12 + .cfi_def_cfa_offset 32 + popq %r13 + .cfi_def_cfa_offset 24 + popq %r14 + .cfi_def_cfa_offset 16 + popq %r15 + .cfi_def_cfa_offset 8 + jmp ntsys_api_call + .cfi_endproc +.LFE83: + .size _lib_ntsys_main, .-_lib_ntsys_main + .section .text.startup,"ax",@progbits + .p2align 4 + .globl main + .type main, @function +main: +.LFB84: + .cfi_startproc + endbr64 + jmp _lib_ntsys_main + .cfi_endproc +.LFE84: + .size main, .-main + .globl ntsys_asm_table + .section .rodata.str1.1 +.LC35: + .string "push=00:T:D" +.LC36: + .string "pop=01:T" +.LC37: + .string "push.string=02:S" +.LC38: + .string "add=03:T" +.LC39: + .string "sub=04:T" +.LC40: + .string "mul=05:T" +.LC41: + .string "div=06:T" +.LC42: + .string "not=07:T" +.LC43: + .string "shr=08:T" +.LC44: + .string "shl=09:T" +.LC45: + .string "or=0A:T" +.LC46: + .string "and=0B:T" +.LC47: + .string "xor=0C:T" +.LC48: + .string "jmp=0D" +.LC49: + .string "bnez=0E:T" +.LC50: + .string "bez=0F:T" +.LC51: + .string "up=10:T" +.LC52: + .string "down=11:T" +.LC53: + .string "eq=12:T" +.LC54: + .string "neq=13:T" +.LC55: + .string "upne=14:T" +.LC56: + .string "downe=15:T" +.LC57: + .string "mwrt=16:T" +.LC58: + .string "mread=17:T" +.LC59: + .string "getsp=18" +.LC60: + .string "setsp=19" +.LC61: + .string "syscall=1A" +.LC62: + .string "swap=1B:T" +.LC63: + .string "dup=1C:T" +.LC64: + .string "pass=" + .section .data.rel.local,"aw" + .align 32 + .type ntsys_asm_table, @object + .size ntsys_asm_table, 240 +ntsys_asm_table: + .quad .LC35 + .quad .LC36 + .quad .LC37 + .quad .LC38 + .quad .LC39 + .quad .LC40 + .quad .LC41 + .quad .LC42 + .quad .LC43 + .quad .LC44 + .quad .LC45 + .quad .LC46 + .quad .LC47 + .quad .LC48 + .quad .LC49 + .quad .LC50 + .quad .LC51 + .quad .LC52 + .quad .LC53 + .quad .LC54 + .quad .LC55 + .quad .LC56 + .quad .LC57 + .quad .LC58 + .quad .LC59 + .quad .LC60 + .quad .LC61 + .quad .LC62 + .quad .LC63 + .quad .LC64 + .globl ntsys_command_count + .section .rodata + .align 8 + .type ntsys_command_count, @object + .size ntsys_command_count, 8 +ntsys_command_count: + .quad 30 + .globl fGH6VSEzu7qNiGVE_hd_ew + .bss + .type fGH6VSEzu7qNiGVE_hd_ew, @object + .size fGH6VSEzu7qNiGVE_hd_ew, 1 +fGH6VSEzu7qNiGVE_hd_ew: + .zero 1 + .globl fGH6VSEzu7qNiGVE_mem_size + .data + .align 2 + .type fGH6VSEzu7qNiGVE_mem_size, @object + .size fGH6VSEzu7qNiGVE_mem_size, 2 +fGH6VSEzu7qNiGVE_mem_size: + .value 4096 + .globl fn_fGH6VSEzu7qNiGVE + .section .data.rel.local + .align 32 + .type fn_fGH6VSEzu7qNiGVE, @object + .size fn_fGH6VSEzu7qNiGVE, 232 +fn_fGH6VSEzu7qNiGVE: + .quad push + .quad pop + .quad push_str + .quad add + .quad sub + .quad mul + .quad div_r + .quad nt_not + .quad nt_shr + .quad nt_shl + .quad nt_or + .quad nt_and + .quad nt_xor + .quad nt_goto + .quad bnez + .quad bez + .quad up + .quad down + .quad eq + .quad neq + .quad upne + .quad downe + .quad mwrt + .quad mrd + .quad get_sp + .quad set_sp + .quad nt_fs_syscall + .quad stack_swap + .quad stack_copy + .globl arg2_fGH6VSEzu7qNiGVE + .bss + .align 8 + .type arg2_fGH6VSEzu7qNiGVE, @object + .size arg2_fGH6VSEzu7qNiGVE, 8 +arg2_fGH6VSEzu7qNiGVE: + .zero 8 + .globl arg1_fGH6VSEzu7qNiGVE + .align 8 + .type arg1_fGH6VSEzu7qNiGVE, @object + .size arg1_fGH6VSEzu7qNiGVE, 8 +arg1_fGH6VSEzu7qNiGVE: + .zero 8 + .globl fGH6VSEzu7qNiGVE_stat + .align 4 + .type fGH6VSEzu7qNiGVE_stat, @object + .size fGH6VSEzu7qNiGVE_stat, 4 +fGH6VSEzu7qNiGVE_stat: + .zero 4 + .globl __ntsys_buffer_ptr + .align 4 + .type __ntsys_buffer_ptr, @object + .size __ntsys_buffer_ptr, 4 +__ntsys_buffer_ptr: + .zero 4 + .globl __ntsys_buffer_size + .align 8 + .type __ntsys_buffer_size, @object + .size __ntsys_buffer_size, 8 +__ntsys_buffer_size: + .zero 8 + .globl __ntsys_buffer + .align 8 + .type __ntsys_buffer, @object + .size __ntsys_buffer, 8 +__ntsys_buffer: + .zero 8 + .globl __ntsys_stack_pointer + .align 4 + .type __ntsys_stack_pointer, @object + .size __ntsys_stack_pointer, 4 +__ntsys_stack_pointer: + .zero 4 + .globl __ntsys_stack + .align 8 + .type __ntsys_stack, @object + .size __ntsys_stack, 8 +__ntsys_stack: + .zero 8 + .ident "GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0" + .section .note.GNU-stack,"",@progbits + .section .note.gnu.property,"a" + .align 8 + .long 1f - 0f + .long 4f - 1f + .long 5 +0: + .string "GNU" +1: + .align 8 + .long 0xc0000002 + .long 3f - 2f +2: + .long 0x3 +3: + .align 8 +4: diff --git a/swap.asm b/swap.asm new file mode 100644 index 0000000..4d6f9c9 --- /dev/null +++ b/swap.asm @@ -0,0 +1,9 @@ +main: ; Метка main + push.string "Hello, world!\n" ; Строка + push byte 0x00 ; Дескриптор + syscall ; Системный вызов + push.string "Hello, world!\n" ; Строка + push byte 3 ; Кол-во блоков + swap word ; Блок размером в 2 байта + push byte 0x00 ; Дескриптор + syscall ; Системный вызов \ No newline at end of file diff --git a/swap.exe b/swap.exe new file mode 100644 index 0000000000000000000000000000000000000000..77107b3252bfd4521337f68302a8cc08f763d9bf GIT binary patch literal 53 qcmeZ`GGkz1XkcLSNX^N~*HI|XFUm<#