entry0 (char *arg1, int arg2, int arg4); | ; var char *local_38h @ rbp-0x38 | ; var int local_30h @ rbp-0x30 | ; var int local_2eh @ rbp-0x2e | ; var int local_2ch @ rbp-0x2c | ; arg char *arg1 @ rdi | ; arg int arg2 @ rsi | ; arg int arg4 @ rcx | 0x100000c3f 55 push rbp ; [00] -r-x section size 577 named 0.__TEXT.__text | 0x100000c40 4889e5 mov rbp, rsp | 0x100000c43 4157 push r15 | 0x100000c45 4156 push r14 | 0x100000c47 4155 push r13 | 0x100000c49 4154 push r12 | 0x100000c4b 53 push rbx | 0x100000c4c 4883ec18 sub rsp, 0x18 | 0x100000c50 4889f3 mov rbx, rsi ; arg2 | 0x100000c53 4189ff mov r15d, edi ; arg1 | 0x100000c56 66c745d02000 mov word [local_30h], 0x20 ; 32 | 0x100000c5c 66c745d20a00 mov word [local_2eh], 0xa | 0x100000c62 4c8b33 mov r14, qword [rbx] | 0x100000c65 488b7b08 mov rdi, qword [rbx + 8] ; [0x8:8]=-1 ; 8 | 0x100000c69 4c8d6b08 lea r13, [rbx + 8] ; 8 | 0x100000c6d 4531e4 xor r12d, r12d | 0x100000c70 4885ff test rdi, rdi | 0x100000c73 4c8975c8 mov qword [local_38h], r14 | ,=< 0x100000c77 7410 je 0x100000c89 | | 0x100000c79 488d35180300. lea rsi, [0x100000f98] ; section.4.__TEXT.__cstring ; "-n" ; const char *s2 | | 0x100000c80 e80d020000 call sym.imp.strcmp ; int strcmp(const char *s1, const char *s2) | | 0x100000c85 85c0 test eax, eax | ,==< 0x100000c87 7409 je 0x100000c92 | || ; CODE XREF from entry0 (0x100000c77) | |`-> 0x100000c89 c745d4000000. mov dword [local_2ch], 0 | |,=< 0x100000c90 eb11 jmp 0x100000ca3 | || ; CODE XREF from entry0 (0x100000c87) | `--> 0x100000c92 4883c310 add rbx, 0x10 | | 0x100000c96 41ffcf dec r15d | | 0x100000c99 c745d4010000. mov dword [local_2ch], 1 | | 0x100000ca0 4989dd mov r13, rbx | | ; CODE XREF from entry0 (0x100000c90) | `-> 0x100000ca3 4183ff01 cmp r15d, 1 ; 1 | 0x100000ca7 438d443ffd lea eax, [r15 + r15 - 3] | 0x100000cac 440f4fe0 cmovg r12d, eax | 0x100000cb0 4963fc movsxd rdi, r12d | 0x100000cb3 48c1e704 shl rdi, 4 | 0x100000cb7 4883c710 add rdi, 0x10 ; size_t size | 0x100000cbb e8cc010000 call sym.imp.malloc ; void *malloc(size_t size) | 0x100000cc0 4989c6 mov r14, rax | 0x100000cc3 4d85f6 test r14, r14 | ,=< 0x100000cc6 0f84f2000000 je 0x100000dbe | | 0x100000ccc 498b5d00 mov rbx, qword [r13] | | 0x100000cd0 4885db test rbx, rbx | ,==< 0x100000cd3 7473 je 0x100000d48 | || 0x100000cd5 4983c508 add r13, 8 | || 0x100000cd9 4d89f7 mov r15, r14 | || 0x100000cdc 4983c710 add r15, 0x10 | ,===< 0x100000ce0 eb1a jmp 0x100000cfc | ||| ; CODE XREF from entry0 (0x100000d44) | .----> 0x100000ce2 488d45d0 lea rax, [local_30h] | :||| 0x100000ce6 498907 mov qword [r15], rax | :||| 0x100000ce9 49c747080100. mov qword [r15 + 8], 1 | :||| 0x100000cf1 4983c508 add r13, 8 | :||| 0x100000cf5 4983c720 add r15, 0x20 | :||| 0x100000cf9 4889cb mov rbx, rcx ; arg4 | :||| ; CODE XREF from entry0 (0x100000ce0) | :`---> 0x100000cfc 4889df mov rdi, rbx ; const char *s | : || 0x100000cff e89a010000 call sym.imp.strlen ; size_t strlen(const char *s) | : || 0x100000d04 498b4d00 mov rcx, qword [r13] | : || 0x100000d08 4883f802 cmp rax, 2 ; 2 | :,===< 0x100000d0c 7227 jb 0x100000d35 | :||| 0x100000d0e 4885c9 test rcx, rcx | ,=====< 0x100000d11 7522 jne 0x100000d35 | |:||| 0x100000d13 807c03fe5c cmp byte [rbx + rax - 2], 0x5c ; '\' | ,======< 0x100000d18 751b jne 0x100000d35 | ||:||| 0x100000d1a 488d50fe lea rdx, [rax - 2] | ||:||| 0x100000d1e 807c03ff63 cmp byte [rbx + rax - 1], 0x63 ; 'c' | ||:||| 0x100000d23 8b75d4 mov esi, dword [local_2ch] | ||:||| 0x100000d26 bf01000000 mov edi, 1 | ||:||| 0x100000d2b 0f44f7 cmove esi, edi | ||:||| 0x100000d2e 8975d4 mov dword [local_2ch], esi | ||:||| 0x100000d31 480f44c2 cmove rax, rdx | ||:||| ; CODE XREFS from entry0 (0x100000d0c, 0x100000d11, 0x100000d18) | ``-`---> 0x100000d35 4885c9 test rcx, rcx | : || 0x100000d38 498b55f8 mov rdx, qword [r13 - 8] | : || 0x100000d3c 498957f0 mov qword [r15 - 0x10], rdx | : || 0x100000d40 498947f8 mov qword [r15 - 8], rax | `====< 0x100000d44 759c jne 0x100000ce2 | ,===< 0x100000d46 eb03 jmp 0x100000d4b | ||| ; CODE XREF from entry0 (0x100000cd3) | |`--> 0x100000d48 4d89f7 mov r15, r14 | | | ; CODE XREF from entry0 (0x100000d46) | `---> 0x100000d4b 8b45d4 mov eax, dword [local_2ch] | | 0x100000d4e 85c0 test eax, eax | ,==< 0x100000d50 7512 jne 0x100000d64 | || 0x100000d52 41ffc4 inc r12d | || 0x100000d55 488d45d2 lea rax, [local_2eh] | || 0x100000d59 498907 mov qword [r15], rax | || 0x100000d5c 49c747080100. mov qword [r15 + 8], 1 | || ; CODE XREF from entry0 (0x100000d50) | `--> 0x100000d64 4585e4 test r12d, r12d | ,==< 0x100000d67 7434 je 0x100000d9d | || ; CODE XREF from entry0 (0x100000d9b) | .---> 0x100000d69 4181fc010400. cmp r12d, 0x401 ; 1025 | :|| 0x100000d70 bb00040000 mov ebx, 0x400 ; 1024 | :|| 0x100000d75 410f4cdc cmovl ebx, r12d | :|| 0x100000d79 bf01000000 mov edi, 1 | :|| 0x100000d7e 4c89f6 mov rsi, r14 | :|| 0x100000d81 89da mov edx, ebx | :|| 0x100000d83 e822010000 call sym.imp.writev | :|| 0x100000d88 4883f8ff cmp rax, 0xffffffffffffffff | ,====< 0x100000d8c 7420 je 0x100000dae | |:|| 0x100000d8e 4863c3 movsxd rax, ebx | |:|| 0x100000d91 48c1e004 shl rax, 4 | |:|| 0x100000d95 4901c6 add r14, rax ; '#' | |:|| 0x100000d98 4129dc sub r12d, ebx | |`===< 0x100000d9b 75cc jne 0x100000d69 | | || ; CODE XREF from entry0 (0x100000d67) | | `--> 0x100000d9d 31c0 xor eax, eax | | | 0x100000d9f 4883c418 add rsp, 0x18 | | | 0x100000da3 5b pop rbx | | | 0x100000da4 415c pop r12 | | | 0x100000da6 415d pop r13 | | | 0x100000da8 415e pop r14 | | | 0x100000daa 415f pop r15 | | | 0x100000dac 5d pop rbp | | | 0x100000dad c3 ret | | | ; CODE XREF from entry0 (0x100000d8c) | `----> 0x100000dae 488d35ed0100. lea rsi, str.write ; 0x100000fa2 ; "write" | | 0x100000db5 488b7dc8 mov rdi, qword [local_38h] | | 0x100000db9 e810000000 call sym.func.100000dce | | ; CODE XREF from entry0 (0x100000cc6) | `-> 0x100000dbe 488d35d60100. lea rsi, str.malloc ; 0x100000f9b ; "malloc" | 0x100000dc5 488b7dc8 mov rdi, qword [local_38h] | 0x100000dc9 e800000000 call sym.func.100000dce | ;-- func.100000dce: | ; CALL XREFS from entry0 (0x100000db9, 0x100000dc9) | 0x100000dce 55 push rbp | 0x100000dcf 4889e5 mov rbp, rsp | 0x100000dd2 4157 push r15 | 0x100000dd4 4156 push r14 | 0x100000dd6 53 push rbx | 0x100000dd7 50 push rax | 0x100000dd8 4989f7 mov r15, rsi | 0x100000ddb 4889fb mov rbx, rdi | 0x100000dde e89d000000 call sym.imp.__error | 0x100000de3 8b38 mov edi, dword [rax] ; int errnum | 0x100000de5 e8ae000000 call sym.imp.strerror ; char *strerror(int errnum) | 0x100000dea 4989c6 mov r14, rax | 0x100000ded 4889df mov rdi, rbx ; const char *s | 0x100000df0 e8a9000000 call sym.imp.strlen ; size_t strlen(const char *s) | 0x100000df5 bf02000000 mov edi, 2 ; int fd | 0x100000dfa 4889de mov rsi, rbx ; void *ptr | 0x100000dfd 4889c2 mov rdx, rax ; size_t nbytes | 0x100000e00 e89f000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e05 488d1d9c0100. lea rbx, [0x100000fa8] ; ": " ; 4294971304 | 0x100000e0c bf02000000 mov edi, 2 ; int fd | 0x100000e11 ba02000000 mov edx, 2 ; size_t nbytes | 0x100000e16 4889de mov rsi, rbx ; void *ptr | 0x100000e19 e886000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e1e 4c89ff mov rdi, r15 ; const char *s | 0x100000e21 e878000000 call sym.imp.strlen ; size_t strlen(const char *s) | 0x100000e26 bf02000000 mov edi, 2 ; int fd | 0x100000e2b 4c89fe mov rsi, r15 ; void *ptr | 0x100000e2e 4889c2 mov rdx, rax ; size_t nbytes | 0x100000e31 e86e000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e36 bf02000000 mov edi, 2 ; int fd | 0x100000e3b ba02000000 mov edx, 2 ; size_t nbytes | 0x100000e40 4889de mov rsi, rbx ; void *ptr | 0x100000e43 e85c000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e48 4c89f7 mov rdi, r14 ; const char *s | 0x100000e4b e84e000000 call sym.imp.strlen ; size_t strlen(const char *s) | 0x100000e50 bf02000000 mov edi, 2 ; int fd | 0x100000e55 4c89f6 mov rsi, r14 ; void *ptr | 0x100000e58 4889c2 mov rdx, rax ; size_t nbytes | 0x100000e5b e844000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e60 488d35440100. lea rsi, [0x100000fab] ; "\n" ; 4294971307 ; void *ptr | 0x100000e67 bf02000000 mov edi, 2 ; int fd | 0x100000e6c ba01000000 mov edx, 1 ; size_t nbytes | 0x100000e71 e82e000000 call sym.imp.write ; ssize_t write(int fd, void *ptr, size_t nbytes) | 0x100000e76 bf01000000 mov edi, 1 ; int status \ 0x100000e7b e806000000 call sym.imp.exit ; void exit(int status)