# Conditionals & Loops

Description of conditional statements and loops

## Conditional Statements

Conditional statements are used to perform different actions based on different conditions.

### if

The `if` statement executes some code if one condition is true.
Syntax
if (condition) {
code to be executed if condition is true;
}
Example 1
if (@rax == 55) {
printf("rax is equal to %llx\n", @rax);
}
Example 2
if (poi(@rcx + 0x10) == ffff7080deadbeef && @rdx != 55 || \$pid == 4) {
printf("condition is met\n");
}

### else

The `else` statement is executed if the `if` condition is false.
Syntax
if (condition) {
code to be executed if condition is true;
}
else {
if the above condition is false, then else is called;
}
Example
if (@rax == 55) {
printf("rax is equal to %llx\n", @rax);
}
else {
printf("rax is not equal to 0x55, it is equal to %llx\n", @rax);
}

### elsif

Multiple `if...else` statements can be nested to create an `elsif` clause. Note that there is one `elsif` (in one word) keyword in HyperDbg script engine.
Syntax
if (condition) {
code to be executed if condition is true;
}
elsif (condition) {
code to be executed if elsif condition is true;
}
else {
if none of the above conditions are true, then else is called;
}
Example
if (@rax == 55) {
printf("rax is equal to 0x55\n");
}
elsif (@rax == 66) {
printf("rax is equal to 0x66\n");
}
elsif (@rax == 77) {
printf("rax is equal to 0x77\n");
}
else {
printf("rax is not equal to 0x55, 0x66, 0x77. It is equal to %llx\n", @rax);
}

## Loops

The following statements are used to create loops in HyperDbg's script engine.

### for

The `for` statement creates a loop that consists of three expressions, enclosed in parentheses and separated by semicolons, followed by a block statement to be executed in the loop.
Syntax
for (initial value; condition; incrementation or decrementation) {
code to be executed in loop;
}
Example 1
for (i = 10; i != 0; i--) {
printf("%d\n", i);
}
Example 2
for ( i = 0; i < 10 ; i--) {
for (j = 0; j < 10; j++) {
printf("%d, %d\n", i, j);
}
}

### while

With the `while` loop, we can execute a set of statements as long as the condition is true.
Syntax
while (condition) {
code to be executed if while condition is true;
}
Example
x = 55;
while (x) {
printf("x = %x\n", x);
x = x - 1;
}

### do, while

The `do..while` loop is similar to the `while` loop with one important difference. The body of `do...while` loop is executed at least once. Only then, the test expression is evaluated.
Syntax
do {
code to be executed at least one time and continues,
if while condition is true;
}
while (condition);
Example
x = 55;
do {
printf("x = %x\n", x);
x = x - 1;
} while (x);