; Disassembly of file: meta_poly.o ; Wed Apr 15 17:49:31 2020 ; Mode: 64 bits ; Syntax: YASM/NASM ; Instruction set: 80386, x64 %include "mkpoly.inc" default rel global readcode global writecode global writeinstruction global readinstruction global replacejunk global main global main_two global prefixes extern printf ; near extern srand ; near extern time ; near extern strchr ; near extern rand ; near extern free ; near extern close ; near extern write ; near extern open ; near extern __ctype_b_loc ; near extern strdup ; near extern strlen ; near extern fread ; near extern malloc ; near extern ftell ; near extern fseek ; near extern fopen ; near extern _GLOBAL_OFFSET_TABLE_ ; byte SECTION .text align_16 ?start_2: align 16 ?start_1: readcode:; Function begin push rbp ; 0000 _ 55 mov rbp, rsp ; 0001 _ 48: 89. E5 sub rsp, 32 ; 0004 _ 48: 83. EC, 20 mov qword [rbp-18H], rdi ; 0008 _ 48: 89. 7D, E8 mov rax, qword [rbp-18H] ; 000C _ 48: 8B. 45, E8 lea rsi, [rel ?_023] ; 0010 _ 48: 8D. 35, 00000000(rel) mov rdi, rax ; 0017 _ 48: 89. C7 call fopen ; 001A _ E8, 00000000(PLT r) mov qword [rbp-8H], rax ; 001F _ 48: 89. 45, F8 push rax ; 0023 _ 50 nop ; 0024 _ 90 nop ; 0025 _ 90 nop ; 0026 _ 90 nop ; 0027 _ 90 nop ; 0028 _ 90 nop ; 0029 _ 90 nop ; 002A _ 90 nop ; 002B _ 90 pop rax ; 002C _ 58 mov rax, qword [rbp-8H] ; 002D _ 48: 8B. 45, F8 mov edx, 2 ; 0031 _ BA, 00000002 mov esi, 0 ; 0036 _ BE, 00000000 mov rdi, rax ; 003B _ 48: 89. C7 call fseek ; 003E _ E8, 00000000(PLT r) push rax ; 0043 _ 50 nop ; 0044 _ 90 nop ; 0045 _ 90 nop ; 0046 _ 90 nop ; 0047 _ 90 nop ; 0048 _ 90 nop ; 0049 _ 90 nop ; 004A _ 90 nop ; 004B _ 90 pop rax ; 004C _ 58 mov rax, qword [rbp-8H] ; 004D _ 48: 8B. 45, F8 mov rdi, rax ; 0051 _ 48: 89. C7 call ftell ; 0054 _ E8, 00000000(PLT r) mov dword [rel codelen], eax ; 0059 _ 89. 05, 00000000(rel) mov eax, dword [rel codelen] ; 005F _ 8B. 05, 00000000(rel) cdqe ; 0065 _ 48: 98 mov rdi, rax ; 0067 _ 48: 89. C7 call malloc ; 006A _ E8, 00000000(PLT r) mov qword [rel code], rax ; 006F _ 48: 89. 05, 00000000(rel) push rax ; 0076 _ 50 nop ; 0077 _ 90 nop ; 0078 _ 90 nop ; 0079 _ 90 nop ; 007A _ 90 nop ; 007B _ 90 nop ; 007C _ 90 nop ; 007D _ 90 nop ; 007E _ 90 pop rax ; 007F _ 58 mov rax, qword [rbp-8H] ; 0080 _ 48: 8B. 45, F8 mov edx, 0 ; 0084 _ BA, 00000000 mov esi, 0 ; 0089 _ BE, 00000000 mov rdi, rax ; 008E _ 48: 89. C7 call fseek ; 0091 _ E8, 00000000(PLT r) mov eax, dword [rel codelen] ; 0096 _ 8B. 05, 00000000(rel) movsxd rsi, eax ; 009C _ 48: 63. F0 mov rax, qword [rel code] ; 009F _ 48: 8B. 05, 00000000(rel) mov rdx, qword [rbp-8H] ; 00A6 _ 48: 8B. 55, F8 mov rcx, rdx ; 00AA _ 48: 89. D1 mov edx, 1 ; 00AD _ BA, 00000001 mov rdi, rax ; 00B2 _ 48: 89. C7 call fread ; 00B5 _ E8, 00000000(PLT r) push rax ; 00BA _ 50 nop ; 00BB _ 90 nop ; 00BC _ 90 nop ; 00BD _ 90 nop ; 00BE _ 90 nop ; 00BF _ 90 nop ; 00C0 _ 90 nop ; 00C1 _ 90 nop ; 00C2 _ 90 pop rax ; 00C3 _ 58 nop ; 00C4 _ 90 leave ; 00C5 _ C9 ret ; 00C6 _ C3 ; readcode End of function writecode:; Function begin push rbp ; 00C7 _ 55 mov rbp, rsp ; 00C8 _ 48: 89. E5 sub rsp, 48 ; 00CB _ 48: 83. EC, 30 mov qword [rbp-28H], rdi ; 00CF _ 48: 89. 7D, D8 mov rax, qword [rbp-28H] ; 00D3 _ 48: 8B. 45, D8 mov rdi, rax ; 00D7 _ 48: 89. C7 call strlen ; 00DA _ E8, 00000000(PLT r) sub eax, 1 ; 00DF _ 83. E8, 01 mov dword [rbp-10H], eax ; 00E2 _ 89. 45, F0 mov eax, dword [rbp-10H] ; 00E5 _ 8B. 45, F0 movsxd rdx, eax ; 00E8 _ 48: 63. D0 mov rax, qword [rbp-28H] ; 00EB _ 48: 8B. 45, D8 add rax, rdx ; 00EF _ 48: 01. D0 movzx eax, byte [rax] ; 00F2 _ 0F B6. 00 mov byte [rbp-11H], al ; 00F5 _ 88. 45, EF mov rax, qword [rbp-28H] ; 00F8 _ 48: 8B. 45, D8 mov rdi, rax ; 00FC _ 48: 89. C7 call strdup ; 00FF _ E8, 00000000(PLT r) mov qword [rbp-8H], rax ; 0104 _ 48: 89. 45, F8 push rax ; 0108 _ 50 nop ; 0109 _ 90 nop ; 010A _ 90 nop ; 010B _ 90 nop ; 010C _ 90 nop ; 010D _ 90 nop ; 010E _ 90 nop ; 010F _ 90 nop ; 0110 _ 90 pop rax ; 0111 _ 58 call __ctype_b_loc ; 0112 _ E8, 00000000(PLT r) mov rax, qword [rax] ; 0117 _ 48: 8B. 00 movsx rdx, byte [rbp-11H] ; 011A _ 48: 0F BE. 55, EF add rdx, rdx ; 011F _ 48: 01. D2 add rax, rdx ; 0122 _ 48: 01. D0 movzx eax, word [rax] ; 0125 _ 0F B7. 00 movzx eax, ax ; 0128 _ 0F B7. C0 and eax, 800H ; 012B _ 25, 00000800 test eax, eax ; 0130 _ 85. C0 jz ?_001 ; 0132 _ 74, 2E movsx eax, byte [rbp-11H] ; 0134 _ 0F BE. 45, EF lea ecx, [rax-2FH] ; 0138 _ 8D. 48, D1 mov edx, 1717986919 ; 013B _ BA, 66666667 mov eax, ecx ; 0140 _ 89. C8 imul edx ; 0142 _ F7. EA sar edx, 2 ; 0144 _ C1. FA, 02 mov eax, ecx ; 0147 _ 89. C8 sar eax, 31 ; 0149 _ C1. F8, 1F sub edx, eax ; 014C _ 29. C2 mov eax, edx ; 014E _ 89. D0 shl eax, 2 ; 0150 _ C1. E0, 02 add eax, edx ; 0153 _ 01. D0 add eax, eax ; 0155 _ 01. C0 sub ecx, eax ; 0157 _ 29. C1 mov edx, ecx ; 0159 _ 89. CA mov eax, edx ; 015B _ 89. D0 add eax, 48 ; 015D _ 83. C0, 30 jmp ?_002 ; 0160 _ EB, 05 ?_001: mov eax, 48 ; 0162 _ B8, 00000030 ?_002: mov byte [rbp-11H], al ; 0167 _ 88. 45, EF mov eax, dword [rbp-10H] ; 016A _ 8B. 45, F0 movsxd rdx, eax ; 016D _ 48: 63. D0 mov rax, qword [rbp-8H] ; 0170 _ 48: 8B. 45, F8 add rdx, rax ; 0174 _ 48: 01. C2 movzx eax, byte [rbp-11H] ; 0177 _ 0F B6. 45, EF mov byte [rdx], al ; 017B _ 88. 02 mov rax, qword [rbp-8H] ; 017D _ 48: 8B. 45, F8 mov edx, 511 ; 0181 _ BA, 000001FF mov esi, 65 ; 0186 _ BE, 00000041 mov rdi, rax ; 018B _ 48: 89. C7 mov eax, 0 ; 018E _ B8, 00000000 call open ; 0193 _ E8, 00000000(PLT r) mov dword [rbp-0CH], eax ; 0198 _ 89. 45, F4 push rax ; 019B _ 50 nop ; 019C _ 90 nop ; 019D _ 90 nop ; 019E _ 90 nop ; 019F _ 90 nop ; 01A0 _ 90 nop ; 01A1 _ 90 nop ; 01A2 _ 90 nop ; 01A3 _ 90 pop rax ; 01A4 _ 58 mov eax, dword [rel codelen] ; 01A5 _ 8B. 05, 00000000(rel) movsxd rdx, eax ; 01AB _ 48: 63. D0 mov rcx, qword [rel code] ; 01AE _ 48: 8B. 0D, 00000000(rel) mov eax, dword [rbp-0CH] ; 01B5 _ 8B. 45, F4 mov rsi, rcx ; 01B8 _ 48: 89. CE mov edi, eax ; 01BB _ 89. C7 call write ; 01BD _ E8, 00000000(PLT r) mov eax, dword [rbp-0CH] ; 01C2 _ 8B. 45, F4 mov edi, eax ; 01C5 _ 89. C7 call close ; 01C7 _ E8, 00000000(PLT r) mov rax, qword [rbp-8H] ; 01CC _ 48: 8B. 45, F8 mov rdi, rax ; 01D0 _ 48: 89. C7 call free ; 01D3 _ E8, 00000000(PLT r) nop ; 01D8 _ 90 leave ; 01D9 _ C9 ret ; 01DA _ C3 ; writecode End of function writeinstruction:; Function begin push rbp ; 01DB _ 55 mov rbp, rsp ; 01DC _ 48: 89. E5 sub rsp, 16 ; 01DF _ 48: 83. EC, 10 mov dword [rbp-4H], edi ; 01E3 _ 89. 7D, FC mov dword [rbp-8H], esi ; 01E6 _ 89. 75, F8 mov dword [rbp-0CH], edx ; 01E9 _ 89. 55, F4 cmp dword [rbp-0CH], 1 ; 01EC _ 83. 7D, F4, 01 jg ?_003 ; 01F0 _ 7F, 26 mov rdx, qword [rel code] ; 01F2 _ 48: 8B. 15, 00000000(rel) mov eax, dword [rbp-8H] ; 01F9 _ 8B. 45, F8 cdqe ; 01FC _ 48: 98 add rax, rdx ; 01FE _ 48: 01. D0 mov byte [rax], -112 ; 0201 _ C6. 00, 90 push rax ; 0204 _ 50 nop ; 0205 _ 90 nop ; 0206 _ 90 nop ; 0207 _ 90 nop ; 0208 _ 90 nop ; 0209 _ 90 nop ; 020A _ 90 nop ; 020B _ 90 nop ; 020C _ 90 pop rax ; 020D _ 58 mov eax, 1 ; 020E _ B8, 00000001 jmp ?_006 ; 0213 _ E9, 00000125 ?_003: cmp dword [rbp-0CH], 4 ; 0218 _ 83. 7D, F4, 04 jle ?_004 ; 021C _ 7E, 10 call rand ; 021E _ E8, 00000000(PLT r) and eax, 01H ; 0223 _ 83. E0, 01 test eax, eax ; 0226 _ 85. C0 jne ?_005 ; 0228 _ 0F 85, 0000009D ?_004: call rand ; 022E _ E8, 00000000(PLT r) mov ecx, eax ; 0233 _ 89. C1 mov edx, 715827883 ; 0235 _ BA, 2AAAAAAB mov eax, ecx ; 023A _ 89. C8 imul edx ; 023C _ F7. EA mov eax, ecx ; 023E _ 89. C8 sar eax, 31 ; 0240 _ C1. F8, 1F sub edx, eax ; 0243 _ 29. C2 mov eax, edx ; 0245 _ 89. D0 add eax, eax ; 0247 _ 01. C0 add eax, edx ; 0249 _ 01. D0 add eax, eax ; 024B _ 01. C0 sub ecx, eax ; 024D _ 29. C1 mov edx, ecx ; 024F _ 89. CA mov rcx, qword [rel code] ; 0251 _ 48: 8B. 0D, 00000000(rel) mov eax, dword [rbp-8H] ; 0258 _ 8B. 45, F8 cdqe ; 025B _ 48: 98 add rcx, rax ; 025D _ 48: 01. C1 movsxd rdx, edx ; 0260 _ 48: 63. D2 lea rax, [rel prefixes] ; 0263 _ 48: 8D. 05, 00000000(rel) movzx eax, byte [rdx+rax] ; 026A _ 0F B6. 04 02 mov byte [rcx], al ; 026E _ 88. 01 push rax ; 0270 _ 50 nop ; 0271 _ 90 nop ; 0272 _ 90 nop ; 0273 _ 90 nop ; 0274 _ 90 nop ; 0275 _ 90 nop ; 0276 _ 90 nop ; 0277 _ 90 nop ; 0278 _ 90 pop rax ; 0279 _ 58 call rand ; 027A _ E8, 00000000(PLT r) mov edx, eax ; 027F _ 89. C2 mov eax, edx ; 0281 _ 89. D0 sar eax, 31 ; 0283 _ C1. F8, 1F shr eax, 29 ; 0286 _ C1. E8, 1D add edx, eax ; 0289 _ 01. C2 and edx, 07H ; 028B _ 83. E2, 07 sub edx, eax ; 028E _ 29. C2 mov eax, edx ; 0290 _ 89. D0 add eax, 24 ; 0292 _ 83. C0, 18 lea ecx, [rax*8] ; 0295 _ 8D. 0C C5, 00000000 mov eax, dword [rbp-4H] ; 029C _ 8B. 45, FC mov esi, eax ; 029F _ 89. C6 mov rax, qword [rel code] ; 02A1 _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-8H] ; 02A8 _ 8B. 55, F8 movsxd rdx, edx ; 02AB _ 48: 63. D2 add rdx, 1 ; 02AE _ 48: 83. C2, 01 add rax, rdx ; 02B2 _ 48: 01. D0 lea edx, [rcx+rsi] ; 02B5 _ 8D. 14 31 mov byte [rax], dl ; 02B8 _ 88. 10 push rax ; 02BA _ 50 nop ; 02BB _ 90 nop ; 02BC _ 90 nop ; 02BD _ 90 nop ; 02BE _ 90 nop ; 02BF _ 90 nop ; 02C0 _ 90 nop ; 02C1 _ 90 nop ; 02C2 _ 90 pop rax ; 02C3 _ 58 mov eax, 2 ; 02C4 _ B8, 00000002 jmp ?_006 ; 02C9 _ EB, 72 ?_005: mov eax, dword [rbp-4H] ; 02CB _ 8B. 45, FC mov ecx, eax ; 02CE _ 89. C1 mov rdx, qword [rel code] ; 02D0 _ 48: 8B. 15, 00000000(rel) mov eax, dword [rbp-8H] ; 02D7 _ 8B. 45, F8 cdqe ; 02DA _ 48: 98 add rax, rdx ; 02DC _ 48: 01. D0 lea edx, [rcx-48H] ; 02DF _ 8D. 51, B8 mov byte [rax], dl ; 02E2 _ 88. 10 push rax ; 02E4 _ 50 nop ; 02E5 _ 90 nop ; 02E6 _ 90 nop ; 02E7 _ 90 nop ; 02E8 _ 90 nop ; 02E9 _ 90 nop ; 02EA _ 90 nop ; 02EB _ 90 nop ; 02EC _ 90 pop rax ; 02ED _ 58 call rand ; 02EE _ E8, 00000000(PLT r) mov ecx, eax ; 02F3 _ 89. C1 mov rax, qword [rel code] ; 02F5 _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-8H] ; 02FC _ 8B. 55, F8 movsxd rdx, edx ; 02FF _ 48: 63. D2 add rdx, 1 ; 0302 _ 48: 83. C2, 01 add rax, rdx ; 0306 _ 48: 01. D0 mov edx, ecx ; 0309 _ 89. CA mov word [rax], dx ; 030B _ 66: 89. 10 call rand ; 030E _ E8, 00000000(PLT r) mov ecx, eax ; 0313 _ 89. C1 mov rax, qword [rel code] ; 0315 _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-8H] ; 031C _ 8B. 55, F8 movsxd rdx, edx ; 031F _ 48: 63. D2 add rdx, 3 ; 0322 _ 48: 83. C2, 03 add rax, rdx ; 0326 _ 48: 01. D0 mov edx, ecx ; 0329 _ 89. CA mov word [rax], dx ; 032B _ 66: 89. 10 push rax ; 032E _ 50 nop ; 032F _ 90 nop ; 0330 _ 90 nop ; 0331 _ 90 nop ; 0332 _ 90 nop ; 0333 _ 90 nop ; 0334 _ 90 nop ; 0335 _ 90 nop ; 0336 _ 90 pop rax ; 0337 _ 58 mov eax, 5 ; 0338 _ B8, 00000005 ?_006: leave ; 033D _ C9 ret ; 033E _ C3 ; writeinstruction End of function readinstruction:; Function begin push rbp ; 033F _ 55 mov rbp, rsp ; 0340 _ 48: 89. E5 sub rsp, 32 ; 0343 _ 48: 83. EC, 20 mov dword [rbp-14H], edi ; 0347 _ 89. 7D, EC mov dword [rbp-18H], esi ; 034A _ 89. 75, E8 mov rdx, qword [rel code] ; 034D _ 48: 8B. 15, 00000000(rel) mov eax, dword [rbp-18H] ; 0354 _ 8B. 45, E8 cdqe ; 0357 _ 48: 98 add rax, rdx ; 0359 _ 48: 01. D0 movzx eax, byte [rax] ; 035C _ 0F B6. 00 movzx eax, al ; 035F _ 0F B6. C0 mov dword [rbp-8H], eax ; 0362 _ 89. 45, F8 cmp dword [rbp-8H], 144 ; 0365 _ 81. 7D, F8, 00000090 jnz ?_007 ; 036C _ 75, 0A mov eax, 1 ; 036E _ B8, 00000001 jmp ?_011 ; 0373 _ E9, 000000A5 ?_007: push rax ; 0378 _ 50 nop ; 0379 _ 90 nop ; 037A _ 90 nop ; 037B _ 90 nop ; 037C _ 90 nop ; 037D _ 90 nop ; 037E _ 90 nop ; 037F _ 90 nop ; 0380 _ 90 pop rax ; 0381 _ 58 mov eax, dword [rbp-14H] ; 0382 _ 8B. 45, EC add eax, 184 ; 0385 _ 05, 000000B8 cmp dword [rbp-8H], eax ; 038A _ 39. 45, F8 jnz ?_008 ; 038D _ 75, 0A mov eax, 5 ; 038F _ B8, 00000005 jmp ?_011 ; 0394 _ E9, 00000084 ?_008: push rax ; 0399 _ 50 nop ; 039A _ 90 nop ; 039B _ 90 nop ; 039C _ 90 nop ; 039D _ 90 nop ; 039E _ 90 nop ; 039F _ 90 nop ; 03A0 _ 90 nop ; 03A1 _ 90 pop rax ; 03A2 _ 58 mov eax, dword [rbp-8H] ; 03A3 _ 8B. 45, F8 mov esi, eax ; 03A6 _ 89. C6 lea rdi, [rel prefixes] ; 03A8 _ 48: 8D. 3D, 00000000(rel) call strchr ; 03AF _ E8, 00000000(PLT r) test rax, rax ; 03B4 _ 48: 85. C0 jz ?_010 ; 03B7 _ 74, 55 mov rax, qword [rel code] ; 03B9 _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-18H] ; 03C0 _ 8B. 55, E8 movsxd rdx, edx ; 03C3 _ 48: 63. D2 add rdx, 1 ; 03C6 _ 48: 83. C2, 01 add rax, rdx ; 03CA _ 48: 01. D0 movzx eax, byte [rax] ; 03CD _ 0F B6. 00 movzx eax, al ; 03D0 _ 0F B6. C0 mov dword [rbp-4H], eax ; 03D3 _ 89. 45, FC push rax ; 03D6 _ 50 nop ; 03D7 _ 90 nop ; 03D8 _ 90 nop ; 03D9 _ 90 nop ; 03DA _ 90 nop ; 03DB _ 90 nop ; 03DC _ 90 nop ; 03DD _ 90 nop ; 03DE _ 90 pop rax ; 03DF _ 58 cmp dword [rbp-4H], 191 ; 03E0 _ 81. 7D, FC, 000000BF jbe ?_009 ; 03E7 _ 76, 1B cmp dword [rbp-4H], 255 ; 03E9 _ 81. 7D, FC, 000000FF ja ?_009 ; 03F0 _ 77, 12 mov eax, dword [rbp-4H] ; 03F2 _ 8B. 45, FC and eax, 07H ; 03F5 _ 83. E0, 07 cmp dword [rbp-14H], eax ; 03F8 _ 39. 45, EC jnz ?_009 ; 03FB _ 75, 07 mov eax, 2 ; 03FD _ B8, 00000002 jmp ?_011 ; 0402 _ EB, 19 ?_009: push rax ; 0404 _ 50 nop ; 0405 _ 90 nop ; 0406 _ 90 nop ; 0407 _ 90 nop ; 0408 _ 90 nop ; 0409 _ 90 nop ; 040A _ 90 nop ; 040B _ 90 nop ; 040C _ 90 pop rax ; 040D _ 58 ?_010: push rax ; 040E _ 50 nop ; 040F _ 90 nop ; 0410 _ 90 nop ; 0411 _ 90 nop ; 0412 _ 90 nop ; 0413 _ 90 nop ; 0414 _ 90 nop ; 0415 _ 90 nop ; 0416 _ 90 pop rax ; 0417 _ 58 mov eax, 0 ; 0418 _ B8, 00000000 ?_011: leave ; 041D _ C9 ret ; 041E _ C3 ; readinstruction End of function replacejunk:; Function begin push rbp ; 041F _ 55 mov rbp, rsp ; 0420 _ 48: 89. E5 sub rsp, 32 ; 0423 _ 48: 83. EC, 20 mov edi, 0 ; 0427 _ BF, 00000000 call time ; 042C _ E8, 00000000(PLT r) mov edi, eax ; 0431 _ 89. C7 call srand ; 0433 _ E8, 00000000(PLT r) push rax ; 0438 _ 50 nop ; 0439 _ 90 nop ; 043A _ 90 nop ; 043B _ 90 nop ; 043C _ 90 nop ; 043D _ 90 nop ; 043E _ 90 nop ; 043F _ 90 nop ; 0440 _ 90 pop rax ; 0441 _ 58 mov dword [rbp-1CH], 0 ; 0442 _ C7. 45, E4, 00000000 jmp ?_022 ; 0449 _ E9, 000001F1 ?_012: mov rdx, qword [rel code] ; 044E _ 48: 8B. 15, 00000000(rel) mov eax, dword [rbp-1CH] ; 0455 _ 8B. 45, E4 cdqe ; 0458 _ 48: 98 add rax, rdx ; 045A _ 48: 01. D0 movzx eax, byte [rax] ; 045D _ 0F B6. 00 movzx eax, al ; 0460 _ 0F B6. C0 mov dword [rbp-10H], eax ; 0463 _ 89. 45, F0 mov rax, qword [rel code] ; 0466 _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-1CH] ; 046D _ 8B. 55, E4 add edx, 8 ; 0470 _ 83. C2, 08 movsxd rdx, edx ; 0473 _ 48: 63. D2 add rdx, 1 ; 0476 _ 48: 83. C2, 01 add rax, rdx ; 047A _ 48: 01. D0 movzx eax, byte [rax] ; 047D _ 0F B6. 00 movzx eax, al ; 0480 _ 0F B6. C0 mov dword [rbp-0CH], eax ; 0483 _ 89. 45, F4 mov eax, dword [rbp-10H] ; 0486 _ 8B. 45, F0 sub eax, 80 ; 0489 _ 83. E8, 50 mov dword [rbp-8H], eax ; 048C _ 89. 45, F8 cmp dword [rbp-10H], 79 ; 048F _ 83. 7D, F0, 4F jbe ?_017 ; 0493 _ 0F 86, 00000198 cmp dword [rbp-10H], 87 ; 0499 _ 83. 7D, F0, 57 ja ?_017 ; 049D _ 0F 87, 0000018E push rax ; 04A3 _ 50 nop ; 04A4 _ 90 nop ; 04A5 _ 90 nop ; 04A6 _ 90 nop ; 04A7 _ 90 nop ; 04A8 _ 90 nop ; 04A9 _ 90 nop ; 04AA _ 90 nop ; 04AB _ 90 pop rax ; 04AC _ 58 mov eax, dword [rbp-8H] ; 04AD _ 8B. 45, F8 add eax, 88 ; 04B0 _ 83. C0, 58 cmp dword [rbp-0CH], eax ; 04B3 _ 39. 45, F4 jne ?_018 ; 04B6 _ 0F 85, 00000178 push rax ; 04BC _ 50 nop ; 04BD _ 90 nop ; 04BE _ 90 nop ; 04BF _ 90 nop ; 04C0 _ 90 nop ; 04C1 _ 90 nop ; 04C2 _ 90 nop ; 04C3 _ 90 nop ; 04C4 _ 90 pop rax ; 04C5 _ 58 cmp dword [rbp-8H], 4 ; 04C6 _ 83. 7D, F8, 04 je ?_019 ; 04CA _ 0F 84, 00000167 mov dword [rbp-18H], 0 ; 04D0 _ C7. 45, E8, 00000000 push rax ; 04D7 _ 50 nop ; 04D8 _ 90 nop ; 04D9 _ 90 nop ; 04DA _ 90 nop ; 04DB _ 90 nop ; 04DC _ 90 nop ; 04DD _ 90 nop ; 04DE _ 90 nop ; 04DF _ 90 pop rax ; 04E0 _ 58 jmp ?_014 ; 04E1 _ EB, 06 ?_013: mov eax, dword [rbp-4H] ; 04E3 _ 8B. 45, FC add dword [rbp-18H], eax ; 04E6 _ 01. 45, E8 ?_014: mov eax, dword [rbp-1CH] ; 04E9 _ 8B. 45, E4 lea edx, [rax+1H] ; 04EC _ 8D. 50, 01 mov eax, dword [rbp-18H] ; 04EF _ 8B. 45, E8 add edx, eax ; 04F2 _ 01. C2 mov eax, dword [rbp-8H] ; 04F4 _ 8B. 45, F8 mov esi, edx ; 04F7 _ 89. D6 mov edi, eax ; 04F9 _ 89. C7 call readinstruction ; 04FB _ E8, 00000000(rel) mov dword [rbp-4H], eax ; 0500 _ 89. 45, FC cmp dword [rbp-4H], 0 ; 0503 _ 83. 7D, FC, 00 jnz ?_013 ; 0507 _ 75, DA cmp dword [rbp-18H], 8 ; 0509 _ 83. 7D, E8, 08 jne ?_020 ; 050D _ 0F 85, 00000127 push rax ; 0513 _ 50 nop ; 0514 _ 90 nop ; 0515 _ 90 nop ; 0516 _ 90 nop ; 0517 _ 90 nop ; 0518 _ 90 nop ; 0519 _ 90 nop ; 051A _ 90 nop ; 051B _ 90 pop rax ; 051C _ 58 call rand ; 051D _ E8, 00000000(PLT r) mov ecx, eax ; 0522 _ 89. C1 mov edx, 2454267027 ; 0524 _ BA, 92492493 mov eax, ecx ; 0529 _ 89. C8 imul edx ; 052B _ F7. EA lea eax, [rdx+rcx] ; 052D _ 8D. 04 0A sar eax, 2 ; 0530 _ C1. F8, 02 mov edx, eax ; 0533 _ 89. C2 mov eax, ecx ; 0535 _ 89. C8 sar eax, 31 ; 0537 _ C1. F8, 1F sub edx, eax ; 053A _ 29. C2 mov eax, edx ; 053C _ 89. D0 mov edx, eax ; 053E _ 89. C2 shl edx, 3 ; 0540 _ C1. E2, 03 sub edx, eax ; 0543 _ 29. C2 mov eax, ecx ; 0545 _ 89. C8 sub eax, edx ; 0547 _ 29. D0 mov dword [rbp-8H], eax ; 0549 _ 89. 45, F8 push rax ; 054C _ 50 nop ; 054D _ 90 nop ; 054E _ 90 nop ; 054F _ 90 nop ; 0550 _ 90 nop ; 0551 _ 90 nop ; 0552 _ 90 nop ; 0553 _ 90 nop ; 0554 _ 90 pop rax ; 0555 _ 58 cmp dword [rbp-8H], 3 ; 0556 _ 83. 7D, F8, 03 seta al ; 055A _ 0F 97. C0 movzx eax, al ; 055D _ 0F B6. C0 add dword [rbp-8H], eax ; 0560 _ 01. 45, F8 mov eax, dword [rbp-8H] ; 0563 _ 8B. 45, F8 mov ecx, eax ; 0566 _ 89. C1 mov rdx, qword [rel code] ; 0568 _ 48: 8B. 15, 00000000(rel) mov eax, dword [rbp-1CH] ; 056F _ 8B. 45, E4 cdqe ; 0572 _ 48: 98 add rax, rdx ; 0574 _ 48: 01. D0 lea edx, [rcx+50H] ; 0577 _ 8D. 51, 50 mov byte [rax], dl ; 057A _ 88. 10 push rax ; 057C _ 50 nop ; 057D _ 90 nop ; 057E _ 90 nop ; 057F _ 90 nop ; 0580 _ 90 nop ; 0581 _ 90 nop ; 0582 _ 90 nop ; 0583 _ 90 nop ; 0584 _ 90 pop rax ; 0585 _ 58 mov eax, dword [rbp-8H] ; 0586 _ 8B. 45, F8 mov ecx, eax ; 0589 _ 89. C1 mov rax, qword [rel code] ; 058B _ 48: 8B. 05, 00000000(rel) mov edx, dword [rbp-1CH] ; 0592 _ 8B. 55, E4 add edx, 8 ; 0595 _ 83. C2, 08 movsxd rdx, edx ; 0598 _ 48: 63. D2 add rdx, 1 ; 059B _ 48: 83. C2, 01 add rax, rdx ; 059F _ 48: 01. D0 lea edx, [rcx+58H] ; 05A2 _ 8D. 51, 58 mov byte [rax], dl ; 05A5 _ 88. 10 push rax ; 05A7 _ 50 nop ; 05A8 _ 90 nop ; 05A9 _ 90 nop ; 05AA _ 90 nop ; 05AB _ 90 nop ; 05AC _ 90 nop ; 05AD _ 90 nop ; 05AE _ 90 nop ; 05AF _ 90 pop rax ; 05B0 _ 58 mov dword [rbp-14H], 8 ; 05B1 _ C7. 45, EC, 00000008 mov dword [rbp-18H], 0 ; 05B8 _ C7. 45, E8, 00000000 push rax ; 05BF _ 50 nop ; 05C0 _ 90 nop ; 05C1 _ 90 nop ; 05C2 _ 90 nop ; 05C3 _ 90 nop ; 05C4 _ 90 nop ; 05C5 _ 90 nop ; 05C6 _ 90 nop ; 05C7 _ 90 pop rax ; 05C8 _ 58 jmp ?_016 ; 05C9 _ EB, 3E ?_015: mov eax, dword [rbp-1CH] ; 05CB _ 8B. 45, E4 lea edx, [rax+1H] ; 05CE _ 8D. 50, 01 mov eax, dword [rbp-18H] ; 05D1 _ 8B. 45, E8 lea ecx, [rdx+rax] ; 05D4 _ 8D. 0C 02 mov edx, dword [rbp-14H] ; 05D7 _ 8B. 55, EC mov eax, dword [rbp-8H] ; 05DA _ 8B. 45, F8 mov esi, ecx ; 05DD _ 89. CE mov edi, eax ; 05DF _ 89. C7 call writeinstruction ; 05E1 _ E8, 00000000(rel) mov dword [rbp-4H], eax ; 05E6 _ 89. 45, FC push rax ; 05E9 _ 50 nop ; 05EA _ 90 nop ; 05EB _ 90 nop ; 05EC _ 90 nop ; 05ED _ 90 nop ; 05EE _ 90 nop ; 05EF _ 90 nop ; 05F0 _ 90 nop ; 05F1 _ 90 pop rax ; 05F2 _ 58 mov eax, dword [rbp-4H] ; 05F3 _ 8B. 45, FC add dword [rbp-18H], eax ; 05F6 _ 01. 45, E8 mov eax, dword [rbp-4H] ; 05F9 _ 8B. 45, FC sub dword [rbp-14H], eax ; 05FC _ 29. 45, EC push rax ; 05FF _ 50 nop ; 0600 _ 90 nop ; 0601 _ 90 nop ; 0602 _ 90 nop ; 0603 _ 90 nop ; 0604 _ 90 nop ; 0605 _ 90 nop ; 0606 _ 90 nop ; 0607 _ 90 pop rax ; 0608 _ 58 ?_016: cmp dword [rbp-14H], 0 ; 0609 _ 83. 7D, EC, 00 jnz ?_015 ; 060D _ 75, BC mov eax, dword [rbp-1CH] ; 060F _ 8B. 45, E4 mov esi, eax ; 0612 _ 89. C6 lea rdi, [rel ?_024] ; 0614 _ 48: 8D. 3D, 00000000(rel) mov eax, 0 ; 061B _ B8, 00000000 call printf ; 0620 _ E8, 00000000(PLT r) push rax ; 0625 _ 50 nop ; 0626 _ 90 nop ; 0627 _ 90 nop ; 0628 _ 90 nop ; 0629 _ 90 nop ; 062A _ 90 nop ; 062B _ 90 nop ; 062C _ 90 nop ; 062D _ 90 pop rax ; 062E _ 58 jmp ?_021 ; 062F _ EB, 0A ?_017: nop ; 0631 _ 90 jmp ?_021 ; 0632 _ EB, 07 ?_018: nop ; 0634 _ 90 jmp ?_021 ; 0635 _ EB, 04 ?_019: nop ; 0637 _ 90 jmp ?_021 ; 0638 _ EB, 01 ?_020: nop ; 063A _ 90 ?_021: add dword [rbp-1CH], 1 ; 063B _ 83. 45, E4, 01 ?_022: mov eax, dword [rel codelen] ; 063F _ 8B. 05, 00000000(rel) sub eax, 10 ; 0645 _ 83. E8, 0A cmp dword [rbp-1CH], eax ; 0648 _ 39. 45, E4 jl ?_012 ; 064B _ 0F 8C, FFFFFDFD nop ; 0651 _ 90 leave ; 0652 _ C9 ret ; 0653 _ C3 ; replacejunk End of function main_two: ; Function begin ds push rbp ; 0654 _ 55 mov rbp, rsp ; 0655 _ 48: 89. E5 sub rsp, 16 ; 0658 _ 48: 83. EC, 10 mov dword [rbp-4H], edi ; 065C _ 89. 7D, FC mov qword [rbp-10H], rsi ; 065F _ 48: 89. 75, F0 mov rax, qword [rbp-10H] ; 0663 _ 48: 8B. 45, F0 mov rax, qword [rax] ; 0667 _ 48: 8B. 00 mov rdi, rax ; 066A _ 48: 89. C7 call readcode ; 066D _ E8, 00000000(rel) push rax ; 0672 _ 50 nop ; 0673 _ 90 nop ; 0674 _ 90 nop ; 0675 _ 90 nop ; 0676 _ 90 nop ; 0677 _ 90 nop ; 0678 _ 90 nop ; 0679 _ 90 nop ; 067A _ 90 pop rax call replacejunk ; 067C _ E8, 00000000(rel) push rax ; 0681 _ 50 nop ; 0682 _ 90 nop ; 0683 _ 90 nop ; 0684 _ 90 nop ; 0685 _ 90 nop ; 0686 _ 90 nop ; 0687 _ 90 nop ; 0688 _ 90 nop ; 0689 _ 90 pop rax ; 068A _ 58 mov rax, qword [rbp-10H] ; 068B _ 48: 8B. 45, F0 mov rax, qword [rax] ; 068F _ 48: 8B. 00 mov rdi, rax ; 0692 _ 48: 89. C7 call writecode ; 0695 _ E8, 00000000(rel) push rax ; 069A _ 50 nop ; 069B _ 90 nop ; 069C _ 90 nop ; 069D _ 90 nop ; 069E _ 90 nop ; 069F _ 90 nop ; 06A0 _ 90 nop ; 06A1 _ 90 nop ; 06A2 _ 90 pop rax ; 06A3 _ 58 mov eax, 0 leave ; 06A9 _ C9 ret ; 06AA _ C3 ; main End of function align 16 ?end_1: decrypt_1: push rsi DECRYPTOR_SECTION ?start_1, ?end_1-?start_1 pop rsi ret align 16 ?end_2: decrypt_2: push rsi DECRYPTOR_SECTION ?start_2, ?end_2-?start_2 pop rsi ret main: call decrypt_2 call decrypt_1 call main_two SECTION .data SECTION .bss codelen: resb 4 code: resb 8 SECTION .rodata prefixes: ; byte db 01H, 21H, 31H, 09H, 19H, 29H, 00H ; 0000 _ .!1..). ?_023: ; byte db 72H, 62H, 00H ; 0007 _ rb. ?_024: ; byte db 25H, 64H, 0AH, 00H ; 000A _ %d..