Skip to main content

Understanding Function Call Stack

Understanding Function Call Stack

This writeup shows stack operations and behavior with a simple C Program, Assembly code and a dump of stack memory.

Contents:


C Code Assembly Code
int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    int e = 5;
    int f = 6;
    int g = 7;
    int h = 8;
    int ret = 0;

    ret = fun1(a, b, c, d, e, f, g, h);

    printf("output is %d", ret);
}
0000000000400868 
: 400868: push %rbp 400869: mov %rsp,%rbp 40086c: sub $0x30,%rsp 400870: movl $0x1,-0x4(%rbp) 400877: movl $0x2,-0x8(%rbp) 40087e: movl $0x3,-0xc(%rbp) 400885: movl $0x4,-0x10(%rbp) 40088c: movl $0x5,-0x14(%rbp) 400893: movl $0x6,-0x18(%rbp) 40089a: movl $0x7,-0x1c(%rbp) 4008a1: movl $0x8,-0x20(%rbp) 4008a8: movl $0x0,-0x24(%rbp) 4008af: mov -0x18(%rbp),%r9d 4008b3: mov -0x14(%rbp),%r8d 4008b7: mov -0x10(%rbp),%ecx 4008ba: mov -0xc(%rbp),%edx 4008bd: mov -0x8(%rbp),%esi 4008c0: mov -0x4(%rbp),%eax 4008c3: mov -0x20(%rbp),%edi 4008c6: push %rdi 4008c7: mov -0x1c(%rbp),%edi 4008ca: push %rdi 4008cb: mov %eax,%edi 4008cd: callq 4007fa 4008d2: add $0x10,%rsp 4008d6: mov %eax,-0x24(%rbp) 4008d9: mov -0x24(%rbp),%eax 4008dc: mov %eax,%esi 4008de: mov $0x400947,%edi 4008e3: mov $0x0,%eax 4008e8: callq 400450 4008ed: mov $0x0,%eax 4008f2: leaveq 4008f3: retq 4008f4: nopw %cs:0x0(%rax,%rax,1) 4008fb: 4008fe: xchg %ax,%ax
int fun1 (int a, int b, int c, int d,
          int e, int f, int g, int h)
{
    int val = 1;
    int res = 0;
    int ret = 0;

    ret = fun2(e, f, g, h);

    res = ret + a + b + c + d;
    res = res + val;

    return res;
}
00000000004007fa :
  4007fa: push   %rbp
  4007fb: mov    %rsp,%rbp
  4007fe: sub    $0x28,%rsp
  400802: mov    %edi,-0x14(%rbp)
  400805: mov    %esi,-0x18(%rbp)
  400808: mov    %edx,-0x1c(%rbp)
  40080b: mov    %ecx,-0x20(%rbp)
  40080e: mov    %r8d,-0x24(%rbp)
  400812: mov    %r9d,-0x28(%rbp)
  400816: movl   $0x1,-0x4(%rbp)
  40081d: movl   $0x0,-0x8(%rbp)
  400824: movl   $0x0,-0xc(%rbp)
  40082b: mov    0x18(%rbp),%edx
  40082e: mov    -0x28(%rbp),%esi
  400831: mov    -0x24(%rbp),%eax
  400834: mov    %edx,%ecx
  400836: mov    0x10(%rbp),%edx
  400839: mov    %eax,%edi
  40083b: callq  4007a4 
  400840: mov    %eax,-0xc(%rbp)
  400843: mov    -0xc(%rbp),%edx
  400846: mov    -0x14(%rbp),%eax
  400849: add    %eax,%edx
  40084b: mov    -0x18(%rbp),%eax
  40084e: add    %eax,%edx
  400850: mov    -0x1c(%rbp),%eax
  400853: add    %eax,%edx
  400855: mov    -0x20(%rbp),%eax
  400858: add    %edx,%eax
  40085a: mov    %eax,-0x8(%rbp)
  40085d: mov    -0x4(%rbp),%eax
  400860: add    %eax,-0x8(%rbp)
  400863: mov    -0x8(%rbp),%eax
  400866: leaveq
  400867: retq
int fun2 (int e, int f, int g, int h)
{
    int val = 2;
    int res = 0;
    int ret = 0;

    ret = fun3(g, h);

    res = ret + e + f;
    res = res + val;

    return res;
}
00000000004007a4 :
  4007a4: push   %rbp
  4007a5: mov    %rsp,%rbp
  4007a8: sub    $0x20,%rsp
  4007ac: mov    %edi,-0x14(%rbp)
  4007af: mov    %esi,-0x18(%rbp)
  4007b2: mov    %edx,-0x1c(%rbp)
  4007b5: mov    %ecx,-0x20(%rbp)
  4007b8: movl   $0x2,-0x4(%rbp)
  4007bf: movl   $0x0,-0x8(%rbp)
  4007c6: movl   $0x0,-0xc(%rbp)
  4007cd: mov    -0x20(%rbp),%edx
  4007d0: mov    -0x1c(%rbp),%eax
  4007d3: mov    %edx,%esi
  4007d5: mov    %eax,%edi
  4007d7: callq  400776 
  4007dc: mov    %eax,-0xc(%rbp)
  4007df: mov    -0xc(%rbp),%edx
  4007e2: mov    -0x14(%rbp),%eax
  4007e5: add    %eax,%edx
  4007e7: mov    -0x18(%rbp),%eax
  4007ea: add    %edx,%eax
  4007ec: mov    %eax,-0x8(%rbp)
  4007ef: mov    -0x4(%rbp),%eax
  4007f2: add    %eax,-0x8(%rbp)
  4007f5: mov    -0x8(%rbp),%eax
  4007f8: leaveq
  4007f9: retq
int fun3 (int g, int h)
{
    int val = 3;
    int res = 0;

    res = g + h;
    res = res + val;

    return res;
}
0000000000400776 :
  400776: push   %rbp
  400777: mov    %rsp,%rbp
  40077a: mov    %edi,-0x14(%rbp)
  40077d: mov    %esi,-0x18(%rbp)
  400780: movl   $0x3,-0x4(%rbp)
  400787: movl   $0x0,-0x8(%rbp)
  40078e: mov    -0x14(%rbp),%edx
  400791: mov    -0x18(%rbp),%eax
  400794: add    %edx,%eax
  400796: mov    %eax,-0x8(%rbp)
  400799: mov    -0x4(%rbp),%eax
  40079c: add    %eax,-0x8(%rbp)
  40079f: mov    -0x8(%rbp),%eax
  4007a2: pop    %rbp
  4007a3: retq

Comilation Command: gcc -O0 -g callstatck_observe.c -o prg
     -O0 avoids optimization of code which makes assembly code more relatable to C Code.
Assembly code dumped with: objdump --disassemble-all prg 

Analysis of Stack Operations

400868: push   %rbp 
bp i.e. Base pointer points to the start of part of stack a function is going to use for its local variables or for placing arguments on stack before calling another function. While entering into a function, bp keeps base pointer of the caller function. So before making any changes, the value of bp is pushed on stack to keep bp of caller safe. This value is popped back into bp while returning from function.
400869: mov    %rsp,%rbp
This stores value of stack pointer (sp) in bp. Now bp has address of top of the stack.
Later values on stack are accessed using it.
40086c: sub    $0x30,%rsp
Depending on size of local variables, sp is reduced to reserve space for local variables. Because stack grows from higher memory to lower memory, local variables of called function are placed in lower memory compared to that of caller function.

400870: movl   $0x1,-0x4(%rbp)
400877: movl   $0x2,-0x8(%rbp)
40087e: movl   $0x3,-0xc(%rbp)
400885: movl   $0x4,-0x10(%rbp)
40088c: movl   $0x5,-0x14(%rbp)
400893: movl   $0x6,-0x18(%rbp)
40089a: movl   $0x7,-0x1c(%rbp)
4008a1: movl   $0x8,-0x20(%rbp)
4008a8: movl   $0x0,-0x24(%rbp) 
Create local variabes on stack.
4008af: mov    -0x18(%rbp),%r9d
4008b3: mov    -0x14(%rbp),%r8d
4008b7: mov    -0x10(%rbp),%ecx
4008ba: mov    -0xc(%rbp),%edx
4008bd: mov    -0x8(%rbp),%esi
4008c0: mov    -0x4(%rbp),%eax
4008c3: mov    -0x20(%rbp),%edi
4008c6: push   %rdi
4008c7: mov    -0x1c(%rbp),%edi
4008ca: push   %rdi
4008cb: mov    %eax,%edi
Before calling function, arguments to the function are stored on register in reverse order. If there are many arguments some arguments will go on stack.  On some platforms arguments may be stored on stack only.

4008cd: callq  4007fa
Function is called. this includes pushing address of next instruction (4008d2) on stack and jumping to function code. At the time of entering the called function, address of next instruction is at top of stack.

4008d2: add    $0x10,%rsp
Reset stack after function call, it's like removing arguments from stack after function call.

4008d6: mov    %eax,-0x24(%rbp)
eax has return value from the function which is getting stored in the local variable (ret).

4008ed: mov    $0x0,%eax
Before returning from Function, put return value in eax, which is 0 here.

4008f2: leaveq
Puts back value of bp from stack for caller function.

4008f3: retq
Jump to the address on stack, to continue from the next instructin after this functino in caller.

Analyzign Stack Dump

Breakpoint 1, main () at callstatck_observe.c:48
48          int a = 1;
(gdb) n
49          int b = 2;
(gdb)
50          int c = 3;
(gdb) info registers
rax            0x600ad0 6294224
rbx            0x0      0
rcx            0x7fffffffe8f0   140737488349424
rdx            0x7fffffffe980   140737488349568
rsi            0x7fffffffe970   140737488349552
rdi            0x1      1
rbp            0x7fffffffe910   0x7fffffffe910
rsp            0x7fffffffe8e0   0x7fffffffe8e0
r8             0x0      0
r9             0x7fffffffd16f   140737488343407
r10            0x44a9aa60       1151969888
r11            0x246    582
r12            0x7fffffffe968   140737488349544
r13            0x7fffffffe980   140737488349568
r14            0x7fffffffe970   140737488349552
r15            0x1      1
rip            0x40087e 0x40087e 
eflags 0x202 [ IF ] cs 0x43 67 ss 0x3b 59 ds es fs gs (gdb) c Continuing. Breakpoint 2, fun1 (a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8) at callstatck_observe.c:34 34 int val = 1; (gdb) n 35 int res = 0; (gdb) 36 int ret = 0; (gdb) info registers rax 0x1 1 rbx 0x0 0 rcx 0x4 4 rdx 0x3 3 rsi 0x2 2 rdi 0x1 1 rbp 0x7fffffffe8c0 0x7fffffffe8c0 rsp 0x7fffffffe898 0x7fffffffe898 r8 0x5 5 r9 0x6 6 r10 0x44a9aa60 1151969888 r11 0x246 582 r12 0x7fffffffe968 140737488349544 r13 0x7fffffffe980 140737488349568 r14 0x7fffffffe970 140737488349552 r15 0x1 1 rip 0x400824 0x400824 eflags 0x212 [ AF IF ] cs 0x43 67 ss 0x3b 59 ds es fs gs (gdb) c Continuing. Breakpoint 3, fun2 (e=5, f=6, g=7, h=8) at callstatck_observe.c:17 17 int val = 2; (gdb) n 18 int res = 0; (gdb) 19 int ret = 0; (gdb) info registers rax 0x5 5 rbx 0x0 0 rcx 0x8 8 rdx 0x7 7 rsi 0x6 6 rdi 0x5 5 rbp 0x7fffffffe888 0x7fffffffe888 rsp 0x7fffffffe868 0x7fffffffe868 r8 0x5 5 r9 0x6 6 r10 0x44a9aa60 1151969888 r11 0x246 582 r12 0x7fffffffe968 140737488349544 r13 0x7fffffffe980 140737488349568 r14 0x7fffffffe970 140737488349552 r15 0x1 1 rip 0x4007c6 0x4007c6 eflags 0x202 [ IF ] cs 0x43 67 ss 0x3b 59 ds es fs gs (gdb) c
Continuing. Breakpoint 4, fun3 (g=7, h=8) at callstatck_observe.c:5 5 int val = 3; (gdb) n 6 int res = 0; (gdb) 8 res = g + h; (gdb) info registers rax 0x7 7 rbx 0x0 0 rcx 0x8 8 rdx 0x8 8 rsi 0x8 8 rdi 0x7 7 rbp 0x7fffffffe858 0x7fffffffe858 rsp 0x7fffffffe858 0x7fffffffe858 r8 0x5 5 r9 0x6 6 r10 0x44a9aa60 1151969888 r11 0x246 582 r12 0x7fffffffe968 140737488349544 r13 0x7fffffffe980 140737488349568 r14 0x7fffffffe970 140737488349552 r15 0x1 1 rip 0x40078e 0x40078e eflags 0x202 [ IF ] cs 0x43 67 ss 0x3b 59 ds es fs gs (gdb) n 9 res = res + val;
(gdb) p &res
$1 = (int *) 0x7fffffffe850
(gdb) x /40x 0x7fffffffe850
0x7fffffffe850: 0x0000000f   
0x7fffffffe854: 0x00000003
0x7fffffffe858: 0xffffe888<-fun3 
0x7fffffffe85c: 0x00007fff
0x7fffffffe860: 0x004007dc    
0x7fffffffe864: 0x00000000    
0x7fffffffe868: 0x00000008
0x7fffffffe86c: 0x00000007
0x7fffffffe870: 0x00000006
0x7fffffffe874: 0x00000005    
0x7fffffffe878: 0x00000000    
0x7fffffffe87c: 0x00000000
0x7fffffffe880: 0x00000000
0x7fffffffe884: 0x00000002
    
0x7fffffffe888: 0xffffe8c0 <-fun2
0x7fffffffe88c: 0x00007fff
0x7fffffffe890: 0x00400840
0x7fffffffe894: 0x00000000    
0x7fffffffe898: 0x00000006
0x7fffffffe89c: 0x00000005
0x7fffffffe8a0: 0x00000004
0x7fffffffe8a4: 0x00000003
0x7fffffffe8a8: 0x00000002
0x7fffffffe8ac: 0x00000001
0x7fffffffe8b0: 0xffffe8f0    
0x7fffffffe8b4: 0x00000000
0x7fffffffe8b8: 0x00000000
0x7fffffffe8bc: 0x00000001

0x7fffffffe8c0: 0xffffe910<-fun1     
0x7fffffffe8c4: 0x00007fff    
0x7fffffffe8c8: 0x004008d2
0x7fffffffe8cc: 0x00000000
0x7fffffffe8d0: 0x00000007
0x7fffffffe8d4: 0x00000000
0x7fffffffe8d8: 0x00000008    
0x7fffffffe8dc: 0x00000000
0x7fffffffe8e0: 0xffffe910   
0x7fffffffe8e4: 0x00007fff  
0x7fffffffe8e8: 0x44bbddd3    
0x7fffffffe8ec: 0x00000000
0x7fffffffe8f0: 0x00000008
0x7fffffffe8f0: 0x00000007
0x7fffffffe8f0: 0x00000006
0x7fffffffe8f0: 0x00000005
0x7fffffffe900: 0x00000004
0x7fffffffe904: 0x00000003
0x7fffffffe908: 0x00000002
0x7fffffffe90c: 0x00000001

0x7fffffffe910: 0xffffe950    <-main
0x7fffffffe914: 0x00007fff  
0x7fffffffe918: 0x004005ef    
0x7fffffffe91c: 0x00000000
0x7fffffffe920: 0x00400480    
0x7fffffffe924: 0x00000000    
0x7fffffffe928: 0x00000000    
0x7fffffffe92c: 0x00000000
0x7fffffffe930: 0xffffe968    
0x7fffffffe934: 0x00007fff    
0x7fffffffe938: 0x00000000    
0x7fffffffe93c: 0x00000000
0x7fffffffe940: 0x00000000    
0x7fffffffe944: 0x00000000    
0x7fffffffe948: 0x00000000    
0x7fffffffe94c: 0x00000000
0x7fffffffe950: 0x00000000    
0x7fffffffe954: 0x00000000    
0x7fffffffe958: 0x44899000    
0x7fffffffe95c: 0x00000000
0x7fffffffe960: 0x00000000    
0x7fffffffe964: 0x00000000    
0x7fffffffe968: 0x00000001    
0x7fffffffe96c: 0x00000000
0x7fffffffe970: 0xffffebe8    
0x7fffffffe974: 0x00007fff    
0x7fffffffe978: 0x00000000    
0x7fffffffe97c: 0x00000000
0x7fffffffe980: 0xffffec1c    
0x7fffffffe984: 0x00007fff    
0x7fffffffe988: 0xffffec56    
0x7fffffffe98c: 0x00007fff

Arguments to be passed to Function
Local variables
Base Pointer
PC of Next Instruction
BP of Caller
Uninitialized Garbage
Arguments to this function 

Full C Code

#include <stdio.h>

int fun3 (int g, int h)
{
    int val = 3;
    int res = 0;

    res = g + h;
    res = res + val;

    return res;
}


int fun2 (int e, int f, int g, int h)
{
    int val = 2;
    int res = 0;
    int ret = 0;

    ret = fun3(g, h);

    res = ret + e + f;
    res = res + val;

    return res;
}

int fun1 (int a, int b, int c, int d,
          int e, int f, int g, int h)
{
    int val = 1;
    int res = 0;
    int ret = 0;

    ret = fun2(e, f, g, h);

    res = ret + a + b + c + d;
    res = res + val;

    return res;
}

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    int e = 5;
    int f = 6;
    int g = 7;
    int h = 8;
    int ret = 0;

    ret = fun1(a, b, c, d, e, f, g, h);

    printf("output is %d", ret);

}

Full Objdump:


bin:     file format elf64-x86-64-freebsd

Disassembly of section .interp:

0000000000400200 <.interp>:
  400200: 2f                    (bad)  
  400201: 6c                    insb   (%dx),%es:(%rdi)
  400202: 69 62 65 78 65 63 2f  imul   $0x2f636578,0x65(%rdx),%esp
  400209: 6c                    insb   (%dx),%es:(%rdi)
  40020a: 64                    fs
  40020b: 2d 65 6c 66 2e        sub    $0x2e666c65,%eax
  400210: 73 6f                 jae    400281 
  400212: 2e 31 00              xor    %eax,%cs:(%rax)
Disassembly of section .note.tag:

0000000000400218 :
  400218: 08 00                 or     %al,(%rax)
  40021a: 00 00                 add    %al,(%rax)
  40021c: 04 00                 add    $0x0,%al
  40021e: 00 00                 add    %al,(%rax)
  400220: 01 00                 add    %eax,(%rax)
  400222: 00 00                 add    %al,(%rax)
  400224: 46 72 65              rex.RX jb     40028c 
  400227: 65                    gs
  400228: 42 53                 rex.X push   %rbx
  40022a: 44 00 e0              add    %r12b,%al
  40022d: 51                    push   %rcx
  40022e: 0f 00 08              str    (%rax)

0000000000400230 :
  400230: 08 00                 or     %al,(%rax)
  400232: 00 00                 add    %al,(%rax)
  400234: 04 00                 add    $0x0,%al
  400236: 00 00                 add    %al,(%rax)
  400238: 02 00                 add    (%rax),%al
  40023a: 00 00                 add    %al,(%rax)
  40023c: 46 72 65              rex.RX jb     4002a4 
  40023f: 65                    gs
  400240: 42 53                 rex.X push   %rbx
  400242: 44 00 00              add    %r8b,(%rax)
  400245: 00 00                 add    %al,(%rax)
 ...
Disassembly of section .hash:

0000000000400248 <.hash>:
  400248: 03 00                 add    (%rax),%eax
  40024a: 00 00                 add    %al,(%rax)
  40024c: 08 00                 or     %al,(%rax)
  40024e: 00 00                 add    %al,(%rax)
  400250: 00 00                 add    %al,(%rax)
  400252: 00 00                 add    %al,(%rax)
  400254: 07                    (bad)  
  400255: 00 00                 add    %al,(%rax)
  400257: 00 06                 add    %al,(%rsi)
 ...
  400265: 00 00                 add    %al,(%rax)
  400267: 00 02                 add    %al,(%rdx)
  400269: 00 00                 add    %al,(%rax)
  40026b: 00 01                 add    %al,(%rcx)
  40026d: 00 00                 add    %al,(%rax)
  40026f: 00 04 00              add    %al,(%rax,%rax,1)
  400272: 00 00                 add    %al,(%rax)
  400274: 03 00                 add    (%rax),%eax
  400276: 00 00                 add    %al,(%rax)
  400278: 05                    .byte 0x5
  400279: 00 00                 add    %al,(%rax)
 ...
Disassembly of section .dynsym:

0000000000400280 <.dynsym>:
 ...
  400298: 2f                    (bad)  
  400299: 00 00                 add    %al,(%rax)
  40029b: 00 12                 add    %dl,(%rdx)
 ...
  4002ad: 00 00                 add    %al,(%rax)
  4002af: 00 16                 add    %dl,(%rsi)
  4002b1: 00 00                 add    %al,(%rax)
  4002b3: 00 11                 add    %dl,(%rcx)
  4002b5: 00 16                 add    %dl,(%rsi)
  4002b7: 00 88 0c 60 00 00     add    %cl,0x600c(%rax)
  4002bd: 00 00                 add    %al,(%rax)
  4002bf: 00 08                 add    %cl,(%rax)
  4002c1: 00 00                 add    %al,(%rax)
  4002c3: 00 00                 add    %al,(%rax)
  4002c5: 00 00                 add    %al,(%rax)
  4002c7: 00 1e                 add    %bl,(%rsi)
  4002c9: 00 00                 add    %al,(%rax)
  4002cb: 00 12                 add    %dl,(%rdx)
 ...
  4002dd: 00 00                 add    %al,(%rax)
  4002df: 00 36                 add    %dh,(%rsi)
  4002e1: 00 00                 add    %al,(%rax)
  4002e3: 00 10                 add    %dl,(%rax)
  4002e5: 00 16                 add    %dl,(%rsi)
  4002e7: 00 90 0c 60 00 00     add    %dl,0x600c(%rax)
 ...
  4002f5: 00 00                 add    %al,(%rax)
  4002f7: 00 31                 add    %dh,(%rcx)
  4002f9: 00 00                 add    %al,(%rax)
  4002fb: 00 12                 add    %dl,(%rdx)
 ...
  40030d: 00 00                 add    %al,(%rax)
  40030f: 00 0b                 add    %cl,(%rbx)
  400311: 00 00                 add    %al,(%rax)
  400313: 00 11                 add    %dl,(%rcx)
  400315: 00 15 00 68 0c 60     add    %dl,0x600c6800(%rip)        # 604c6b1b <_end x5fec5e8b="">
  40031b: 00 00                 add    %al,(%rax)
  40031d: 00 00                 add    %al,(%rax)
  40031f: 00 08                 add    %cl,(%rax)
  400321: 00 00                 add    %al,(%rax)
  400323: 00 00                 add    %al,(%rax)
  400325: 00 00                 add    %al,(%rax)
  400327: 00 25 00 00 00 12     add    %ah,0x12000000(%rip)        # 1240032d <_end x11dff69d="">
 ...
Disassembly of section .dynstr:

0000000000400340 <.dynstr>:
  400340: 00 6c 69 62           add    %ch,0x62(%rcx,%rbp,2)
  400344: 63 2e                 movslq (%rsi),%ebp
  400346: 73 6f                 jae    4003b7 
  400348: 2e                    cs
  400349: 37                    (bad)  
  40034a: 00 5f 5f              add    %bl,0x5f(%rdi)
  40034d: 70 72                 jo     4003c1 
  40034f: 6f                    outsl  %ds:(%rsi),(%dx)
  400350: 67 6e                 addr32 outsb %ds:(%esi),(%dx)
  400352: 61                    (bad)  
  400353: 6d                    insl   (%dx),%es:(%rdi)
  400354: 65 00 65 6e           add    %ah,%gs:0x6e(%rbp)
  400358: 76 69                 jbe    4003c3 
  40035a: 72 6f                 jb     4003cb 
  40035c: 6e                    outsb  %ds:(%rsi),(%dx)
  40035d: 00 70 72              add    %dh,0x72(%rax)
  400360: 69 6e 74 66 00 5f 69  imul   $0x695f0066,0x74(%rsi),%ebp
  400367: 6e                    outsb  %ds:(%rsi),(%dx)
  400368: 69 74 5f 74 6c 73 00  imul   $0x6100736c,0x74(%rdi,%rbx,2),%esi
  40036f: 61 
  400370: 74 65                 je     4003d7 
  400372: 78 69                 js     4003dd 
  400374: 74 00                 je     400376 
  400376: 5f                    pop    %rdi
  400377: 65 6e                 outsb  %gs:(%rsi),(%dx)
  400379: 64 00 46 42           add    %al,%fs:0x42(%rsi)
  40037d: 53                    push   %rbx
  40037e: 44 5f                 rex.R pop    %rdi
  400380: 31 2e                 xor    %ebp,(%rsi)
  400382: 30 00                 xor    %al,(%rax)
Disassembly of section .gnu.version:

0000000000400384 <.gnu.version>:
  400384: 00 00                 add    %al,(%rax)
  400386: 02 00                 add    (%rax),%al
  400388: 01 00                 add    %eax,(%rax)
  40038a: 02 00                 add    (%rax),%al
  40038c: 01 00                 add    %eax,(%rax)
  40038e: 02 00                 add    (%rax),%al
  400390: 01 00                 add    %eax,(%rax)
  400392: 02 00                 add    (%rax),%al
Disassembly of section .gnu.version_r:

0000000000400398 <.gnu.version_r>:
  400398: 01 00                 add    %eax,(%rax)
  40039a: 01 00                 add    %eax,(%rax)
  40039c: 01 00                 add    %eax,(%rax)
  40039e: 00 00                 add    %al,(%rax)
  4003a0: 10 00                 adc    %al,(%rax)
  4003a2: 00 00                 add    %al,(%rax)
  4003a4: 00 00                 add    %al,(%rax)
  4003a6: 00 00                 add    %al,(%rax)
  4003a8: b0 28                 mov    $0x28,%al
  4003aa: 7a 07                 jp     4003b3 
  4003ac: 00 00                 add    %al,(%rax)
  4003ae: 02 00                 add    (%rax),%al
  4003b0: 3b 00                 cmp    (%rax),%eax
  4003b2: 00 00                 add    %al,(%rax)
  4003b4: 00 00                 add    %al,(%rax)
 ...
Disassembly of section .rela.plt:

00000000004003b8 <.rela.plt>:
  4003b8: 48 0c 60              rex.W or     $0x60,%al
  4003bb: 00 00                 add    %al,(%rax)
  4003bd: 00 00                 add    %al,(%rax)
  4003bf: 00 07                 add    %al,(%rdi)
  4003c1: 00 00                 add    %al,(%rax)
  4003c3: 00 01                 add    %al,(%rcx)
 ...
  4003cd: 00 00                 add    %al,(%rax)
  4003cf: 00 50 0c              add    %dl,0xc(%rax)
  4003d2: 60                    (bad)  
  4003d3: 00 00                 add    %al,(%rax)
  4003d5: 00 00                 add    %al,(%rax)
  4003d7: 00 07                 add    %al,(%rdi)
  4003d9: 00 00                 add    %al,(%rax)
  4003db: 00 03                 add    %al,(%rbx)
 ...
  4003e5: 00 00                 add    %al,(%rax)
  4003e7: 00 58 0c              add    %bl,0xc(%rax)
  4003ea: 60                    (bad)  
  4003eb: 00 00                 add    %al,(%rax)
  4003ed: 00 00                 add    %al,(%rax)
  4003ef: 00 07                 add    %al,(%rdi)
  4003f1: 00 00                 add    %al,(%rax)
  4003f3: 00 05 00 00 00 00     add    %al,0x0(%rip)        # 4003f9 
  4003f9: 00 00                 add    %al,(%rax)
  4003fb: 00 00                 add    %al,(%rax)
  4003fd: 00 00                 add    %al,(%rax)
  4003ff: 00 60 0c              add    %ah,0xc(%rax)
  400402: 60                    (bad)  
  400403: 00 00                 add    %al,(%rax)
  400405: 00 00                 add    %al,(%rax)
  400407: 00 07                 add    %al,(%rdi)
  400409: 00 00                 add    %al,(%rax)
  40040b: 00 07                 add    %al,(%rdi)
 ...
Disassembly of section .init:

0000000000400418 <_init>:
  400418: 48 83 ec 08           sub    $0x8,%rsp
  40041c: e8 2f 03 00 00        callq  400750 
  400421: e8 da 04 00 00        callq  400900 <__do_global_ctors_aux>
  400426: 48 83 c4 08           add    $0x8,%rsp
  40042a: c3                    retq   
Disassembly of section .plt:

0000000000400430 :
  400430: ff 35 02 08 20 00     pushq  0x200802(%rip)        # 600c38 <_global_offset_table_ x8="">
  400436: ff 25 04 08 20 00     jmpq   *0x200804(%rip)        # 600c40 <_global_offset_table_ x10="">
  40043c: 0f 1f 40 00           nopl   0x0(%rax)

0000000000400440 :
  400440: ff 25 02 08 20 00     jmpq   *0x200802(%rip)        # 600c48 <_global_offset_table_ x18="">
  400446: 68 00 00 00 00        pushq  $0x0
  40044b: e9 e0 ff ff ff        jmpq   400430 <_init x18="">

0000000000400450 :
  400450: ff 25 fa 07 20 00     jmpq   *0x2007fa(%rip)        # 600c50 <_global_offset_table_ x20="">
  400456: 68 01 00 00 00        pushq  $0x1
  40045b: e9 d0 ff ff ff        jmpq   400430 <_init x18="">

0000000000400460 :
  400460: ff 25 f2 07 20 00     jmpq   *0x2007f2(%rip)        # 600c58 <_global_offset_table_ x28="">
  400466: 68 02 00 00 00        pushq  $0x2
  40046b: e9 c0 ff ff ff        jmpq   400430 <_init x18="">

0000000000400470 <_init_tls plt="">:
  400470: ff 25 ea 07 20 00     jmpq   *0x2007ea(%rip)        # 600c60 <_global_offset_table_ x30="">
  400476: 68 03 00 00 00        pushq  $0x3
  40047b: e9 b0 ff ff ff        jmpq   400430 <_init x18="">
Disassembly of section .text:

0000000000400480 <_start>:
  400480: 55                    push   %rbp
  400481: 48 89 e5              mov    %rsp,%rbp
  400484: 41 57                 push   %r15
  400486: 41 56                 push   %r14
  400488: 41 55                 push   %r13
  40048a: 41 54                 push   %r12
  40048c: 53                    push   %rbx
  40048d: 50                    push   %rax
  40048e: 49 89 fe              mov    %rdi,%r14
  400491: 4d 8b 3e              mov    (%r14),%r15
  400494: 49 63 c7              movslq %r15d,%rax
  400497: 4d 8d 6c c6 10        lea    0x10(%r14,%rax,8),%r13
  40049c: 48 83 3d e4 07 20 00  cmpq   $0x0,0x2007e4(%rip)        # 600c88 
  4004a3: 00 
  4004a4: 75 07                 jne    4004ad <_start x2d="">
  4004a6: 4c 89 2d db 07 20 00  mov    %r13,0x2007db(%rip)        # 600c88 
  4004ad: 49 83 c6 08           add    $0x8,%r14
  4004b1: 45 85 ff              test   %r15d,%r15d
  4004b4: 7e 25                 jle    4004db <_start x5b="">
  4004b6: 49 8b 06              mov    (%r14),%rax
  4004b9: 48 85 c0              test   %rax,%rax
  4004bc: 75 05                 jne    4004c3 <_start x43="">
  4004be: eb 1b                 jmp    4004db <_start x5b="">
  4004c0: 48 ff c0              inc    %rax
  4004c3: 48 89 05 9e 07 20 00  mov    %rax,0x20079e(%rip)        # 600c68 <__progname>
  4004ca: eb 04                 jmp    4004d0 <_start x50="">
  4004cc: 48 ff c0              inc    %rax
  4004cf: 90                    nop    
  4004d0: 8a 08                 mov    (%rax),%cl
  4004d2: 80 f9 2f              cmp    $0x2f,%cl
  4004d5: 74 e9                 je     4004c0 <_start x40="">
  4004d7: 84 c9                 test   %cl,%cl
  4004d9: 75 f1                 jne    4004cc <_start x4c="">
  4004db: b8 d0 0a 60 00        mov    $0x600ad0,%eax
  4004e0: 48 85 c0              test   %rax,%rax
  4004e3: 74 0a                 je     4004ef <_start x6f="">
  4004e5: 48 89 f7              mov    %rsi,%rdi
  4004e8: e8 53 ff ff ff        callq  400440 
  4004ed: eb 05                 jmp    4004f4 <_start x74="">
  4004ef: e8 7c ff ff ff        callq  400470 <_init_tls plt="">
  4004f4: b8 d0 0a 60 00        mov    $0x600ad0,%eax
  4004f9: 48 85 c0              test   %rax,%rax
  4004fc: 0f 85 df 00 00 00     jne    4005e1 <_start x161="">
  400502: bf 00 06 40 00        mov    $0x400600,%edi
  400507: e8 34 ff ff ff        callq  400440 
  40050c: 45 31 e4              xor    %r12d,%r12d
  40050f: b8 a4 0a 60 00        mov    $0x600aa4,%eax
  400514: b9 a4 0a 60 00        mov    $0x600aa4,%ecx
  400519: 48 29 c1              sub    %rax,%rcx
  40051c: 48 89 c8              mov    %rcx,%rax
  40051f: 48 c1 f8 3f           sar    $0x3f,%rax
  400523: 48 c1 e8 3d           shr    $0x3d,%rax
  400527: 48 01 c8              add    %rcx,%rax
  40052a: 48 c1 f8 03           sar    $0x3,%rax
  40052e: 74 41                 je     400571 <_start xf1="">
  400530: b8 a4 0a 60 00        mov    $0x600aa4,%eax
  400535: b9 a4 0a 60 00        mov    $0x600aa4,%ecx
  40053a: 48 29 c1              sub    %rax,%rcx
  40053d: 48 89 cb              mov    %rcx,%rbx
  400540: 48 c1 fb 3f           sar    $0x3f,%rbx
  400544: 48 c1 eb 3d           shr    $0x3d,%rbx
  400548: 48 01 cb              add    %rcx,%rbx
  40054b: 48 c1 fb 03           sar    $0x3,%rbx
  40054f: 90                    nop    
  400550: 4a 8b 04 e5 a4 0a 60  mov    0x600aa4(,%r12,8),%rax
  400557: 00 
  400558: 48 83 f8 02           cmp    $0x2,%rax
  40055c: 72 0b                 jb     400569 <_start xe9="">
  40055e: 44 89 ff              mov    %r15d,%edi
  400561: 4c 89 f6              mov    %r14,%rsi
  400564: 4c 89 ea              mov    %r13,%rdx
  400567: ff d0                 callq  *%rax
  400569: 49 ff c4              inc    %r12
  40056c: 49 39 dc              cmp    %rbx,%r12
  40056f: 72 df                 jb     400550 <_start xd0="">
  400571: e8 a2 fe ff ff        callq  400418 <_init>
  400576: 31 db                 xor    %ebx,%ebx
  400578: b8 a4 0a 60 00        mov    $0x600aa4,%eax
  40057d: b9 a4 0a 60 00        mov    $0x600aa4,%ecx
  400582: 48 29 c1              sub    %rax,%rcx
  400585: 48 89 c8              mov    %rcx,%rax
  400588: 48 c1 f8 3f           sar    $0x3f,%rax
  40058c: 48 c1 e8 3d           shr    $0x3d,%rax
  400590: 48 01 c8              add    %rcx,%rax
  400593: 48 c1 f8 03           sar    $0x3,%rax
  400597: 74 48                 je     4005e1 <_start x161="">
  400599: b8 a4 0a 60 00        mov    $0x600aa4,%eax
  40059e: b9 a4 0a 60 00        mov    $0x600aa4,%ecx
  4005a3: 48 29 c1              sub    %rax,%rcx
  4005a6: 49 89 cc              mov    %rcx,%r12
  4005a9: 49 c1 fc 3f           sar    $0x3f,%r12
  4005ad: 49 c1 ec 3d           shr    $0x3d,%r12
  4005b1: 49 01 cc              add    %rcx,%r12
  4005b4: 49 c1 fc 03           sar    $0x3,%r12
  4005b8: 0f 1f 84 00 00 00 00  nopl   0x0(%rax,%rax,1)
  4005bf: 00 
  4005c0: 48 8b 04 dd a4 0a 60  mov    0x600aa4(,%rbx,8),%rax
  4005c7: 00 
  4005c8: 48 83 f8 02           cmp    $0x2,%rax
  4005cc: 72 0b                 jb     4005d9 <_start x159="">
  4005ce: 44 89 ff              mov    %r15d,%edi
  4005d1: 4c 89 f6              mov    %r14,%rsi
  4005d4: 4c 89 ea              mov    %r13,%rdx
  4005d7: ff d0                 callq  *%rax
  4005d9: 48 ff c3              inc    %rbx
  4005dc: 4c 39 e3              cmp    %r12,%rbx
  4005df: 72 df                 jb     4005c0 <_start x140="">
  4005e1: 44 89 ff              mov    %r15d,%edi
  4005e4: 4c 89 f6              mov    %r14,%rsi
  4005e7: 4c 89 ea              mov    %r13,%rdx
  4005ea: e8 79 02 00 00        callq  400868 
4005ef: 89 c7 mov %eax,%edi 4005f1: e8 6a fe ff ff callq 400460 4005f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4005fd: 00 00 00 0000000000400600 : 400600: 55 push %rbp 400601: 48 89 e5 mov %rsp,%rbp 400604: 53 push %rbx 400605: 50 push %rax 400606: b8 a4 0a 60 00 mov $0x600aa4,%eax 40060b: b9 a4 0a 60 00 mov $0x600aa4,%ecx 400610: 48 29 c1 sub %rax,%rcx 400613: 48 89 cb mov %rcx,%rbx 400616: 48 c1 fb 3f sar $0x3f,%rbx 40061a: 48 c1 eb 3d shr $0x3d,%rbx 40061e: 48 01 cb add %rcx,%rbx 400621: 48 c1 fb 03 sar $0x3,%rbx 400625: 74 21 je 400648 400627: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 40062e: 00 00 400630: 48 8b 04 dd 9c 0a 60 mov 0x600a9c(,%rbx,8),%rax 400637: 00 400638: 48 ff cb dec %rbx 40063b: 48 83 f8 01 cmp $0x1,%rax 40063f: 76 02 jbe 400643 400641: ff d0 callq *%rax 400643: 48 85 db test %rbx,%rbx 400646: 75 e8 jne 400630 400648: 48 83 c4 08 add $0x8,%rsp 40064c: 5b pop %rbx 40064d: 5d pop %rbp 40064e: e9 e5 02 00 00 jmpq 400938 <_fini> 400653: 90 nop 400654: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40065b: 00 00 00 40065e: 66 90 xchg %ax,%ax 0000000000400660 : 400660: b8 7f 0c 60 00 mov $0x600c7f,%eax 400665: 55 push %rbp 400666: 48 2d 78 0c 60 00 sub $0x600c78,%rax 40066c: 48 83 f8 0e cmp $0xe,%rax 400670: 48 89 e5 mov %rsp,%rbp 400673: 76 1b jbe 400690 400675: b8 00 00 00 00 mov $0x0,%eax 40067a: 48 85 c0 test %rax,%rax 40067d: 74 11 je 400690 40067f: 5d pop %rbp 400680: bf 78 0c 60 00 mov $0x600c78,%edi 400685: ff e0 jmpq *%rax 400687: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 40068e: 00 00 400690: 5d pop %rbp 400691: c3 retq 400692: 0f 1f 40 00 nopl 0x0(%rax) 400696: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40069d: 00 00 00 00000000004006a0 : 4006a0: be 78 0c 60 00 mov $0x600c78,%esi 4006a5: 55 push %rbp 4006a6: 48 81 ee 78 0c 60 00 sub $0x600c78,%rsi 4006ad: 48 c1 fe 03 sar $0x3,%rsi 4006b1: 48 89 e5 mov %rsp,%rbp 4006b4: 48 89 f0 mov %rsi,%rax 4006b7: 48 c1 e8 3f shr $0x3f,%rax 4006bb: 48 01 c6 add %rax,%rsi 4006be: 48 d1 fe sar %rsi 4006c1: 74 15 je 4006d8 4006c3: b8 00 00 00 00 mov $0x0,%eax 4006c8: 48 85 c0 test %rax,%rax 4006cb: 74 0b je 4006d8 4006cd: 5d pop %rbp 4006ce: bf 78 0c 60 00 mov $0x600c78,%edi 4006d3: ff e0 jmpq *%rax 4006d5: 0f 1f 00 nopl (%rax) 4006d8: 5d pop %rbp 4006d9: c3 retq 4006da: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 00000000004006e0 <__do_global_dtors_aux>: 4006e0: 80 3d 91 05 20 00 00 cmpb $0x0,0x200591(%rip) # 600c78 <__tmc_end__> 4006e7: 75 62 jne 40074b <__do_global_dtors_aux x6b=""> 4006e9: 55 push %rbp 4006ea: 48 8b 05 8f 05 20 00 mov 0x20058f(%rip),%rax # 600c80 4006f1: 48 89 e5 mov %rsp,%rbp 4006f4: 41 54 push %r12 4006f6: 53 push %rbx 4006f7: bb c0 0a 60 00 mov $0x600ac0,%ebx 4006fc: 41 bc b8 0a 60 00 mov $0x600ab8,%r12d 400702: 48 81 eb b8 0a 60 00 sub $0x600ab8,%rbx 400709: 48 c1 fb 03 sar $0x3,%rbx 40070d: 48 83 eb 01 sub $0x1,%rbx 400711: 48 39 d8 cmp %rbx,%rax 400714: 73 25 jae 40073b <__do_global_dtors_aux x5b=""> 400716: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40071d: 00 00 00 400720: 48 83 c0 01 add $0x1,%rax 400724: 48 89 05 55 05 20 00 mov %rax,0x200555(%rip) # 600c80 40072b: 41 ff 14 c4 callq *(%r12,%rax,8) 40072f: 48 8b 05 4a 05 20 00 mov 0x20054a(%rip),%rax # 600c80 400736: 48 39 d8 cmp %rbx,%rax 400739: 72 e5 jb 400720 <__do_global_dtors_aux x40=""> 40073b: e8 20 ff ff ff callq 400660 400740: 5b pop %rbx 400741: 41 5c pop %r12 400743: 5d pop %rbp 400744: c6 05 2d 05 20 00 01 movb $0x1,0x20052d(%rip) # 600c78 <__tmc_end__> 40074b: f3 c3 repz retq 40074d: 0f 1f 00 nopl (%rax) 0000000000400750 : 400750: bf c8 0a 60 00 mov $0x600ac8,%edi 400755: 48 83 3f 00 cmpq $0x0,(%rdi) 400759: 75 05 jne 400760 40075b: e9 40 ff ff ff jmpq 4006a0 400760: b8 00 00 00 00 mov $0x0,%eax 400765: 48 85 c0 test %rax,%rax 400768: 74 f1 je 40075b 40076a: 55 push %rbp 40076b: 48 89 e5 mov %rsp,%rbp 40076e: ff d0 callq *%rax 400770: 5d pop %rbp 400771: e9 2a ff ff ff jmpq 4006a0 0000000000400776 : 400776: 55 push %rbp 400777: 48 89 e5 mov %rsp,%rbp 40077a: 89 7d ec mov %edi,-0x14(%rbp) 40077d: 89 75 e8 mov %esi,-0x18(%rbp) 400780: c7 45 fc 03 00 00 00 movl $0x3,-0x4(%rbp) 400787: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) 40078e: 8b 55 ec mov -0x14(%rbp),%edx 400791: 8b 45 e8 mov -0x18(%rbp),%eax 400794: 01 d0 add %edx,%eax 400796: 89 45 f8 mov %eax,-0x8(%rbp) 400799: 8b 45 fc mov -0x4(%rbp),%eax 40079c: 01 45 f8 add %eax,-0x8(%rbp) 40079f: 8b 45 f8 mov -0x8(%rbp),%eax 4007a2: 5d pop %rbp 4007a3: c3 retq 00000000004007a4 : 4007a4: 55 push %rbp 4007a5: 48 89 e5 mov %rsp,%rbp 4007a8: 48 83 ec 20 sub $0x20,%rsp 4007ac: 89 7d ec mov %edi,-0x14(%rbp) 4007af: 89 75 e8 mov %esi,-0x18(%rbp) 4007b2: 89 55 e4 mov %edx,-0x1c(%rbp) 4007b5: 89 4d e0 mov %ecx,-0x20(%rbp) 4007b8: c7 45 fc 02 00 00 00 movl $0x2,-0x4(%rbp) 4007bf: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) 4007c6: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%rbp) 4007cd: 8b 55 e0 mov -0x20(%rbp),%edx 4007d0: 8b 45 e4 mov -0x1c(%rbp),%eax 4007d3: 89 d6 mov %edx,%esi 4007d5: 89 c7 mov %eax,%edi 4007d7: e8 9a ff ff ff callq 400776 4007dc: 89 45 f4 mov %eax,-0xc(%rbp) 4007df: 8b 55 f4 mov -0xc(%rbp),%edx 4007e2: 8b 45 ec mov -0x14(%rbp),%eax 4007e5: 01 c2 add %eax,%edx 4007e7: 8b 45 e8 mov -0x18(%rbp),%eax 4007ea: 01 d0 add %edx,%eax 4007ec: 89 45 f8 mov %eax,-0x8(%rbp) 4007ef: 8b 45 fc mov -0x4(%rbp),%eax 4007f2: 01 45 f8 add %eax,-0x8(%rbp) 4007f5: 8b 45 f8 mov -0x8(%rbp),%eax 4007f8: c9 leaveq 4007f9: c3 retq 00000000004007fa : 4007fa: 55 push %rbp 4007fb: 48 89 e5 mov %rsp,%rbp 4007fe: 48 83 ec 28 sub $0x28,%rsp 400802: 89 7d ec mov %edi,-0x14(%rbp) 400805: 89 75 e8 mov %esi,-0x18(%rbp) 400808: 89 55 e4 mov %edx,-0x1c(%rbp) 40080b: 89 4d e0 mov %ecx,-0x20(%rbp) 40080e: 44 89 45 dc mov %r8d,-0x24(%rbp) 400812: 44 89 4d d8 mov %r9d,-0x28(%rbp) 400816: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%rbp) 40081d: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%rbp) 400824: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%rbp) 40082b: 8b 55 18 mov 0x18(%rbp),%edx 40082e: 8b 75 d8 mov -0x28(%rbp),%esi 400831: 8b 45 dc mov -0x24(%rbp),%eax 400834: 89 d1 mov %edx,%ecx 400836: 8b 55 10 mov 0x10(%rbp),%edx 400839: 89 c7 mov %eax,%edi 40083b: e8 64 ff ff ff callq 4007a4 400840: 89 45 f4 mov %eax,-0xc(%rbp) 400843: 8b 55 f4 mov -0xc(%rbp),%edx 400846: 8b 45 ec mov -0x14(%rbp),%eax 400849: 01 c2 add %eax,%edx 40084b: 8b 45 e8 mov -0x18(%rbp),%eax 40084e: 01 c2 add %eax,%edx 400850: 8b 45 e4 mov -0x1c(%rbp),%eax 400853: 01 c2 add %eax,%edx 400855: 8b 45 e0 mov -0x20(%rbp),%eax 400858: 01 d0 add %edx,%eax 40085a: 89 45 f8 mov %eax,-0x8(%rbp) 40085d: 8b 45 fc mov -0x4(%rbp),%eax 400860: 01 45 f8 add %eax,-0x8(%rbp) 400863: 8b 45 f8 mov -0x8(%rbp),%eax 400866: c9 leaveq 400867: c3 retq 0000000000400868
: 400868: 55 push %rbp 400869: 48 89 e5 mov %rsp,%rbp 40086c: 48 83 ec 30 sub $0x30,%rsp 400870: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%rbp) 400877: c7 45 f8 02 00 00 00 movl $0x2,-0x8(%rbp) 40087e: c7 45 f4 03 00 00 00 movl $0x3,-0xc(%rbp) 400885: c7 45 f0 04 00 00 00 movl $0x4,-0x10(%rbp) 40088c: c7 45 ec 05 00 00 00 movl $0x5,-0x14(%rbp) 400893: c7 45 e8 06 00 00 00 movl $0x6,-0x18(%rbp) 40089a: c7 45 e4 07 00 00 00 movl $0x7,-0x1c(%rbp) 4008a1: c7 45 e0 08 00 00 00 movl $0x8,-0x20(%rbp) 4008a8: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%rbp) 4008af: 44 8b 4d e8 mov -0x18(%rbp),%r9d 4008b3: 44 8b 45 ec mov -0x14(%rbp),%r8d 4008b7: 8b 4d f0 mov -0x10(%rbp),%ecx 4008ba: 8b 55 f4 mov -0xc(%rbp),%edx 4008bd: 8b 75 f8 mov -0x8(%rbp),%esi 4008c0: 8b 45 fc mov -0x4(%rbp),%eax 4008c3: 8b 7d e0 mov -0x20(%rbp),%edi 4008c6: 57 push %rdi 4008c7: 8b 7d e4 mov -0x1c(%rbp),%edi 4008ca: 57 push %rdi 4008cb: 89 c7 mov %eax,%edi 4008cd: e8 28 ff ff ff callq 4007fa 4008d2: 48 83 c4 10 add $0x10,%rsp 4008d6: 89 45 dc mov %eax,-0x24(%rbp) 4008d9: 8b 45 dc mov -0x24(%rbp),%eax 4008dc: 89 c6 mov %eax,%esi 4008de: bf 47 09 40 00 mov $0x400947,%edi 4008e3: b8 00 00 00 00 mov $0x0,%eax 4008e8: e8 63 fb ff ff callq 400450 4008ed: b8 00 00 00 00 mov $0x0,%eax 4008f2: c9 leaveq 4008f3: c3 retq 4008f4: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 4008fb: 00 00 00 4008fe: 66 90 xchg %ax,%ax 0000000000400900 <__do_global_ctors_aux>: 400900: 48 8b 05 a1 01 20 00 mov 0x2001a1(%rip),%rax # 600aa8 <__ctor_list__> 400907: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 40090b: 74 28 je 400935 <__do_global_ctors_aux x35=""> 40090d: 55 push %rbp 40090e: 48 89 e5 mov %rsp,%rbp 400911: 53 push %rbx 400912: bb a8 0a 60 00 mov $0x600aa8,%ebx 400917: 48 83 ec 08 sub $0x8,%rsp 40091b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 400920: 48 83 eb 08 sub $0x8,%rbx 400924: ff d0 callq *%rax 400926: 48 8b 03 mov (%rbx),%rax 400929: 48 83 f8 ff cmp $0xffffffffffffffff,%rax 40092d: 75 f1 jne 400920 <__do_global_ctors_aux x20=""> 40092f: 48 83 c4 08 add $0x8,%rsp 400933: 5b pop %rbx 400934: 5d pop %rbp 400935: f3 c3 repz retq 400937: 90 nop Disassembly of section .fini: 0000000000400938 <_fini>: 400938: 48 83 ec 08 sub $0x8,%rsp 40093c: e8 9f fd ff ff callq 4006e0 <__do_global_dtors_aux> 400941: 48 83 c4 08 add $0x8,%rsp 400945: c3 retq Disassembly of section .rodata: 0000000000400946 <.rodata>: 400946: 00 6f 75 add %ch,0x75(%rdi) 400949: 74 70 je 4009bb <__gnu_eh_frame_hdr x67=""> 40094b: 75 74 jne 4009c1 <__gnu_eh_frame_hdr x6d=""> 40094d: 20 69 73 and %ch,0x73(%rcx) 400950: 20 .byte 0x20 400951: 25 .byte 0x25 400952: 64 fs ... Disassembly of section .eh_frame_hdr: 0000000000400954 <__gnu_eh_frame_hdr>: 400954: 01 1b add %ebx,(%rbx) 400956: 03 3b add (%rbx),%edi 400958: 40 00 00 add %al,(%rax) 40095b: 00 07 add %al,(%rdi) 40095d: 00 00 add %al,(%rax) 40095f: 00 dc add %bl,%ah 400961: fa cli 400962: ff (bad) 400963: ff a4 00 00 00 2c fb jmpq *-0x4d40000(%rax,%rax,1) 40096a: ff (bad) 40096b: ff 5c 00 00 lcallq *0x0(%rax,%rax,1) 40096f: 00 ac fc ff ff 84 00 add %ch,0x84ffff(%rsp,%rdi,8) 400976: 00 00 add %al,(%rax) 400978: 22 fe and %dh,%bh 40097a: ff (bad) 40097b: ff cc dec %esp 40097d: 00 00 add %al,(%rax) 40097f: 00 50 fe add %dl,-0x2(%rax) 400982: ff (bad) 400983: ff ec ljmpq * 400985: 00 00 add %al,(%rax) 400987: 00 a6 fe ff ff 0c add %ah,0xcfffffe(%rsi) 40098d: 01 00 add %eax,(%rax) 40098f: 00 14 ff add %dl,(%rdi,%rdi,8) 400992: ff (bad) 400993: ff 2c 01 ljmpq *(%rcx,%rax,1) ... Disassembly of section .eh_frame: 0000000000400998 <__frame_end__-0x108>: 400998: 14 00 adc $0x0,%al 40099a: 00 00 add %al,(%rax) 40099c: 00 00 add %al,(%rax) 40099e: 00 00 add %al,(%rax) 4009a0: 01 7a 52 add %edi,0x52(%rdx) 4009a3: 00 01 add %al,(%rcx) 4009a5: 78 10 js 4009b7 <__gnu_eh_frame_hdr x63=""> 4009a7: 01 1b add %ebx,(%rbx) 4009a9: 0c 07 or $0x7,%al 4009ab: 08 90 01 00 00 24 or %dl,0x24000001(%rax) 4009b1: 00 00 add %al,(%rax) 4009b3: 00 1c 00 add %bl,(%rax,%rax,1) 4009b6: 00 00 add %al,(%rax) 4009b8: c8 fa ff ff enterq $0xfffa,$0xff 4009bc: 76 01 jbe 4009bf <__gnu_eh_frame_hdr x6b=""> 4009be: 00 00 add %al,(%rax) 4009c0: 00 41 0e add %al,0xe(%rcx) 4009c3: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 4009c9: 4a 83 07 8c rex.WX addq $0xffffffffffffff8c,(%rdi) 4009cd: 06 (bad) 4009ce: 8d 05 8e 04 8f 03 lea 0x38f048e(%rip),%eax # 3cf0e62 <_end x36f01d2=""> 4009d4: 00 00 add %al,(%rax) 4009d6: 00 00 add %al,(%rax) 4009d8: 1c 00 sbb $0x0,%al 4009da: 00 00 add %al,(%rax) 4009dc: 44 00 00 add %r8b,(%rax) 4009df: 00 20 add %ah,(%rax) 4009e1: fc cld 4009e2: ff (bad) 4009e3: ff 53 00 callq *0x0(%rbx) 4009e6: 00 00 add %al,(%rax) 4009e8: 00 41 0e add %al,0xe(%rcx) 4009eb: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 4009f1: 42 83 03 00 rex.X addl $0x0,(%rbx) 4009f5: 00 00 add %al,(%rax) 4009f7: 00 24 00 add %ah,(%rax,%rax,1) 4009fa: 00 00 add %al,(%rax) 4009fc: 64 00 00 add %al,%fs:(%rax) 4009ff: 00 30 add %dh,(%rax) 400a01: fa cli 400a02: ff (bad) 400a03: ff 50 00 callq *0x0(%rax) 400a06: 00 00 add %al,(%rax) 400a08: 00 0e add %cl,(%rsi) 400a0a: 10 46 0e adc %al,0xe(%rsi) 400a0d: 18 4a 0f sbb %cl,0xf(%rdx) 400a10: 0b 77 08 or 0x8(%rdi),%esi 400a13: 80 00 3f addb $0x3f,(%rax) 400a16: 1a 3b sbb (%rbx),%bh 400a18: 2a 33 sub (%rbx),%dh 400a1a: 24 22 and $0x22,%al 400a1c: 00 00 add %al,(%rax) 400a1e: 00 00 add %al,(%rax) 400a20: 1c 00 sbb $0x0,%al 400a22: 00 00 add %al,(%rax) 400a24: 8c 00 mov %es,(%rax) 400a26: 00 00 add %al,(%rax) 400a28: 4e fd rex.WRX std 400a2a: ff (bad) 400a2b: ff 2e ljmpq *(%rsi) 400a2d: 00 00 add %al,(%rax) 400a2f: 00 00 add %al,(%rax) 400a31: 41 0e rex.B (bad) 400a33: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 400a39: 69 0c 07 08 00 00 00 imul $0x8,(%rdi,%rax,1),%ecx 400a40: 1c 00 sbb $0x0,%al 400a42: 00 00 add %al,(%rax) 400a44: ac lods %ds:(%rsi),%al 400a45: 00 00 add %al,(%rax) 400a47: 00 5c fd ff add %bl,-0x1(%rbp,%rdi,8) 400a4b: ff 56 00 callq *0x0(%rsi) 400a4e: 00 00 add %al,(%rax) 400a50: 00 41 0e add %al,0xe(%rcx) 400a53: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 400a59: 02 51 0c add 0xc(%rcx),%dl 400a5c: 07 (bad) 400a5d: 08 00 or %al,(%rax) 400a5f: 00 1c 00 add %bl,(%rax,%rax,1) 400a62: 00 00 add %al,(%rax) 400a64: cc int3 400a65: 00 00 add %al,(%rax) 400a67: 00 92 fd ff ff 6e add %dl,0x6efffffd(%rdx) 400a6d: 00 00 add %al,(%rax) 400a6f: 00 00 add %al,(%rax) 400a71: 41 0e rex.B (bad) 400a73: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 400a79: 02 69 0c add 0xc(%rcx),%ch 400a7c: 07 (bad) 400a7d: 08 00 or %al,(%rax) 400a7f: 00 1c 00 add %bl,(%rax,%rax,1) 400a82: 00 00 add %al,(%rax) 400a84: ec in (%dx),%al 400a85: 00 00 add %al,(%rax) 400a87: 00 e0 add %ah,%al 400a89: fd std 400a8a: ff (bad) 400a8b: ff 8c 00 00 00 00 41 decl 0x41000000(%rax,%rax,1) 400a92: 0e (bad) 400a93: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi) 400a99: 02 87 0c 07 08 00 add 0x8070c(%rdi),%al ... 0000000000400aa0 <__frame_end__>: 400aa0: 00 00 add %al,(%rax) ... Disassembly of section .ctors: 0000000000600aa8 <__ctor_list__>: 600aa8: ff (bad) 600aa9: ff (bad) 600aaa: ff (bad) 600aab: ff (bad) 600aac: ff (bad) 600aad: ff (bad) 600aae: ff (bad) 600aaf: ff 00 incl (%rax) 0000000000600ab0 <__ctor_end__>: ... Disassembly of section .dtors: 0000000000600ab8 <__dtor_list__>: 600ab8: ff (bad) 600ab9: ff (bad) 600aba: ff (bad) 600abb: ff (bad) 600abc: ff (bad) 600abd: ff (bad) 600abe: ff (bad) 600abf: ff 00 incl (%rax) 0000000000600ac0 <__dtor_end__>: ... Disassembly of section .jcr: 0000000000600ac8 <__jcr_end__>: ... Disassembly of section .dynamic: 0000000000600ad0 <_dynamic>: 600ad0: 01 00 add %eax,(%rax) 600ad2: 00 00 add %al,(%rax) 600ad4: 00 00 add %al,(%rax) 600ad6: 00 00 add %al,(%rax) 600ad8: 01 00 add %eax,(%rax) 600ada: 00 00 add %al,(%rax) 600adc: 00 00 add %al,(%rax) 600ade: 00 00 add %al,(%rax) 600ae0: 0c 00 or $0x0,%al 600ae2: 00 00 add %al,(%rax) 600ae4: 00 00 add %al,(%rax) 600ae6: 00 00 add %al,(%rax) 600ae8: 18 04 40 sbb %al,(%rax,%rax,2) 600aeb: 00 00 add %al,(%rax) 600aed: 00 00 add %al,(%rax) 600aef: 00 0d 00 00 00 00 add %cl,0x0(%rip) # 600af5 <_dynamic x25=""> 600af5: 00 00 add %al,(%rax) 600af7: 00 38 add %bh,(%rax) 600af9: 09 40 00 or %eax,0x0(%rax) 600afc: 00 00 add %al,(%rax) 600afe: 00 00 add %al,(%rax) 600b00: 04 00 add $0x0,%al 600b02: 00 00 add %al,(%rax) 600b04: 00 00 add %al,(%rax) 600b06: 00 00 add %al,(%rax) 600b08: 48 02 40 00 rex.W add 0x0(%rax),%al 600b0c: 00 00 add %al,(%rax) 600b0e: 00 00 add %al,(%rax) 600b10: 05 00 00 00 00 add $0x0,%eax 600b15: 00 00 add %al,(%rax) 600b17: 00 40 03 add %al,0x3(%rax) 600b1a: 40 00 00 add %al,(%rax) 600b1d: 00 00 add %al,(%rax) 600b1f: 00 06 add %al,(%rsi) 600b21: 00 00 add %al,(%rax) 600b23: 00 00 add %al,(%rax) 600b25: 00 00 add %al,(%rax) 600b27: 00 80 02 40 00 00 add %al,0x4002(%rax) 600b2d: 00 00 add %al,(%rax) 600b2f: 00 0a add %cl,(%rdx) 600b31: 00 00 add %al,(%rax) 600b33: 00 00 add %al,(%rax) 600b35: 00 00 add %al,(%rax) 600b37: 00 44 00 00 add %al,0x0(%rax,%rax,1) 600b3b: 00 00 add %al,(%rax) 600b3d: 00 00 add %al,(%rax) 600b3f: 00 0b add %cl,(%rbx) 600b41: 00 00 add %al,(%rax) 600b43: 00 00 add %al,(%rax) 600b45: 00 00 add %al,(%rax) 600b47: 00 18 add %bl,(%rax) 600b49: 00 00 add %al,(%rax) 600b4b: 00 00 add %al,(%rax) 600b4d: 00 00 add %al,(%rax) 600b4f: 00 15 00 00 00 00 add %dl,0x0(%rip) # 600b55 <_dynamic x85=""> ... 600b5d: 00 00 add %al,(%rax) 600b5f: 00 03 add %al,(%rbx) 600b61: 00 00 add %al,(%rax) 600b63: 00 00 add %al,(%rax) 600b65: 00 00 add %al,(%rax) 600b67: 00 30 add %dh,(%rax) 600b69: 0c 60 or $0x60,%al 600b6b: 00 00 add %al,(%rax) 600b6d: 00 00 add %al,(%rax) 600b6f: 00 02 add %al,(%rdx) 600b71: 00 00 add %al,(%rax) 600b73: 00 00 add %al,(%rax) 600b75: 00 00 add %al,(%rax) 600b77: 00 60 00 add %ah,0x0(%rax) 600b7a: 00 00 add %al,(%rax) 600b7c: 00 00 add %al,(%rax) 600b7e: 00 00 add %al,(%rax) 600b80: 14 00 adc $0x0,%al 600b82: 00 00 add %al,(%rax) 600b84: 00 00 add %al,(%rax) 600b86: 00 00 add %al,(%rax) 600b88: 07 (bad) 600b89: 00 00 add %al,(%rax) 600b8b: 00 00 add %al,(%rax) 600b8d: 00 00 add %al,(%rax) 600b8f: 00 17 add %dl,(%rdi) 600b91: 00 00 add %al,(%rax) 600b93: 00 00 add %al,(%rax) 600b95: 00 00 add %al,(%rax) 600b97: 00 b8 03 40 00 00 add %bh,0x4003(%rax) 600b9d: 00 00 add %al,(%rax) 600b9f: 00 fe add %bh,%dh 600ba1: ff (bad) 600ba2: ff 6f 00 ljmpq *0x0(%rdi) 600ba5: 00 00 add %al,(%rax) 600ba7: 00 98 03 40 00 00 add %bl,0x4003(%rax) 600bad: 00 00 add %al,(%rax) 600baf: 00 ff add %bh,%bh 600bb1: ff (bad) 600bb2: ff 6f 00 ljmpq *0x0(%rdi) 600bb5: 00 00 add %al,(%rax) 600bb7: 00 01 add %al,(%rcx) 600bb9: 00 00 add %al,(%rax) 600bbb: 00 00 add %al,(%rax) 600bbd: 00 00 add %al,(%rax) 600bbf: 00 f0 add %dh,%al 600bc1: ff (bad) 600bc2: ff 6f 00 ljmpq *0x0(%rdi) 600bc5: 00 00 add %al,(%rax) 600bc7: 00 84 03 40 00 00 00 add %al,0x40(%rbx,%rax,1) ... Disassembly of section .got.plt: 0000000000600c30 <_global_offset_table_>: 600c30: d0 0a rorb (%rdx) 600c32: 60 (bad) ... 600c47: 00 46 04 add %al,0x4(%rsi) 600c4a: 40 00 00 add %al,(%rax) 600c4d: 00 00 add %al,(%rax) 600c4f: 00 56 04 add %dl,0x4(%rsi) 600c52: 40 00 00 add %al,(%rax) 600c55: 00 00 add %al,(%rax) 600c57: 00 66 04 add %ah,0x4(%rsi) 600c5a: 40 00 00 add %al,(%rax) 600c5d: 00 00 add %al,(%rax) 600c5f: 00 76 04 add %dh,0x4(%rsi) 600c62: 40 00 00 add %al,(%rax) 600c65: 00 00 add %al,(%rax) ... Disassembly of section .data: 0000000000600c68 <__progname>: 600c68: 46 09 40 00 rex.RX or %r8d,0x0(%rax) 600c6c: 00 00 add %al,(%rax) ... 0000000000600c70 <__dso_handle>: ... Disassembly of section .bss: 0000000000600c78 <__bss_start>: ... 0000000000600c80 : ... 0000000000600c88 : ... Disassembly of section .comment: 0000000000000000 <.comment>: 0: 24 46 and $0x46,%al 2: 72 65 jb 69 4: 65 gs 5: 42 53 rex.X push %rbx 7: 44 3a 20 cmp (%rax),%r12b a: 72 65 jb 71 c: 6c insb (%dx),%es:(%rdi) d: 65 gs e: 61 (bad) f: 73 65 jae 76 11: 2f (bad) 12: 31 30 xor %esi,(%rax) 14: 2e cs 15: 34 2e xor $0x2e,%al 17: 30 2f xor %ch,(%rdi) 19: 6c insb (%dx),%es:(%rdi) 1a: 69 62 2f 63 73 75 2f imul $0x2f757363,0x2f(%rdx),%esp 21: 61 (bad) 22: 6d insl (%dx),%es:(%rdi) 23: 64 fs 24: 36 ss 25: 34 2f xor $0x2f,%al 27: 63 72 74 movslq 0x74(%rdx),%esi 2a: 31 2e xor %ebp,(%rsi) 2c: 63 20 movslq (%rax),%esp 2e: 33 30 xor (%rax),%esi 30: 30 33 xor %dh,(%rbx) 32: 32 33 xor (%rbx),%dh 34: 20 32 and %dh,(%rdx) 36: 30 31 xor %dh,(%rcx) 38: 36 ss 39: 2d 30 35 2d 32 sub $0x322d3530,%eax 3e: 30 20 xor %ah,(%rax) 40: 31 39 xor %edi,(%rcx) 42: 3a 31 cmp (%rcx),%dh 44: 34 3a xor $0x3a,%al 46: 31 35 5a 20 65 6d xor %esi,0x6d65205a(%rip) # 6d6520a6 <_end x6d051416=""> 4c: 61 (bad) 4d: 73 74 jae c3 4f: 65 20 24 00 and %ah,%gs:(%rax,%rax,1) 53: 24 46 and $0x46,%al 55: 72 65 jb bc 57: 65 gs 58: 42 53 rex.X push %rbx 5a: 44 3a 20 cmp (%rax),%r12b 5d: 72 65 jb c4 5f: 6c insb (%dx),%es:(%rdi) 60: 65 gs 61: 61 (bad) 62: 73 65 jae c9 64: 2f (bad) 65: 31 30 xor %esi,(%rax) 67: 2e cs 68: 34 2e xor $0x2e,%al 6a: 30 2f xor %ch,(%rdi) 6c: 6c insb (%dx),%es:(%rdi) 6d: 69 62 2f 63 73 75 2f imul $0x2f757363,0x2f(%rdx),%esp 74: 63 6f 6d movslq 0x6d(%rdi),%ebp 77: 6d insl (%dx),%es:(%rdi) 78: 6f outsl %ds:(%rsi),(%dx) 79: 6e outsb %ds:(%rsi),(%dx) 7a: 2f (bad) 7b: 63 72 74 movslq 0x74(%rdx),%esi 7e: 62 (bad) 7f: 72 61 jb e2 81: 6e outsb %ds:(%rsi),(%dx) 82: 64 2e 63 20 movslq %cs:%fs:(%rax),%esp 86: 33 32 xor (%rdx),%esi 88: 34 30 xor $0x30,%al 8a: 39 32 cmp %esi,(%rdx) 8c: 20 32 and %dh,(%rdx) 8e: 30 31 xor %dh,(%rcx) 90: 37 (bad) 91: 2d 30 39 2d 32 sub $0x322d3930,%eax 96: 39 20 cmp %esp,(%rax) 98: 30 30 xor %dh,(%rax) 9a: 3a 30 cmp (%rax),%dh 9c: 30 3a xor %bh,(%rdx) 9e: 33 32 xor (%rdx),%esi a0: 5a pop %rdx a1: 20 6d 61 and %ch,0x61(%rbp) a4: 72 69 jb 10f a6: 75 73 jne 11b a8: 20 24 00 and %ah,(%rax,%rax,1) ab: 24 46 and $0x46,%al ad: 72 65 jb 114 af: 65 gs b0: 42 53 rex.X push %rbx b2: 44 3a 20 cmp (%rax),%r12b b5: 72 65 jb 11c b7: 6c insb (%dx),%es:(%rdi) b8: 65 gs b9: 61 (bad) ba: 73 65 jae 121 bc: 2f (bad) bd: 31 30 xor %esi,(%rax) bf: 2e cs c0: 34 2e xor $0x2e,%al c2: 30 2f xor %ch,(%rdi) c4: 6c insb (%dx),%es:(%rdi) c5: 69 62 2f 63 73 75 2f imul $0x2f757363,0x2f(%rdx),%esp cc: 63 6f 6d movslq 0x6d(%rdi),%ebp cf: 6d insl (%dx),%es:(%rdi) d0: 6f outsl %ds:(%rsi),(%dx) d1: 6e outsb %ds:(%rsi),(%dx) d2: 2f (bad) d3: 69 67 6e 6f 72 65 5f imul $0x5f65726f,0x6e(%rdi),%esp da: 69 6e 69 74 2e 63 20 imul $0x20632e74,0x69(%rsi),%ebp e1: 32 34 35 31 33 33 20 xor 0x20333331(,%rsi,1),%dh e8: 32 30 xor (%rax),%dh ea: 31 33 xor %esi,(%rbx) ec: 2d 30 31 2d 30 sub $0x302d3130,%eax f1: 37 (bad) f2: 20 31 and %dh,(%rcx) f4: 37 (bad) f5: 3a 35 38 3a 32 37 cmp 0x37323a38(%rip),%dh # 37323b33 <_end x36d22ea3=""> fb: 5a pop %rdx fc: 20 6b 69 and %ch,0x69(%rbx) ff: 62 (bad) 100: 20 24 00 and %ah,(%rax,%rax,1) 103: 46 72 65 rex.RX jb 16b 106: 65 gs 107: 42 53 rex.X push %rbx 109: 44 20 63 6c and %r12b,0x6c(%rbx) 10d: 61 (bad) 10e: 6e outsb %ds:(%rsi),(%dx) 10f: 67 20 76 65 addr32 and %dh,0x65(%esi) 113: 72 73 jb 188 115: 69 6f 6e 20 33 2e 34 imul $0x342e3320,0x6e(%rdi),%ebp 11c: 2e 31 20 xor %esp,%cs:(%rax) 11f: 28 74 61 67 sub %dh,0x67(%rcx,2) 123: 73 2f jae 154 125: 52 push %rdx 126: 45 rex.RB 127: 4c rex.WR 128: 45 rex.RB 129: 41 53 push %r11 12b: 45 5f rex.RB pop %r15 12d: 33 34 2f xor (%rdi,%rbp,1),%esi 130: 64 6f outsl %fs:(%rsi),(%dx) 132: 74 31 je 165 134: 2d 66 69 6e 61 sub $0x616e6966,%eax 139: 6c insb (%dx),%es:(%rdi) 13a: 20 32 and %dh,(%rdx) 13c: 30 38 xor %bh,(%rax) 13e: 30 33 xor %dh,(%rbx) 140: 32 29 xor (%rcx),%ch 142: 20 32 and %dh,(%rdx) 144: 30 31 xor %dh,(%rcx) 146: 34 30 xor $0x30,%al 148: 35 31 32 00 24 xor $0x24003231,%eax 14d: 46 72 65 rex.RX jb 1b5 150: 65 gs 151: 42 53 rex.X push %rbx 153: 44 3a 20 cmp (%rax),%r12b 156: 72 65 jb 1bd 158: 6c insb (%dx),%es:(%rdi) 159: 65 gs 15a: 61 (bad) 15b: 73 65 jae 1c2 15d: 2f (bad) 15e: 31 30 xor %esi,(%rax) 160: 2e cs 161: 34 2e xor $0x2e,%al 163: 30 2f xor %ch,(%rdi) 165: 6c insb (%dx),%es:(%rdi) 166: 69 62 2f 63 73 75 2f imul $0x2f757363,0x2f(%rdx),%esp 16d: 61 (bad) 16e: 6d insl (%dx),%es:(%rdi) 16f: 64 fs 170: 36 ss 171: 34 2f xor $0x2f,%al 173: 63 72 74 movslq 0x74(%rdx),%esi 176: 69 2e 53 20 32 31 imul $0x31322053,(%rsi),%ebp 17c: 37 (bad) 17d: 31 30 xor %esi,(%rax) 17f: 35 20 32 30 31 xor $0x31303220,%eax 184: 31 2d 30 31 2d 30 xor %ebp,0x302d3130(%rip) # 302d32ba <_end x2fcd262a=""> 18a: 37 (bad) 18b: 20 31 and %dh,(%rcx) 18d: 36 3a 30 cmp %ss:(%rax),%dh 190: 37 (bad) 191: 3a 35 31 5a 20 6b cmp 0x6b205a31(%rip),%dh # 6b205bc8 <_end x6ac04f38=""> 197: 69 62 20 24 00 47 43 imul $0x43470024,0x20(%rdx),%esp 19e: 43 3a 20 rex.XB cmp (%r8),%spl 1a1: 28 46 72 sub %al,0x72(%rsi) 1a4: 65 gs 1a5: 65 gs 1a6: 42 53 rex.X push %rbx 1a8: 44 20 50 6f and %r10b,0x6f(%rax) 1ac: 72 74 jb 222 1ae: 73 20 jae 1d0 1b0: 43 6f rex.XB outsl %ds:(%rsi),(%dx) 1b2: 6c insb (%dx),%es:(%rdi) 1b3: 6c insb (%dx),%es:(%rdi) 1b4: 65 63 74 69 6f movslq %gs:0x6f(%rcx,%rbp,2),%esi 1b9: 6e outsb %ds:(%rsi),(%dx) 1ba: 29 20 sub %esp,(%rax) 1bc: 35 2e 34 2e 30 xor $0x302e342e,%eax 1c1: 00 24 46 add %ah,(%rsi,%rax,2) 1c4: 72 65 jb 22b 1c6: 65 gs 1c7: 42 53 rex.X push %rbx 1c9: 44 3a 20 cmp (%rax),%r12b 1cc: 72 65 jb 233 1ce: 6c insb (%dx),%es:(%rdi) 1cf: 65 gs 1d0: 61 (bad) 1d1: 73 65 jae 238 1d3: 2f (bad) 1d4: 31 30 xor %esi,(%rax) 1d6: 2e cs 1d7: 34 2e xor $0x2e,%al 1d9: 30 2f xor %ch,(%rdi) 1db: 6c insb (%dx),%es:(%rdi) 1dc: 69 62 2f 63 73 75 2f imul $0x2f757363,0x2f(%rdx),%esp 1e3: 61 (bad) 1e4: 6d insl (%dx),%es:(%rdi) 1e5: 64 fs 1e6: 36 ss 1e7: 34 2f xor $0x2f,%al 1e9: 63 72 74 movslq 0x74(%rdx),%esi 1ec: 6e outsb %ds:(%rsi),(%dx) 1ed: 2e cs 1ee: 53 push %rbx 1ef: 20 32 and %dh,(%rdx) 1f1: 31 37 xor %esi,(%rdi) 1f3: 31 30 xor %esi,(%rax) 1f5: 35 20 32 30 31 xor $0x31303220,%eax 1fa: 31 2d 30 31 2d 30 xor %ebp,0x302d3130(%rip) # 302d3330 <_end x2fcd26a0=""> 200: 37 (bad) 201: 20 31 and %dh,(%rcx) 203: 36 3a 30 cmp %ss:(%rax),%dh 206: 37 (bad) 207: 3a 35 31 5a 20 6b cmp 0x6b205a31(%rip),%dh # 6b205c3e <_end x6ac04fae=""> 20d: 69 .byte 0x69 20e: 62 (bad) 20f: 20 24 00 and %ah,(%rax,%rax,1) Disassembly of section .debug_aranges: 0000000000000000 <.debug_aranges>: 0: 2c 00 sub $0x0,%al 2: 00 00 add %al,(%rax) 4: 02 00 add (%rax),%al 6: 00 00 add %al,(%rax) 8: 00 00 add %al,(%rax) a: 08 00 or %al,(%rax) c: 00 00 add %al,(%rax) e: 00 00 add %al,(%rax) 10: 76 07 jbe 19 12: 40 00 00 add %al,(%rax) 15: 00 00 add %al,(%rax) 17: 00 7e 01 add %bh,0x1(%rsi) ... Disassembly of section .debug_info: 0000000000000000 <.debug_info>: 0: 96 xchg %eax,%esi 1: 02 00 add (%rax),%al 3: 00 04 00 add %al,(%rax,%rax,1) 6: 00 00 add %al,(%rax) 8: 00 00 add %al,(%rax) a: 08 01 or %al,(%rcx) c: 00 00 add %al,(%rax) e: 00 00 add %al,(%rax) 10: 0c dc or $0xdc,%al 12: 00 00 add %al,(%rax) 14: 00 54 00 00 add %dl,0x0(%rax,%rax,1) 18: 00 76 07 add %dh,0x7(%rsi) 1b: 40 00 00 add %al,(%rax) 1e: 00 00 add %al,(%rax) 20: 00 7e 01 add %bh,0x1(%rsi) ... 2b: 00 00 add %al,(%rax) 2d: 02 01 add (%rcx),%al 2f: 06 (bad) 30: ab stos %eax,%es:(%rdi) 31: 00 00 add %al,(%rax) 33: 00 02 add %al,(%rdx) 35: 01 08 add %ecx,(%rax) 37: a9 00 00 00 02 test $0x2000000,%eax 3c: 02 05 32 00 00 00 add 0x32(%rip),%al # 74 42: 02 02 add (%rdx),%al 44: 07 (bad) 45: b7 00 mov $0x0,%bh 47: 00 00 add %al,(%rax) 49: 03 04 05 69 6e 74 00 add 0x746e69(,%rax,1),%eax 50: 02 04 07 add (%rdi,%rax,1),%al 53: cf iret 54: 00 00 add %al,(%rax) 56: 00 02 add %al,(%rdx) 58: 08 05 94 00 00 00 or %al,0x94(%rip) # f2 5e: 02 08 add (%rax),%cl 60: 07 (bad) 61: ca 00 00 lret $0x0 64: 00 02 add %al,(%rdx) 66: 08 04 a2 or %al,(%rdx,4) 69: 00 00 add %al,(%rax) 6b: 00 02 add %al,(%rdx) 6d: 04 04 add $0x4,%al 6f: 89 00 mov %eax,(%rax) 71: 00 00 add %al,(%rax) 73: 02 08 add (%rax),%cl 75: 07 (bad) 76: 3c 00 cmp $0x0,%al 78: 00 00 add %al,(%rax) 7a: 02 08 add (%rax),%cl 7c: 05 8f 00 00 00 add $0x8f,%eax 81: 02 10 add (%rax),%dl 83: 04 9d add $0x9d,%al 85: 00 00 add %al,(%rax) 87: 00 02 add %al,(%rdx) 89: 01 06 add %eax,(%rsi) 8b: b2 00 mov $0x0,%dl 8d: 00 00 add %al,(%rax) 8f: 04 4f add $0x4f,%al 91: 00 00 add %al,(%rax) 93: 00 01 add %al,(%rcx) 95: 03 49 00 add 0x0(%rcx),%ecx 98: 00 00 add %al,(%rax) 9a: 76 07 jbe a3 9c: 40 00 00 add %al,(%rax) 9f: 00 00 add %al,(%rax) a1: 00 2e add %ch,(%rsi) a3: 00 00 add %al,(%rax) a5: 00 00 add %al,(%rax) a7: 00 00 add %al,(%rax) a9: 00 01 add %al,(%rcx) ab: 9c pushfq ac: e5 00 in $0x0,%eax ae: 00 00 add %al,(%rax) b0: 05 67 00 01 03 add $0x3010067,%eax b5: 49 00 00 rex.WB add %al,(%r8) b8: 00 02 add %al,(%rdx) ba: 91 xchg %eax,%ecx bb: 5c pop %rsp bc: 05 68 00 01 03 add $0x3010068,%eax c1: 49 00 00 rex.WB add %al,(%r8) c4: 00 02 add %al,(%rdx) c6: 91 xchg %eax,%ecx c7: 58 pop %rax c8: 06 (bad) c9: 76 61 jbe 12c cb: 6c insb (%dx),%es:(%rdi) cc: 00 01 add %al,(%rcx) ce: 05 49 00 00 00 add $0x49,%eax d3: 02 91 6c 06 72 65 add 0x6572066c(%rcx),%dl d9: 73 00 jae db db: 01 06 add %eax,(%rsi) dd: 49 00 00 rex.WB add %al,(%r8) e0: 00 02 add %al,(%rdx) e2: 91 xchg %eax,%ecx e3: 68 00 07 4a 00 pushq $0x4a0700 e8: 00 00 add %al,(%rax) ea: 01 0f add %ecx,(%rdi) ec: 49 00 00 rex.WB add %al,(%r8) ef: 00 a4 07 40 00 00 00 add %ah,0x40(%rdi,%rax,1) f6: 00 00 add %al,(%rax) f8: 56 push %rsi f9: 00 00 add %al,(%rax) fb: 00 00 add %al,(%rax) fd: 00 00 add %al,(%rax) ff: 00 01 add %al,(%rcx) 101: 9c pushfq 102: 61 (bad) 103: 01 00 add %eax,(%rax) 105: 00 05 65 00 01 0f add %al,0xf010065(%rip) # f010170 <_end xea0f4e0=""> 10b: 49 00 00 rex.WB add %al,(%r8) 10e: 00 02 add %al,(%rdx) 110: 91 xchg %eax,%ecx 111: 5c pop %rsp 112: 05 66 00 01 0f add $0xf010066,%eax 117: 49 00 00 rex.WB add %al,(%r8) 11a: 00 02 add %al,(%rdx) 11c: 91 xchg %eax,%ecx 11d: 58 pop %rax 11e: 05 67 00 01 0f add $0xf010067,%eax 123: 49 00 00 rex.WB add %al,(%r8) 126: 00 02 add %al,(%rdx) 128: 91 xchg %eax,%ecx 129: 54 push %rsp 12a: 05 68 00 01 0f add $0xf010068,%eax 12f: 49 00 00 rex.WB add %al,(%r8) 132: 00 02 add %al,(%rdx) 134: 91 xchg %eax,%ecx 135: 50 push %rax 136: 06 (bad) 137: 76 61 jbe 19a 139: 6c insb (%dx),%es:(%rdi) 13a: 00 01 add %al,(%rcx) 13c: 11 49 00 adc %ecx,0x0(%rcx) 13f: 00 00 add %al,(%rax) 141: 02 91 6c 06 72 65 add 0x6572066c(%rcx),%dl 147: 73 00 jae 149 149: 01 12 add %edx,(%rdx) 14b: 49 00 00 rex.WB add %al,(%r8) 14e: 00 02 add %al,(%rdx) 150: 91 xchg %eax,%ecx 151: 68 06 72 65 74 pushq $0x74657206 156: 00 01 add %al,(%rcx) 158: 13 49 00 adc 0x0(%rcx),%ecx 15b: 00 00 add %al,(%rax) 15d: 02 91 64 00 07 45 add 0x45070064(%rcx),%dl 163: 00 00 add %al,(%rax) 165: 00 01 add %al,(%rcx) 167: 1f (bad) 168: 49 00 00 rex.WB add %al,(%r8) 16b: 00 fa add %bh,%dl 16d: 07 (bad) 16e: 40 00 00 add %al,(%rax) 171: 00 00 add %al,(%rax) 173: 00 6e 00 add %ch,0x0(%rsi) 176: 00 00 add %al,(%rax) 178: 00 00 add %al,(%rax) 17a: 00 00 add %al,(%rax) 17c: 01 9c 0d 02 00 00 05 add %ebx,0x5000002(%rbp,%rcx,1) 183: 61 (bad) 184: 00 01 add %al,(%rcx) 186: 1f (bad) 187: 49 00 00 rex.WB add %al,(%r8) 18a: 00 02 add %al,(%rdx) 18c: 91 xchg %eax,%ecx 18d: 5c pop %rsp 18e: 05 62 00 01 1f add $0x1f010062,%eax 193: 49 00 00 rex.WB add %al,(%r8) 196: 00 02 add %al,(%rdx) 198: 91 xchg %eax,%ecx 199: 58 pop %rax 19a: 05 63 00 01 1f add $0x1f010063,%eax 19f: 49 00 00 rex.WB add %al,(%r8) 1a2: 00 02 add %al,(%rdx) 1a4: 91 xchg %eax,%ecx 1a5: 54 push %rsp 1a6: 05 64 00 01 1f add $0x1f010064,%eax 1ab: 49 00 00 rex.WB add %al,(%r8) 1ae: 00 02 add %al,(%rdx) 1b0: 91 xchg %eax,%ecx 1b1: 50 push %rax 1b2: 05 65 00 01 20 add $0x20010065,%eax 1b7: 49 00 00 rex.WB add %al,(%r8) 1ba: 00 02 add %al,(%rdx) 1bc: 91 xchg %eax,%ecx 1bd: 4c 05 66 00 01 20 rex.WR add $0x20010066,%rax 1c3: 49 00 00 rex.WB add %al,(%r8) 1c6: 00 02 add %al,(%rdx) 1c8: 91 xchg %eax,%ecx 1c9: 48 05 67 00 01 20 add $0x20010067,%rax 1cf: 49 00 00 rex.WB add %al,(%r8) 1d2: 00 02 add %al,(%rdx) 1d4: 91 xchg %eax,%ecx 1d5: 00 05 68 00 01 20 add %al,0x20010068(%rip) # 20010243 <_end x1fa0f5b3=""> 1db: 49 00 00 rex.WB add %al,(%r8) 1de: 00 02 add %al,(%rdx) 1e0: 91 xchg %eax,%ecx 1e1: 08 06 or %al,(%rsi) 1e3: 76 61 jbe 246 1e5: 6c insb (%dx),%es:(%rdi) 1e6: 00 01 add %al,(%rcx) 1e8: 22 49 00 and 0x0(%rcx),%cl 1eb: 00 00 add %al,(%rax) 1ed: 02 91 6c 06 72 65 add 0x6572066c(%rcx),%dl 1f3: 73 00 jae 1f5 1f5: 01 23 add %esp,(%rbx) 1f7: 49 00 00 rex.WB add %al,(%r8) 1fa: 00 02 add %al,(%rdx) 1fc: 91 xchg %eax,%ecx 1fd: 68 06 72 65 74 pushq $0x74657206 202: 00 01 add %al,(%rcx) 204: 24 49 and $0x49,%al 206: 00 00 add %al,(%rax) 208: 00 02 add %al,(%rdx) 20a: 91 xchg %eax,%ecx 20b: 64 00 08 add %cl,%fs:(%rax) 20e: 84 00 test %al,(%rax) 210: 00 00 add %al,(%rax) 212: 01 2e add %ebp,(%rsi) 214: 49 00 00 rex.WB add %al,(%r8) 217: 00 68 08 add %ch,0x8(%rax) 21a: 40 00 00 add %al,(%rax) 21d: 00 00 add %al,(%rax) 21f: 00 8c 00 00 00 00 00 add %cl,0x0(%rax,%rax,1) 226: 00 00 add %al,(%rax) 228: 01 9c 06 61 00 01 30 add %ebx,0x30010061(%rsi,%rax,1) 22f: 49 00 00 rex.WB add %al,(%r8) 232: 00 02 add %al,(%rdx) 234: 91 xchg %eax,%ecx 235: 6c insb (%dx),%es:(%rdi) 236: 06 (bad) 237: 62 (bad) 238: 00 01 add %al,(%rcx) 23a: 31 49 00 xor %ecx,0x0(%rcx) 23d: 00 00 add %al,(%rax) 23f: 02 91 68 06 63 00 add 0x630668(%rcx),%dl 245: 01 32 add %esi,(%rdx) 247: 49 00 00 rex.WB add %al,(%r8) 24a: 00 02 add %al,(%rdx) 24c: 91 xchg %eax,%ecx 24d: 64 fs 24e: 06 (bad) 24f: 64 00 01 add %al,%fs:(%rcx) 252: 33 49 00 xor 0x0(%rcx),%ecx 255: 00 00 add %al,(%rax) 257: 02 91 60 06 65 00 add 0x650660(%rcx),%dl 25d: 01 34 49 add %esi,(%rcx,%rcx,2) 260: 00 00 add %al,(%rax) 262: 00 02 add %al,(%rdx) 264: 91 xchg %eax,%ecx 265: 5c pop %rsp 266: 06 (bad) 267: 66 data16 268: 00 01 add %al,(%rcx) 26a: 35 49 00 00 00 xor $0x49,%eax 26f: 02 91 58 06 67 00 add 0x670658(%rcx),%dl 275: 01 36 add %esi,(%rsi) 277: 49 00 00 rex.WB add %al,(%r8) 27a: 00 02 add %al,(%rdx) 27c: 91 xchg %eax,%ecx 27d: 54 push %rsp 27e: 06 (bad) 27f: 68 00 01 37 49 pushq $0x49370100 284: 00 00 add %al,(%rax) 286: 00 02 add %al,(%rdx) 288: 91 xchg %eax,%ecx 289: 50 push %rax 28a: 06 (bad) 28b: 72 65 jb 2f2 28d: 74 00 je 28f 28f: 01 38 add %edi,(%rax) 291: 49 00 00 rex.WB add %al,(%r8) 294: 00 02 add %al,(%rdx) 296: 91 xchg %eax,%ecx 297: 4c 00 00 rex.WR add %r8b,(%rax) Disassembly of section .debug_abbrev: 0000000000000000 <.debug_abbrev>: 0: 01 11 add %edx,(%rcx) 2: 01 25 0e 13 0b 03 add %esp,0x30b130e(%rip) # 30b1316 <_end x2ab0686=""> 8: 0e (bad) 9: 1b 0e sbb (%rsi),%ecx b: 11 01 adc %eax,(%rcx) d: 12 07 adc (%rdi),%al f: 10 17 adc %dl,(%rdi) 11: 00 00 add %al,(%rax) 13: 02 24 00 add (%rax,%rax,1),%ah 16: 0b 0b or (%rbx),%ecx 18: 3e 0b 03 or %ds:(%rbx),%eax 1b: 0e (bad) 1c: 00 00 add %al,(%rax) 1e: 03 24 00 add (%rax,%rax,1),%esp 21: 0b 0b or (%rbx),%ecx 23: 3e 0b 03 or %ds:(%rbx),%eax 26: 08 00 or %al,(%rax) 28: 00 04 2e add %al,(%rsi,%rbp,1) 2b: 01 3f add %edi,(%rdi) 2d: 19 03 sbb %eax,(%rbx) 2f: 0e (bad) 30: 3a 0b cmp (%rbx),%cl 32: 3b 0b cmp (%rbx),%ecx 34: 27 (bad) 35: 19 49 13 sbb %ecx,0x13(%rcx) 38: 11 01 adc %eax,(%rcx) 3a: 12 07 adc (%rdi),%al 3c: 40 18 97 42 19 01 13 sbb %dl,0x13011942(%rdi) 43: 00 00 add %al,(%rax) 45: 05 05 00 03 08 add $0x8030005,%eax 4a: 3a 0b cmp (%rbx),%cl 4c: 3b 0b cmp (%rbx),%ecx 4e: 49 13 02 adc (%r10),%rax 51: 18 00 sbb %al,(%rax) 53: 00 06 add %al,(%rsi) 55: 34 00 xor $0x0,%al 57: 03 08 add (%rax),%ecx 59: 3a 0b cmp (%rbx),%cl 5b: 3b 0b cmp (%rbx),%ecx 5d: 49 13 02 adc (%r10),%rax 60: 18 00 sbb %al,(%rax) 62: 00 07 add %al,(%rdi) 64: 2e 01 3f add %edi,%cs:(%rdi) 67: 19 03 sbb %eax,(%rbx) 69: 0e (bad) 6a: 3a 0b cmp (%rbx),%cl 6c: 3b 0b cmp (%rbx),%ecx 6e: 27 (bad) 6f: 19 49 13 sbb %ecx,0x13(%rcx) 72: 11 01 adc %eax,(%rcx) 74: 12 07 adc (%rdi),%al 76: 40 18 96 42 19 01 13 sbb %dl,0x13011942(%rsi) 7d: 00 00 add %al,(%rax) 7f: 08 2e or %ch,(%rsi) 81: 01 3f add %edi,(%rdi) 83: 19 03 sbb %eax,(%rbx) 85: 0e (bad) 86: 3a 0b cmp (%rbx),%cl 88: 3b 0b cmp (%rbx),%ecx 8a: 49 13 11 adc (%r9),%rdx 8d: 01 12 add %edx,(%rdx) 8f: 07 (bad) 90: 40 18 96 42 19 00 00 sbb %dl,0x1942(%rsi) ... Disassembly of section .debug_line: 0000000000000000 <.debug_line>: 0: 6f outsl %ds:(%rsi),(%dx) 1: 00 00 add %al,(%rax) 3: 00 02 add %al,(%rdx) 5: 00 2b add %ch,(%rbx) 7: 00 00 add %al,(%rax) 9: 00 01 add %al,(%rcx) b: 01 fb add %edi,%ebx d: 0e (bad) e: 0d 00 01 01 01 or $0x1010100,%eax 13: 01 00 add %eax,(%rax) 15: 00 00 add %al,(%rax) 17: 01 00 add %eax,(%rax) 19: 00 01 add %al,(%rcx) 1b: 00 63 61 add %ah,0x61(%rbx) 1e: 6c insb (%dx),%es:(%rdi) 1f: 6c insb (%dx),%es:(%rdi) 20: 73 74 jae 96 22: 61 (bad) 23: 74 63 je 88 25: 6b 5f 6f 62 imul $0x62,0x6f(%rdi),%ebx 29: 73 65 jae 90 2b: 72 76 jb a3 2d: 65 2e 63 00 movslq %cs:%gs:(%rax),%eax 31: 00 00 add %al,(%rax) 33: 00 00 add %al,(%rax) 35: 00 09 add %cl,(%rcx) 37: 02 76 07 add 0x7(%rsi),%dh 3a: 40 00 00 add %al,(%rax) 3d: 00 00 add %al,(%rax) 3f: 00 15 9f 75 76 ad add %dl,-0x52898a61(%rip) # ffffffffad7675e4 <_end xffffffffad166954=""> 45: 68 3d 32 08 3d pushq $0x3d08323d 4a: 75 75 jne c1 4c: 76 08 jbe 56 4e: 22 f3 and %bl,%dh 50: 68 3d 34 08 ad pushq $0xffffffffad08343d 55: 75 75 jne cc 57: 76 08 jbe 61 59: 76 08 jbe 63 5b: 91 xchg %eax,%ecx 5c: 68 3d 31 83 75 pushq $0x7583313d 61: 75 75 jne d8 63: 75 75 jne da 65: 75 75 jne dc 67: 75 76 jne df 69: 02 2a add (%rdx),%ch 6b: 14 08 adc $0x8,%al 6d: 84 02 test %al,(%rdx) 6f: 02 00 add (%rax),%al 71: 01 01 add %eax,(%rcx) Disassembly of section .debug_str: 0000000000000000 <.debug_str>: 0: 47 rex.RXB 1: 4e 55 rex.WRX push %rbp 3: 20 43 31 and %al,0x31(%rbx) 6: 31 20 xor %esp,(%rax) 8: 35 2e 34 2e 30 xor $0x302e342e,%eax d: 20 2d 6d 74 75 6e and %ch,0x6e75746d(%rip) # 6e757480 <_end x6e1567f0=""> 13: 65 gs 14: 3d 67 65 6e 65 cmp $0x656e6567,%eax 19: 72 69 jb 84 1b: 63 20 movslq (%rax),%esp 1d: 2d 6d 61 72 63 sub $0x6372616d,%eax 22: 68 3d 78 38 36 pushq $0x3638783d 27: 2d 36 34 20 2d sub $0x2d203436,%eax 2c: 67 20 2d 4f 30 00 73 addr32 and %ch,0x7300304f(%rip) # 73003082 <_end x72a023f2=""> 33: 68 6f 72 74 20 pushq $0x2074726f 38: 69 6e 74 00 73 69 7a imul $0x7a697300,0x74(%rsi),%ebp 3f: 65 gs 40: 74 79 je bb 42: 70 65 jo a9 44: 00 66 75 add %ah,0x75(%rsi) 47: 6e outsb %ds:(%rsi),(%dx) 48: 31 00 xor %eax,(%rax) 4a: 66 data16 4b: 75 6e jne bb 4d: 32 00 xor (%rax),%al 4f: 66 data16 50: 75 6e jne c0 52: 33 00 xor (%rax),%eax 54: 2f (bad) 55: 6d insl (%dx),%es:(%rdi) 56: 79 64 jns bc 58: 61 (bad) 59: 74 61 je bc 5b: 2f (bad) 5c: 68 6f 6d 65 2f pushq $0x2f656d6f 61: 72 61 jb c4 63: 6e outsb %ds:(%rsi),(%dx) 64: 6a 65 pushq $0x65 66: 73 69 jae d1 68: 6e outsb %ds:(%rsi),(%dx) 69: 2f (bad) 6a: 6d insl (%dx),%es:(%rdi) 6b: 79 77 jns e4 6d: 6f outsl %ds:(%rsi),(%dx) 6e: 72 6b jb db 70: 2f (bad) 71: 63 61 6c movslq 0x6c(%rcx),%esp 74: 6c insb (%dx),%es:(%rdi) 75: 73 74 jae eb 77: 61 (bad) 78: 74 63 je dd 7a: 6b 5f 6f 62 imul $0x62,0x6f(%rdi),%ebx 7e: 73 65 jae e5 80: 72 76 jb f8 82: 65 00 6d 61 add %ch,%gs:0x61(%rbp) 86: 69 6e 00 66 6c 6f 61 imul $0x616f6c66,0x0(%rsi),%ebp 8d: 74 00 je 8f 8f: 6c insb (%dx),%es:(%rdi) 90: 6f outsl %ds:(%rsi),(%dx) 91: 6e outsb %ds:(%rsi),(%dx) 92: 67 20 6c 6f 6e addr32 and %ch,0x6e(%edi,%ebp,2) 97: 67 20 69 6e addr32 and %ch,0x6e(%ecx) 9b: 74 00 je 9d 9d: 6c insb (%dx),%es:(%rdi) 9e: 6f outsl %ds:(%rsi),(%dx) 9f: 6e outsb %ds:(%rsi),(%dx) a0: 67 20 64 6f 75 addr32 and %ah,0x75(%edi,%ebp,2) a5: 62 (bad) a6: 6c insb (%dx),%es:(%rdi) a7: 65 00 75 6e add %dh,%gs:0x6e(%rbp) ab: 73 69 jae 116 ad: 67 6e addr32 outsb %ds:(%esi),(%dx) af: 65 64 20 63 68 and %ah,%fs:%gs:0x68(%rbx) b4: 61 (bad) b5: 72 00 jb b7 b7: 73 68 jae 121 b9: 6f outsl %ds:(%rsi),(%dx) ba: 72 74 jb 130 bc: 20 75 6e and %dh,0x6e(%rbp) bf: 73 69 jae 12a c1: 67 6e addr32 outsb %ds:(%esi),(%dx) c3: 65 64 20 69 6e and %ch,%fs:%gs:0x6e(%rcx) c8: 74 00 je ca ca: 6c insb (%dx),%es:(%rdi) cb: 6f outsl %ds:(%rsi),(%dx) cc: 6e outsb %ds:(%rsi),(%dx) cd: 67 20 75 6e addr32 and %dh,0x6e(%ebp) d1: 73 69 jae 13c d3: 67 6e addr32 outsb %ds:(%esi),(%dx) d5: 65 64 20 69 6e and %ch,%fs:%gs:0x6e(%rcx) da: 74 00 je dc dc: 63 61 6c movslq 0x6c(%rcx),%esp df: 6c insb (%dx),%es:(%rdi) e0: 73 74 jae 156 e2: 61 (bad) e3: 74 63 je 148 e5: 6b 5f 6f 62 imul $0x62,0x6f(%rdi),%ebx e9: 73 65 jae 150 eb: 72 76 jb 163 ed: 65 2e 63 00 movslq %cs:%gs:(%rax),%eax

Comments

Popular posts from this blog

GDB script to traverse a binary tree

I had a binary tree program i wanted to debug. I looked for a gdb script that can print all the nodes of  a binary tree but could not find a working one. So i wrote one myself. Sample C program. #include <stdio.h> #include <malloc.h> typedef struct node_ {     int key;     struct node_ *left;     struct node_ *right; } node_t; node_t *insert_internal (node_t *root, node_t *new_node) {     if (NULL == root) return new_node;     if (new_node->key > root->key) {         root->right = insert_internal(root->right, new_node);     } else {         root->left = insert_internal(root->left, new_node);     }     return root; } node_t *insert (node_t *root, int key) {     node_t *new_node = (node_t *) malloc(sizeof(node_t));     new_node->key = key;     new_node->left = new_node->right = NULL;     return insert_internal(root, new_node); } void printtree (node_t *root) {     if (NULL == root) return;     printf(&quo