[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

09/21/2009 at 09:30PM PDT, ID: 24750525 | Points: 500
[x]
Attachment Details

Binary Bomb Lab - Last Phase

Asked by Dvcs in Assembly Programming Language

Tags: assembly

Hi, I'm working on a puzzle called a bomb lab to learn assembly language. I was going OK then stuck at this very last phase.

So far, I've figured out that this phase takes 6 decimal arguments and then swaps its order.
e.g) 1 2 3 4 5 6 -> 6 5 4 3 2 1

However, after this swapping process, the code threw me off (specifically speaking, from 0x401234). I sense that it's a linked list... but somehow I am lost.

Could you explain me what's going on with this code? And, answer as well. This is a good stuff, but I don't want to spend too much time on this...

Here is the code. Thanks in advance.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
0x00000000004011b1 <phase_6+0>:	push   %r13
0x00000000004011b3 <phase_6+2>:	push   %r12
0x00000000004011b5 <phase_6+4>:	push   %rbp
0x00000000004011b6 <phase_6+5>:	push   %rbx
0x00000000004011b7 <phase_6+6>:	sub    $0x58,%rsp
0x00000000004011bb <phase_6+10>:	mov    $0x503af0,%r13d
0x00000000004011c1 <phase_6+16>:	lea    0x30(%rsp),%rsi
0x00000000004011c6 <phase_6+21>:	callq  0x4013c1 <read_six_numbers>
0x00000000004011cb <phase_6+26>:	mov    $0x0,%r12d
0x00000000004011d1 <phase_6+32>:	movslq %r12d,%rax
0x00000000004011d4 <phase_6+35>:	mov    0x30(%rsp,%rax,4),%eax
0x00000000004011d8 <phase_6+39>:	dec    %eax
0x00000000004011da <phase_6+41>:	cmp    $0x5,%eax
0x00000000004011dd <phase_6+44>:	jbe    0x4011e4 <phase_6+51>
0x00000000004011df <phase_6+46>:	callq  0x4017e5 <explode_bomb>
0x00000000004011e4 <phase_6+51>:	lea    0x1(%r12),%ebx
0x00000000004011e9 <phase_6+56>:	cmp    $0x5,%ebx
0x00000000004011ec <phase_6+59>:	jg     0x40120a <phase_6+89>
0x00000000004011ee <phase_6+61>:	movslq %r12d,%rbp
0x00000000004011f1 <phase_6+64>:	movslq %ebx,%rdx
0x00000000004011f4 <phase_6+67>:	mov    0x30(%rsp,%rbp,4),%eax
0x00000000004011f8 <phase_6+71>:	cmp    0x30(%rsp,%rdx,4),%eax
0x00000000004011fc <phase_6+75>:	jne    0x401203 <phase_6+82>
0x00000000004011fe <phase_6+77>:	callq  0x4017e5 <explode_bomb>
0x0000000000401203 <phase_6+82>:	inc    %ebx
0x0000000000401205 <phase_6+84>:	cmp    $0x5,%ebx
0x0000000000401208 <phase_6+87>:	jle    0x4011f1 <phase_6+64>
0x000000000040120a <phase_6+89>:	inc    %r12d
0x000000000040120d <phase_6+92>:	cmp    $0x5,%r12d
0x0000000000401211 <phase_6+96>:	jle    0x4011d1 <phase_6+32>
0x0000000000401213 <phase_6+98>:	mov    $0x0,%r12d
0x0000000000401219 <phase_6+104>:	mov    $0x7,%ecx
0x000000000040121e <phase_6+109>:	movslq %r12d,%rdx
0x0000000000401221 <phase_6+112>:	mov    %ecx,%eax
0x0000000000401223 <phase_6+114>:	sub    0x30(%rsp,%rdx,4),%eax
0x0000000000401227 <phase_6+118>:	mov    %eax,0x30(%rsp,%rdx,4)
0x000000000040122b <phase_6+122>:	inc    %r12d
0x000000000040122e <phase_6+125>:	cmp    $0x5,%r12d
0x0000000000401232 <phase_6+129>:	jle    0x40121e <phase_6+109>
0x0000000000401234 <phase_6+131>:	mov    $0x0,%r12d
0x000000000040123a <phase_6+137>:	mov    %r13,%rbp
0x000000000040123d <phase_6+140>:	mov    $0x1,%ebx
0x0000000000401242 <phase_6+145>:	movslq %r12d,%rax
0x0000000000401245 <phase_6+148>:	cmpl   $0x1,0x30(%rsp,%rax,4)
0x000000000040124a <phase_6+153>:	jle    0x40125a <phase_6+169>
0x000000000040124c <phase_6+155>:	mov    0x30(%rsp,%rax,4),%eax
0x0000000000401250 <phase_6+159>:	mov    0x8(%rbp),%rbp
0x0000000000401254 <phase_6+163>:	inc    %ebx
0x0000000000401256 <phase_6+165>:	cmp    %ebx,%eax
0x0000000000401258 <phase_6+167>:	jg     0x401250 <phase_6+159>
0x000000000040125a <phase_6+169>:	movslq %r12d,%rax
0x000000000040125d <phase_6+172>:	mov    %rbp,(%rsp,%rax,8)
0x0000000000401261 <phase_6+176>:	inc    %r12d
0x0000000000401264 <phase_6+179>:	cmp    $0x5,%r12d
0x0000000000401268 <phase_6+183>:	jle    0x40123a <phase_6+137>
0x000000000040126a <phase_6+185>:	mov    (%rsp),%rbp
0x000000000040126e <phase_6+189>:	mov    %rbp,%r13
0x0000000000401271 <phase_6+192>:	mov    $0x1,%r12d
0x0000000000401277 <phase_6+198>:	movslq %r12d,%rax
0x000000000040127a <phase_6+201>:	mov    (%rsp,%rax,8),%rax
0x000000000040127e <phase_6+205>:	mov    %rax,0x8(%rbp)
0x0000000000401282 <phase_6+209>:	mov    %rax,%rbp
0x0000000000401285 <phase_6+212>:	inc    %r12d
0x0000000000401288 <phase_6+215>:	cmp    $0x5,%r12d
0x000000000040128c <phase_6+219>:	jle    0x401277 <phase_6+198>
0x000000000040128e <phase_6+221>:	movq   $0x0,0x8(%rax)
0x0000000000401296 <phase_6+229>:	mov    %r13,%rbp
0x0000000000401299 <phase_6+232>:	mov    $0x0,%r12d
0x000000000040129f <phase_6+238>:	mov    0x8(%rbp),%rdx
0x00000000004012a3 <phase_6+242>:	mov    0x0(%rbp),%eax
0x00000000004012a6 <phase_6+245>:	cmp    (%rdx),%eax
0x00000000004012a8 <phase_6+247>:	jge    0x4012af <phase_6+254>
0x00000000004012aa <phase_6+249>:	callq  0x4017e5 <explode_bomb>
0x00000000004012af <phase_6+254>:	mov    0x8(%rbp),%rbp
0x00000000004012b3 <phase_6+258>:	inc    %r12d
0x00000000004012b6 <phase_6+261>:	cmp    $0x4,%r12d
0x00000000004012ba <phase_6+265>:	jle    0x40129f <phase_6+238>
0x00000000004012bc <phase_6+267>:	add    $0x58,%rsp
0x00000000004012c0 <phase_6+271>:	pop    %rbx
0x00000000004012c1 <phase_6+272>:	pop    %rbp
0x00000000004012c2 <phase_6+273>:	pop    %r12
0x00000000004012c4 <phase_6+275>:	pop    %r13
0x00000000004012c6 <phase_6+277>:	retq
 
Keywords: Binary Bomb Lab - Last Phase
 
Loading Advertisement...
 
[+][-]09/22/09 12:47 AM, ID: 25390387

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]09/22/09 01:37 AM, ID: 25390652

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]09/22/09 01:52 AM, ID: 25390730

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
20091111-EE-VQP-91 - Hierarchy / EE_QW_3_20080625