# 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);`