밤랩에는 대체로 페이즈 별 유형이 3개씩 있다고 볼 수 있다.
우선 phase_2 의 유형부터 살펴보자.
밤랩 1251056, 1451023, .. 의 유형이다.
입력값 , , ... , 는 각각 %rsp, 0x4(%rsp), .. , 0x14(%rsp) 와 대응된다.
<+30>, <+36> 보면 , 는 각각 0, 1이다.
<+51>부터 <+78>을 보면 %rbx + 0x4(%rbx) == 0x8(%rbx) 인지 확인하고,
맞다면 %rbx에 $0x4를 더해주고, 아니면 터진다.
답은 피보나치 수열의 일부분인 0 1 1 2 3 5 이다.
밤랩 1551001, 1551003, .. 의 유형이다.
<+44> 에서 %ebx 는 0x1이다.
<+49> ~ <+74> 에서는 %rbx + %eax == 0x4(%rbx) 인지 확인하고 있다.
또, 루프를 한 번 돌 때마다 %ebx 값이 +1 되고, <+49> 에서 %eax에 데이터를 복사한다.
즉, 라고 볼 수 있다.
<+30> 에서 %rsp가 0이므로 답은 0 1 3 6 10 15 이다.
밤랩 1551005, 1551012, .. 의 유형이다.
<+41> mov %rsp,%rbx
<+49> ~ <+70>는 %rbx를 +0x4 씩 해서 0x14(%rsp)가 되기 전까지 반복하는 루프이다.
<+49> ~ <+53>을 보면 결국엔 %rbx * 2 == 0x4(%rbx) 인지 확인한다.
<+30> 에서 %rsp가 1이므로 답은 1 2 4 8 16 32 이다.