asm1

Reverse Engineering

Assembly code provided with 1 calling argument.  Follow the program to get the result.

Function call:  asm1(0x2e0)

Assembly Code:

asm1:
    <+0>:    push   ebp
    <+1>:    mov    ebp,esp
    <+3>:    cmp    DWORD PTR [ebp+0x8],0x3fb
    <+10>:    jg     0x512 <asm1+37>
    <+12>:    cmp    DWORD PTR [ebp+0x8],0x280
    <+19>:    jne    0x50a <asm1+29>
    <+21>:    mov    eax,DWORD PTR [ebp+0x8]
    <+24>:    add    eax,0xa
    <+27>:    jmp    0x529 <asm1+60>
    <+29>:    mov    eax,DWORD PTR [ebp+0x8]
    <+32>:    sub    eax,0xa
    <+35>:    jmp    0x529 <asm1+60>
    <+37>:    cmp    DWORD PTR [ebp+0x8],0x559
    <+44>:    jne    0x523 <asm1+54>
    <+46>:    mov    eax,DWORD PTR [ebp+0x8]
    <+49>:    sub    eax,0xa
    <+52>:    jmp    0x529 <asm1+60>
    <+54>:    mov    eax,DWORD PTR [ebp+0x8]
    <+57>:    add    eax,0xa
    <+60>:    pop    ebp
    <+61>:    ret   

 

Flow Chart:

Stack:

Solution:

The answer is 0x2e0 – 0xa = 0x2d6