1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-26 19:30:00 +00:00

Added 8 queens example programs with and without recursion.

This commit is contained in:
jespergravgaard 2020-04-26 13:57:53 +02:00
parent e960c71448
commit d8d0cc1ff8
11 changed files with 25458 additions and 6571 deletions

View File

@ -40,6 +40,11 @@ public class TestPrograms {
public TestPrograms() {
}
@Test
public void testEightQueensRecursive() throws IOException, URISyntaxException {
compileAndCompare("examples/eightqueens/eightqueens-recursive.c");
}
@Test
public void testEightQueens() throws IOException, URISyntaxException {
compileAndCompare("examples/eightqueens/eightqueens.c");

View File

@ -0,0 +1,99 @@
// N Queens Problem in C Using Backtracking
//
// N Queens Problem is a famous puzzle in which n-queens are to be placed on a nxn chess board such that no two queens are in the same row, column or diagonal.
//
// This is a recursive solution
#include<stdio.h>
#define QUEENS 8
#define PRINT_SOLUTIONS
// The board. board[i] holds the column position of the queen on row i.
char board[20];
// The number of found solutions
unsigned long count = 0;
void main() {
printf_cls();
printf(" - n queens problem using backtracking -");
printf("\nNumber of queens:%u",QUEENS);
queen(1);
}
// Generates all valid placements of queens on a NxN board recursively
// Works by generating all legal placements af a queen for a specific row taking into consideration the queens already placed on the rows below
// and then recursively generating all legal placements on the rows above.
__stackcall void queen(char row) {
__ma char r = row;
for(__ma char column=1;column<=QUEENS;++column) {
if(legal(r,column)) {
//no conflicts so place queen
board[r]=column;
if(r==QUEENS)
// we are done! Print the board configuration
print();
else {
// Perform recussive placement on rows above
// Push the local vars on the stack (waiting for proper recursion support)
asm {
lda column
pha
lda r
pha
}
// Do recursion
queen(r+1);
// Pop the local vars on the stack (waiting for proper recursion support)
asm {
pla
sta r
pla
sta column
}
}
}
}
}
// Checks is a placement of the queen on the board is legal.
// Checks the passed (row, column) against all queens placed on the board on lower rows.
// If no conflict for desired position returns 1 otherwise returns 0
char legal(char row,char column) {
for(char i=1;i<=row-1;++i) {
if(board[i]==column)
// The same column is a conflict.
return 0;
else
if(diff(board[i],column)==diff(i,row))
// The same diagonal is a conflict.
return 0;
}
// Placement is legal
return 1;
}
// Find the absolute difference between two unsigned chars
char diff(char a, char b) {
if(a<b)
return b-a;
else
return a-b;
}
// Print the board with a legal placement. Also increments the solution count.
void print() {
printf("\n#%lu:\n ",++count);
for(char i=1;i<=QUEENS;++i)
printf("%x",i);
for(char i=1;i<=QUEENS;++i) {
printf("\n%x",i);
for(char j=1;j<=QUEENS;++j) {
if(board[i]==j)
printf("Q");
else
printf("-");
}
}
}

View File

@ -1,67 +1,86 @@
// N Queens Problem in C Using Backtracking
//
// N Queens Problem is a famous puzzle in which n-queens are to be placed on a nxn chess board such that no two queens are in the same row, column or diagonal.
// In this tutorial I am sharing the C program to find solution for N Queens problem using backtracking. Below animation shows the solution for 8 queens problem using backtracking.
//
// Author: Neeraj Mishra
// Source: https://www.thecrazyprogrammer.com/2015/03/c-program-for-n-queens-problem-using-backtracking.html
// N Queens Problem is a famous puzzle in which n-queens are to be placed on a nxn chess board such that no two queens are in the same row, column or diagonal.
//
// This is an iterative solution.
#include<stdio.h>
char board[20],count;
#define N 8
#define QUEENS 8
#define PRINT_SOLUTIONS
// The board. board[i] holds the column position of the queen on row i.
char board[20];
// The number of found solutions
unsigned long count = 0;
void main() {
printf_cls();
printf(" - N Queens Problem Using Backtracking -");
printf("\n\nNumber of Queens:%u",N);
queen(1);
printf(" - n queens problem using backtracking -");
printf("\nNumber of queens:%u",QUEENS);
queens();
}
// Function to check for proper positioning of queen
__stackcall void queen(char row) {
__ma char r = row;
for(__ma char column=1;column<=N;++column) {
if(place(r,column)) {
board[r]=column; //no conflicts so place queen
if(r==N) //dead end
print(); //printing the board configuration
else {
// Push the local vars on the stack (waiting for proper recursion support)
asm {
lda column
pha
lda r
pha
}
//try queen with next position
queen(r+1);
// Pop the local vars on the stack (waiting for proper recursion support)
asm {
pla
sta r
pla
sta column
// Generates all valid placements of queens on a NxN board without recursion
// Works exactly like the recursive solution by generating all legal placements af a queen for a specific row taking into consideration the queens already placed on the rows below
// and then moving on to generating all legal placements on the rows above.
// In practice this works like a depth first tree search where the level in the tree is the row on the board and each branch in the tree is the legal placement of a queen on that row.
// The solution uses the board itself as a "cursor" moving through all possibilities
// When all columns on a row is exhausted move back down to the lower level and move forward one position until we are done with the last position on the first row
void queens() {
// The current row where the queen is moving
char row = 1;
while(true) {
// Move the queen forward the current row
board[row]++;
if(board[row]==QUEENS+1) {
// We moved past the end of the row - reset position and go down to the lower row
board[row] = 0;
if(row==1)
// We are done - exit the search loop!
break;
else
// Move down one row
row--;
} else {
// check if the current position on row 1-row is legal
if(legal(row, board[row])) {
// position is legal - move up to the next row
if(row==QUEENS) {
// We have a complete legal board - print it!
#ifdef PRINT_SOLUTIONS
print();
#endif
// Move forward on the top row!
continue;
} else {
// Move up to the next row
row++;
}
} else {
// position is illegal - move forward on the same row
continue;
}
}
}
}
// function to check conflicts
// If no conflict for desired postion returns 1 otherwise returns 0
char place(char row,char column) {
char i;
for(i=1;i<=row-1;++i) {
//checking column and digonal conflicts
// Checks is a placement of the queen on the board is legal.
// Checks the passed (row, column) against all queens placed on the board on lower rows.
// If no conflict for desired position returns 1 otherwise returns 0
char legal(char row,char column) {
for(char i=1;i<=row-1;++i) {
if(board[i]==column)
// The same column is a conflict.
return 0;
else
if(diff(board[i],column)==diff(i,row))
// The same diagonal is a conflict.
return 0;
}
return 1; //no conflicts
// Placement is legal
return 1;
}
// Find the absolute difference between two unsigned chars
@ -72,19 +91,18 @@ char diff(char a, char b) {
return a-b;
}
//function for printing the solution
// Print the board with a legal placement. Also increments the solution count.
void print() {
printf("\nSolution %u:\n ",++count);
for(char i=1;i<=N;++i)
printf("%u",i);
for(char i=1;i<=N;++i) {
printf("\n%u",i);
for(char j=1;j<=N;++j) {
//for nxn board
printf("\n#%lu:\n ",++count);
for(char i=1;i<=QUEENS;++i)
printf("%x",i);
for(char i=1;i<=QUEENS;++i) {
printf("\n%x",i);
for(char j=1;j<=QUEENS;++j) {
if(board[i]==j)
printf("Q"); //queen at i,j position
printf("Q");
else
printf("-"); //empty slot
printf("-");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,744 @@
@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] (byte) printf_cursor_x ← (byte) 0
[2] (byte) printf_cursor_y ← (byte) 0
[3] (byte*) printf_cursor_ptr ← (byte*) 1024
to:@2
@2: scope:[] from @1
[4] (dword) count ← (dword) 0
to:@3
@3: scope:[] from @2
[5] phi()
[6] call main
to:@end
@end: scope:[] from @3
[7] phi()
(void()) main()
main: scope:[main] from @3
[8] phi()
[9] call printf_cls
to:main::@1
main::@1: scope:[main] from main
[10] phi()
[11] call printf_str
to:main::@2
main::@2: scope:[main] from main::@1
[12] phi()
[13] call printf_str
to:main::@3
main::@3: scope:[main] from main::@2
[14] phi()
[15] call printf_uint
to:main::@4
main::@4: scope:[main] from main::@3
[16] stackpush(byte) ← (byte) 1
[17] callexecute queen
sideeffect stackpullbytes((number) 1)
to:main::@return
main::@return: scope:[main] from main::@4
[19] return
to:@return
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
printf_uint: scope:[printf_uint] from main::@3
[20] phi()
to:printf_uint::@1
printf_uint::@1: scope:[printf_uint] from printf_uint
[21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[22] call utoa
to:printf_uint::@2
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
[23] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[24] call printf_number_buffer
to:printf_uint::@return
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
[25] return
to:@return
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@2 printf_uint::@2 printf_ulong::@2
[26] (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_upper_case#0 printf_ulong::@2/(const byte) printf_ulong::format_upper_case#0 )
[26] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uchar::@2/(byte) printf_number_buffer::buffer_sign#2 printf_uint::@2/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@2/(byte) printf_number_buffer::buffer_sign#0 )
[26] (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_uchar::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uint::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_ulong::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[26] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_zero_padding#0 printf_ulong::@2/(const byte) printf_ulong::format_zero_padding#0 )
[26] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_justify_left#0 printf_ulong::@2/(const byte) printf_ulong::format_justify_left#0 )
[26] (byte) printf_number_buffer::format_min_length#3 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_min_length#0 printf_ulong::@2/(const byte) printf_ulong::format_min_length#0 )
[27] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1
to:printf_number_buffer::@6
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer
[28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
[29] call strlen
[30] (word) strlen::return#2 ← (word) strlen::len#2
to:printf_number_buffer::@14
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@6
[31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
[32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19
[33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13
to:printf_number_buffer::@7
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
[34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
to:printf_number_buffer::@13
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@14 printf_number_buffer::@7
[35] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@14/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 )
[36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2
[37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21
to:printf_number_buffer::@1
printf_number_buffer::@21: scope:[printf_number_buffer] from printf_number_buffer::@13
[38] phi()
to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@21
[39] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@21/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@13/(signed byte) 0 )
[40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
to:printf_number_buffer::@17
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@1
[41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
to:printf_number_buffer::@16
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@17
[42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8
to:printf_number_buffer::@2
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@16
[43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
[44] call printf_padding
to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 printf_number_buffer::@17 printf_number_buffer::@8
[45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
to:printf_number_buffer::@9
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2
[46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10
[47] call printf_char
to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@9
[48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
to:printf_number_buffer::@18
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@3
[49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
to:printf_number_buffer::@4
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@18
[50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
[51] call printf_padding
to:printf_number_buffer::@4
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@18 printf_number_buffer::@3
[52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5
to:printf_number_buffer::@11
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4
[53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10
[54] call strupr
to:printf_number_buffer::@5
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@11 printf_number_buffer::@4
[55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
[56] call printf_str
to:printf_number_buffer::@15
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@5
[57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
to:printf_number_buffer::@20
printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@15
[58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
to:printf_number_buffer::@19
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@20
[59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12
to:printf_number_buffer::@return
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19
[60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
[61] call printf_padding
to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@15 printf_number_buffer::@19 printf_number_buffer::@20
[62] return
to:@return
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8
[63] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' )
[63] (byte) printf_padding::length#4 ← phi( printf_number_buffer::@10/(byte) printf_padding::length#1 printf_number_buffer::@12/(byte) printf_padding::length#2 printf_number_buffer::@8/(byte) printf_padding::length#0 )
to:printf_padding::@1
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
[64] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
[65] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2
to:printf_padding::@return
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
[66] return
to:@return
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
[67] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5
[68] call printf_char
to:printf_padding::@3
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
[69] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
to:printf_padding::@1
(void()) printf_char((byte) printf_char::ch)
printf_char: scope:[printf_char] from printf_number_buffer::@9 printf_padding::@2 printf_str::@5
[70] (byte) printf_char::ch#3 ← phi( printf_number_buffer::@9/(byte) printf_char::ch#2 printf_padding::@2/(byte) printf_char::ch#0 printf_str::@5/(byte) printf_char::ch#1 )
[71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3
[72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr
[73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x
[74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return
to:printf_char::@1
printf_char::@1: scope:[printf_char] from printf_char
[75] (byte) printf_cursor_x ← (byte) 0
[76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y
[77] call printf_scroll
to:printf_char::@return
printf_char::@return: scope:[printf_char] from printf_char printf_char::@1
[78] return
to:@return
(void()) printf_scroll()
printf_scroll: scope:[printf_scroll] from printf_char::@1 printf_ln
[79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return
to:printf_scroll::@1
printf_scroll::@1: scope:[printf_scroll] from printf_scroll
[80] phi()
[81] call memcpy
to:printf_scroll::@2
printf_scroll::@2: scope:[printf_scroll] from printf_scroll::@1
[82] phi()
[83] call memset
to:printf_scroll::@3
printf_scroll::@3: scope:[printf_scroll] from printf_scroll::@2
[84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28
[85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4
[86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y
to:printf_scroll::@return
printf_scroll::@return: scope:[printf_scroll] from printf_scroll printf_scroll::@3
[87] return
to:@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from printf_cls printf_scroll::@2
[88] (byte) memset::c#4 ← phi( printf_cls/(byte) ' ' printf_scroll::@2/(byte) ' ' )
[88] (void*) memset::str#3 ← phi( printf_cls/(void*) 1024 printf_scroll::@2/(void*)(number) $400+(number) $28*(number) $19-(number) $28 )
[88] (word) memset::num#2 ← phi( printf_cls/(word)(number) $28*(number) $19 printf_scroll::@2/(byte) $28 )
[89] if((word) memset::num#2<=(byte) 0) goto memset::@return
to:memset::@1
memset::@1: scope:[memset] from memset
[90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
[91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[92] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset memset::@2
[94] return
to:@return
memset::@3: scope:[memset] from memset::@2
[95] *((byte*) memset::dst#2) ← (byte) memset::c#4
[96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
memcpy: scope:[memcpy] from printf_scroll::@1
[97] phi()
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
[98] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 )
[98] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 )
[99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@1
[100] return
to:@return
memcpy::@2: scope:[memcpy] from memcpy::@1
[101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
[102] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
[103] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
to:memcpy::@1
(void()) printf_str((byte*) printf_str::str)
printf_str: scope:[printf_str] from main::@1 main::@2 print print::@10 print::@12 print::@4 print::@8 printf_number_buffer::@5
[104] (byte*) printf_str::str#11 ← phi( main::@1/(const byte*) main::str main::@2/(const byte*) main::str1 print/(const byte*) print::str print::@10/(const byte*) print::str4 print::@12/(const byte*) print::str1 print::@4/(const byte*) print::str2 print::@8/(const byte*) print::str3 printf_number_buffer::@5/(byte*) printf_str::str#1 )
to:printf_str::@1
printf_str::@1: scope:[printf_str] from printf_str printf_str::@4 printf_str::@5
[105] (byte*) printf_str::str#10 ← phi( printf_str/(byte*) printf_str::str#11 printf_str::@4/(byte*) printf_str::str#0 printf_str::@5/(byte*) printf_str::str#0 )
to:printf_str::@2
printf_str::@2: scope:[printf_str] from printf_str::@1
[106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10)
[107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10
[108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3
to:printf_str::@return
printf_str::@return: scope:[printf_str] from printf_str::@2
[109] return
to:@return
printf_str::@3: scope:[printf_str] from printf_str::@2
[110] if((byte) printf_str::ch#0==(byte) '
') goto printf_str::@4
to:printf_str::@5
printf_str::@5: scope:[printf_str] from printf_str::@3
[111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0
[112] call printf_char
to:printf_str::@1
printf_str::@4: scope:[printf_str] from printf_str::@3
[113] phi()
[114] call printf_ln
to:printf_str::@1
(void()) printf_ln()
printf_ln: scope:[printf_ln] from printf_str::@4
[115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x
[116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28
[117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1
[118] (byte) printf_cursor_x ← (byte) 0
[119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y
[120] call printf_scroll
to:printf_ln::@return
printf_ln::@return: scope:[printf_ln] from printf_ln
[121] return
to:@return
(byte*()) strupr((byte*) strupr::str)
strupr: scope:[strupr] from printf_number_buffer::@11
[122] phi()
to:strupr::@1
strupr::@1: scope:[strupr] from strupr strupr::@3
[123] (byte*) strupr::src#2 ← phi( strupr/(byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 )
[124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2
to:strupr::@return
strupr::@return: scope:[strupr] from strupr::@1
[125] return
to:@return
strupr::@2: scope:[strupr] from strupr::@1
[126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2)
[127] call toupper
[128] (byte) toupper::return#3 ← (byte) toupper::return#2
to:strupr::@3
strupr::@3: scope:[strupr] from strupr::@2
[129] (byte~) strupr::$0 ← (byte) toupper::return#3
[130] *((byte*) strupr::src#2) ← (byte~) strupr::$0
[131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2
to:strupr::@1
(byte()) toupper((byte) toupper::ch)
toupper: scope:[toupper] from strupr::@2
[132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return
to:toupper::@2
toupper::@2: scope:[toupper] from toupper
[133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1
to:toupper::@return
toupper::@1: scope:[toupper] from toupper::@2
[134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a'
to:toupper::@return
toupper::@return: scope:[toupper] from toupper toupper::@1 toupper::@2
[135] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 )
[136] return
to:@return
(word()) strlen((byte*) strlen::str)
strlen: scope:[strlen] from printf_number_buffer::@6
[137] phi()
to:strlen::@1
strlen::@1: scope:[strlen] from strlen strlen::@2
[138] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
[138] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 )
[139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
to:strlen::@return
strlen::@return: scope:[strlen] from strlen::@1
[140] return
to:@return
strlen::@2: scope:[strlen] from strlen::@1
[141] (word) strlen::len#1 ← ++ (word) strlen::len#2
[142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
to:strlen::@1
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
utoa: scope:[utoa] from printf_uint::@1
[143] phi()
to:utoa::@1
utoa::@1: scope:[utoa] from utoa utoa::@4
[144] (byte*) utoa::buffer#11 ← phi( utoa::@4/(byte*) utoa::buffer#14 utoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[144] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 )
[144] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(const word) printf_uint::uvalue#0 )
[144] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 )
[145] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2
to:utoa::@3
utoa::@3: scope:[utoa] from utoa::@1
[146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2
[147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11)
[148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11
[149] *((byte*) utoa::buffer#3) ← (byte) 0
to:utoa::@return
utoa::@return: scope:[utoa] from utoa::@3
[150] return
to:@return
utoa::@2: scope:[utoa] from utoa::@1
[151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
[152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10)
[153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5
to:utoa::@7
utoa::@7: scope:[utoa] from utoa::@2
[154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5
to:utoa::@4
utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
[155] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 )
[155] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 )
[155] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 )
[156] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
to:utoa::@1
utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
[157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11
[158] (word) utoa_append::value#0 ← (word) utoa::value#2
[159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
[160] call utoa_append
[161] (word) utoa_append::return#0 ← (word) utoa_append::value#2
to:utoa::@6
utoa::@6: scope:[utoa] from utoa::@5
[162] (word) utoa::value#0 ← (word) utoa_append::return#0
[163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11
to:utoa::@4
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
utoa_append: scope:[utoa_append] from utoa::@5
[164] phi()
to:utoa_append::@1
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
[165] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
[165] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
[166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
to:utoa_append::@3
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
[167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
to:utoa_append::@return
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
[168] return
to:@return
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
[169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
[170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
to:utoa_append::@1
(void()) printf_cls()
printf_cls: scope:[printf_cls] from main
[171] phi()
[172] call memset
to:printf_cls::@1
printf_cls::@1: scope:[printf_cls] from printf_cls
[173] (byte*) printf_cursor_ptr ← (byte*) 1024
[174] (byte) printf_cursor_x ← (byte) 0
[175] (byte) printf_cursor_y ← (byte) 0
to:printf_cls::@return
printf_cls::@return: scope:[printf_cls] from printf_cls::@1
[176] return
to:@return
__stackcall (void()) queen((byte) queen::row)
queen: scope:[queen] from
[177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW)
[178] (byte) queen::r ← (byte) queen::row#0
[179] (byte) queen::column ← (byte) 1
to:queen::@1
queen::@1: scope:[queen] from queen queen::@3
[180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2
to:queen::@return
queen::@return: scope:[queen] from queen::@1
[181] return
to:@return
queen::@2: scope:[queen] from queen::@1
[182] (byte) legal::row#0 ← (byte) queen::r
[183] (byte) legal::column#0 ← (byte) queen::column
[184] call legal
[185] (byte) legal::return#0 ← (byte) legal::return#4
to:queen::@7
queen::@7: scope:[queen] from queen::@2
[186] (byte~) queen::$1 ← (byte) legal::return#0
[187] if((byte) 0==(byte~) queen::$1) goto queen::@3
to:queen::@5
queen::@5: scope:[queen] from queen::@7
[188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column
[189] if((byte) queen::r==(byte) 8) goto queen::@4
to:queen::@6
queen::@6: scope:[queen] from queen::@5
asm { ldacolumn pha ldar pha }
[191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1
[192] stackpush(byte) ← (byte~) queen::$4
[193] callexecute queen
sideeffect stackpullbytes((number) 1)
asm { pla star pla stacolumn }
to:queen::@3
queen::@3: scope:[queen] from queen::@4 queen::@6 queen::@7
[196] (byte) queen::column ← ++ (byte) queen::column
to:queen::@1
queen::@4: scope:[queen] from queen::@5
[197] phi()
[198] call print
to:queen::@3
(void()) print()
print: scope:[print] from queen::@4
[199] (dword) count ← ++ (dword) count
[200] call printf_str
to:print::@11
print::@11: scope:[print] from print
[201] (dword) printf_ulong::uvalue#0 ← (dword) count
[202] call printf_ulong
to:print::@12
print::@12: scope:[print] from print::@11
[203] phi()
[204] call printf_str
to:print::@1
print::@1: scope:[print] from print::@12 print::@13
[205] (byte) print::i#2 ← phi( print::@12/(byte) 1 print::@13/(byte) print::i#1 )
[206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2
to:print::@3
print::@3: scope:[print] from print::@1 print::@7
[207] (byte) print::i1#2 ← phi( print::@1/(byte) 1 print::@7/(byte) print::i1#1 )
[208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4
to:print::@return
print::@return: scope:[print] from print::@3
[209] return
to:@return
print::@4: scope:[print] from print::@3
[210] phi()
[211] call printf_str
to:print::@14
print::@14: scope:[print] from print::@4
[212] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2
[213] call printf_uchar
to:print::@5
print::@5: scope:[print] from print::@14 print::@9
[214] (byte) print::j#2 ← phi( print::@9/(byte) print::j#1 print::@14/(byte) 1 )
[215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6
to:print::@7
print::@7: scope:[print] from print::@5
[216] (byte) print::i1#1 ← ++ (byte) print::i1#2
to:print::@3
print::@6: scope:[print] from print::@5
[217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8
to:print::@10
print::@10: scope:[print] from print::@6
[218] phi()
[219] call printf_str
to:print::@9
print::@9: scope:[print] from print::@10 print::@8
[220] (byte) print::j#1 ← ++ (byte) print::j#2
to:print::@5
print::@8: scope:[print] from print::@6
[221] phi()
[222] call printf_str
to:print::@9
print::@2: scope:[print] from print::@1
[223] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2
[224] call printf_uchar
to:print::@13
print::@13: scope:[print] from print::@2
[225] (byte) print::i#1 ← ++ (byte) print::i#2
to:print::@1
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_upper_case , (byte) printf_uchar::format_radix)
printf_uchar: scope:[printf_uchar] from print::@14 print::@2
[226] (byte) printf_uchar::uvalue#2 ← phi( print::@14/(byte) printf_uchar::uvalue#1 print::@2/(byte) printf_uchar::uvalue#0 )
to:printf_uchar::@1
printf_uchar::@1: scope:[printf_uchar] from printf_uchar
[227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2
[229] call uctoa
to:printf_uchar::@2
printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1
[230] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[231] call printf_number_buffer
to:printf_uchar::@return
printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2
[232] return
to:@return
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
uctoa: scope:[uctoa] from printf_uchar::@1
[233] phi()
to:uctoa::@1
uctoa::@1: scope:[uctoa] from uctoa uctoa::@4
[234] (byte*) uctoa::buffer#11 ← phi( uctoa::@4/(byte*) uctoa::buffer#14 uctoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[234] (byte) uctoa::started#2 ← phi( uctoa::@4/(byte) uctoa::started#4 uctoa/(byte) 0 )
[234] (byte) uctoa::value#2 ← phi( uctoa::@4/(byte) uctoa::value#6 uctoa/(byte) uctoa::value#1 )
[234] (byte) uctoa::digit#2 ← phi( uctoa::@4/(byte) uctoa::digit#1 uctoa/(byte) 0 )
[235] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2
to:uctoa::@3
uctoa::@3: scope:[uctoa] from uctoa::@1
[236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2)
[237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11
[238] *((byte*) uctoa::buffer#3) ← (byte) 0
to:uctoa::@return
uctoa::@return: scope:[uctoa] from uctoa::@3
[239] return
to:@return
uctoa::@2: scope:[uctoa] from uctoa::@1
[240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2)
[241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5
to:uctoa::@7
uctoa::@7: scope:[uctoa] from uctoa::@2
[242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5
to:uctoa::@4
uctoa::@4: scope:[uctoa] from uctoa::@6 uctoa::@7
[243] (byte*) uctoa::buffer#14 ← phi( uctoa::@7/(byte*) uctoa::buffer#11 uctoa::@6/(byte*) uctoa::buffer#4 )
[243] (byte) uctoa::started#4 ← phi( uctoa::@7/(byte) uctoa::started#2 uctoa::@6/(byte) 1 )
[243] (byte) uctoa::value#6 ← phi( uctoa::@7/(byte) uctoa::value#2 uctoa::@6/(byte) uctoa::value#0 )
[244] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2
to:uctoa::@1
uctoa::@5: scope:[uctoa] from uctoa::@2 uctoa::@7
[245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11
[246] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2
[247] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0
[248] call uctoa_append
[249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2
to:uctoa::@6
uctoa::@6: scope:[uctoa] from uctoa::@5
[250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0
[251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11
to:uctoa::@4
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
uctoa_append: scope:[uctoa_append] from uctoa::@5
[252] phi()
to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2
[253] (byte) uctoa_append::digit#2 ← phi( uctoa_append/(byte) 0 uctoa_append::@2/(byte) uctoa_append::digit#1 )
[253] (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#0 uctoa_append::@2/(byte) uctoa_append::value#1 )
[254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2
to:uctoa_append::@3
uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1
[255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2)
to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3
[256] return
to:@return
uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1
[257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2
[258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0
to:uctoa_append::@1
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
printf_ulong: scope:[printf_ulong] from print::@11
[259] phi()
to:printf_ulong::@1
printf_ulong::@1: scope:[printf_ulong] from printf_ulong
[260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0
[262] call ultoa
to:printf_ulong::@2
printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1
[263] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[264] call printf_number_buffer
to:printf_ulong::@return
printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2
[265] return
to:@return
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
ultoa: scope:[ultoa] from printf_ulong::@1
[266] phi()
to:ultoa::@1
ultoa::@1: scope:[ultoa] from ultoa ultoa::@4
[267] (byte*) ultoa::buffer#11 ← phi( ultoa::@4/(byte*) ultoa::buffer#14 ultoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[267] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 )
[267] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 )
[267] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 )
[268] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2
to:ultoa::@3
ultoa::@3: scope:[ultoa] from ultoa::@1
[269] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2
[270] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11)
[271] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11
[272] *((byte*) ultoa::buffer#3) ← (byte) 0
to:ultoa::@return
ultoa::@return: scope:[ultoa] from ultoa::@3
[273] return
to:@return
ultoa::@2: scope:[ultoa] from ultoa::@1
[274] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2
[275] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10)
[276] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5
to:ultoa::@7
ultoa::@7: scope:[ultoa] from ultoa::@2
[277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5
to:ultoa::@4
ultoa::@4: scope:[ultoa] from ultoa::@6 ultoa::@7
[278] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 )
[278] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 )
[278] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 )
[279] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2
to:ultoa::@1
ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7
[280] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11
[281] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2
[282] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0
[283] call ultoa_append
[284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2
to:ultoa::@6
ultoa::@6: scope:[ultoa] from ultoa::@5
[285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0
[286] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11
to:ultoa::@4
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
ultoa_append: scope:[ultoa_append] from ultoa::@5
[287] phi()
to:ultoa_append::@1
ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2
[288] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 )
[288] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 )
[289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2
to:ultoa_append::@3
ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1
[290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2)
to:ultoa_append::@return
ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3
[291] return
to:@return
ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1
[292] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2
[293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0
to:ultoa_append::@1
(byte()) legal((byte) legal::row , (byte) legal::column)
legal: scope:[legal] from queen::@2
[294] phi()
to:legal::@1
legal::@1: scope:[legal] from legal legal::@3
[295] (byte) legal::i#2 ← phi( legal/(byte) 1 legal::@3/(byte) legal::i#1 )
[296] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1
[297] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2
to:legal::@return
legal::@return: scope:[legal] from legal::@1 legal::@2 legal::@6
[298] (byte) legal::return#4 ← phi( legal::@1/(byte) 1 legal::@2/(byte) 0 legal::@6/(byte) 0 )
[299] return
to:@return
legal::@2: scope:[legal] from legal::@1
[300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return
to:legal::@4
legal::@4: scope:[legal] from legal::@2
[301] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2)
[302] (byte) diff::b#0 ← (byte) legal::column#0
[303] call diff
[304] (byte) diff::return#0 ← (byte) diff::return#4
to:legal::@5
legal::@5: scope:[legal] from legal::@4
[305] (byte~) legal::$3 ← (byte) diff::return#0
[306] (byte) diff::a#1 ← (byte) legal::i#2
[307] (byte) diff::b#1 ← (byte) legal::row#0
[308] call diff
[309] (byte) diff::return#1 ← (byte) diff::return#4
to:legal::@6
legal::@6: scope:[legal] from legal::@5
[310] (byte~) legal::$4 ← (byte) diff::return#1
[311] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3
to:legal::@return
legal::@3: scope:[legal] from legal::@6
[312] (byte) legal::i#1 ← ++ (byte) legal::i#2
to:legal::@1
(byte()) diff((byte) diff::a , (byte) diff::b)
diff: scope:[diff] from legal::@4 legal::@5
[313] (byte) diff::b#2 ← phi( legal::@4/(byte) diff::b#0 legal::@5/(byte) diff::b#1 )
[313] (byte) diff::a#2 ← phi( legal::@4/(byte) diff::a#0 legal::@5/(byte) diff::a#1 )
[314] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1
to:diff::@2
diff::@2: scope:[diff] from diff
[315] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2
to:diff::@return
diff::@return: scope:[diff] from diff::@1 diff::@2
[316] (byte) diff::return#4 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 )
[317] return
to:@return
diff::@1: scope:[diff] from diff
[318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2
to:diff::@return

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,522 @@
(label) @1
(label) @2
(label) @3
(label) @begin
(label) @end
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte*) RADIX_HEXADECIMAL_VALUES_CHAR[] = { (byte) $10 }
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
(const word) STACK_BASE = (word) $103
(const byte*) board[(number) $14] = { fill( $14, 0) }
(dword) count loadstore zp[4]:20 0.5833333333333333
(byte()) diff((byte) diff::a , (byte) diff::b)
(label) diff::@1
(label) diff::@2
(label) diff::@return
(byte) diff::a
(byte) diff::a#0 a zp[1]:29 1.000000000001E12
(byte) diff::a#1 a zp[1]:29 1.000000000001E12
(byte) diff::a#2 a zp[1]:29 1.60000000000025E13
(byte) diff::b
(byte) diff::b#0 b zp[1]:24 2.000000000002E12
(byte) diff::b#1 b zp[1]:24 2.000000000002E12
(byte) diff::b#2 b zp[1]:24 1.60000000000025E13
(byte) diff::return
(byte) diff::return#0 return zp[1]:35 2.000000000002E12
(byte) diff::return#1 return_1 zp[1]:29 2.000000000002E12
(byte) diff::return#2 return_1 zp[1]:29 2.0000000000002E13
(byte) diff::return#3 return_1 zp[1]:29 2.0000000000002E13
(byte) diff::return#4 return_1 zp[1]:29 5.500000000001E12
(byte()) legal((byte) legal::row , (byte) legal::column)
(byte~) legal::$0 zp[1]:34 2.000000000002E12
(byte~) legal::$3 zp[1]:35 3.333333333336667E11
(byte~) legal::$4 zp[1]:29 2.000000000002E12
(label) legal::@1
(label) legal::@2
(label) legal::@3
(label) legal::@4
(label) legal::@5
(label) legal::@6
(label) legal::@return
(byte) legal::column
(byte) legal::column#0 column zp[1]:28 1.1666666666683334E11
(byte) legal::i
(byte) legal::i#1 i zp[1]:14 2.000000000002E12
(byte) legal::i#2 i zp[1]:14 4.0000000000039996E11
(byte) legal::return
(byte) legal::return#0 return zp[1]:15 2.00000000002E11
(byte) legal::return#4 return zp[1]:15 3.3333333333666668E10
(byte) legal::row
(byte) legal::row#0 row zp[1]:27 1.1052631578963158E11
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@return
(const byte*) main::str[(byte) $29] = (byte*) " - n queens problem using backtracking -"
(const byte*) main::str1[(byte) $13] = (byte*) "
Number of queens:"
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
(label) memcpy::@1
(label) memcpy::@2
(label) memcpy::@return
(void*) memcpy::destination
(const void*) memcpy::destination#0 destination = (void*) 1024
(byte*) memcpy::dst
(byte*) memcpy::dst#1 dst zp[2]:2 1.0E43
(byte*) memcpy::dst#2 dst zp[2]:2 1.0E43
(word) memcpy::num
(const word) memcpy::num#0 num = (word)(number) $28*(number) $19-(number) $28
(void*) memcpy::return
(void*) memcpy::source
(const void*) memcpy::source#0 source = (void*)(number) $400+(number) $28
(byte*) memcpy::src
(byte*) memcpy::src#1 src zp[2]:25 2.0E43
(byte*) memcpy::src#2 src zp[2]:25 1.0E43
(byte*) memcpy::src_end
(const byte*) memcpy::src_end#0 src_end = (byte*)(const void*) memcpy::source#0+(const word) memcpy::num#0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#4 c zp[1]:7 1.25E42
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:2 2.0E43
(byte*) memset::dst#2 dst zp[2]:2 1.3333333333333668E43
(byte*) memset::dst#4 dst zp[2]:2 2.0E30
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:25 1.6666666666668335E42
(word) memset::num
(word) memset::num#2 num zp[2]:25 1.0E30
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:2
(void()) print()
(label) print::@1
(label) print::@10
(label) print::@11
(label) print::@12
(label) print::@13
(label) print::@14
(label) print::@2
(label) print::@3
(label) print::@4
(label) print::@5
(label) print::@6
(label) print::@7
(label) print::@8
(label) print::@9
(label) print::@return
(byte) print::i
(byte) print::i#1 i zp[1]:14 2.000000000002E12
(byte) print::i#2 i zp[1]:14 1.000000000001E12
(byte) print::i1
(byte) print::i1#1 i1 zp[1]:14 2.000000000002E12
(byte) print::i1#2 i1 zp[1]:14 1.0000000000003572E12
(byte) print::j
(byte) print::j#1 j zp[1]:35 2.0000000000002E13
(byte) print::j#2 j zp[1]:35 5.714285714286286E12
(const byte*) print::str[(byte) 3] = (byte*) "
#"
(const byte*) print::str1[(byte) 4] = (byte*) ":
"
(const byte*) print::str2[(byte) 2] = (byte*) "
"
(const byte*) print::str3[(byte) 2] = (byte*) "Q"
(const byte*) print::str4[(byte) 2] = (byte*) "-"
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
(byte) printf_buffer_number::sign
(void()) printf_char((byte) printf_char::ch)
(label) printf_char::@1
(label) printf_char::@return
(byte) printf_char::ch
(byte) printf_char::ch#0 ch zp[1]:5 2.0E27
(byte) printf_char::ch#1 ch zp[1]:5 2.0E26
(byte) printf_char::ch#2 ch zp[1]:5 2.00000000000002E14
(byte) printf_char::ch#3 ch zp[1]:5 1.11000000000001E28
(void()) printf_cls()
(label) printf_cls::@1
(label) printf_cls::@return
(byte*) printf_cursor_ptr loadstore zp[2]:18 1.4683544303797465E27
(byte) printf_cursor_x loadstore zp[1]:16 2.837837837837838E26
(byte) printf_cursor_y loadstore zp[1]:17 2.0251572327044023E27
(byte) printf_format_number::justify_left
(byte) printf_format_number::min_length
(byte) printf_format_number::radix
(byte) printf_format_number::sign_always
(byte) printf_format_number::upper_case
(byte) printf_format_number::zero_padding
(byte) printf_format_string::justify_left
(byte) printf_format_string::min_length
(void()) printf_ln()
(byte*~) printf_ln::$0 zp[2]:18 2.0E27
(byte*~) printf_ln::$1 zp[2]:18 2.0E27
(label) printf_ln::@return
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
(word~) printf_number_buffer::$19 zp[2]:2 1.00000000000001E14
(label) printf_number_buffer::@1
(label) printf_number_buffer::@10
(label) printf_number_buffer::@11
(label) printf_number_buffer::@12
(label) printf_number_buffer::@13
(label) printf_number_buffer::@14
(label) printf_number_buffer::@15
(label) printf_number_buffer::@16
(label) printf_number_buffer::@17
(label) printf_number_buffer::@18
(label) printf_number_buffer::@19
(label) printf_number_buffer::@2
(label) printf_number_buffer::@20
(label) printf_number_buffer::@21
(label) printf_number_buffer::@3
(label) printf_number_buffer::@4
(label) printf_number_buffer::@5
(label) printf_number_buffer::@6
(label) printf_number_buffer::@7
(label) printf_number_buffer::@8
(label) printf_number_buffer::@9
(label) printf_number_buffer::@return
(struct printf_buffer_number) printf_number_buffer::buffer
(byte*) printf_number_buffer::buffer_digits
(byte*) printf_number_buffer::buffer_digits#10 buffer_digits zp[2]:12 1.0344827586207E13
(byte) printf_number_buffer::buffer_sign
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:35 202.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:35 202.0
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:35 1.55000000000103E13
(byte) printf_number_buffer::buffer_sign#2 buffer_sign zp[1]:35 2.0000000000002E13
(struct printf_format_number) printf_number_buffer::format
(byte) printf_number_buffer::format_justify_left
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:29 6.451612903225871E12
(byte) printf_number_buffer::format_min_length
(byte) printf_number_buffer::format_min_length#3 format_min_length zp[1]:15 1.00000000000001E13
(byte) printf_number_buffer::format_radix
(byte) printf_number_buffer::format_sign_always
(byte) printf_number_buffer::format_upper_case
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:34 3.846153846153885E12
(byte) printf_number_buffer::format_zero_padding
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:24 9.375000000000094E12
(signed byte) printf_number_buffer::len
(signed byte) printf_number_buffer::len#0 len zp[1]:4 1.500000000000015E14
(signed byte) printf_number_buffer::len#1 len zp[1]:4 2.00000000000002E14
(signed byte) printf_number_buffer::len#2 len zp[1]:4 3.00000000000003E14
(signed byte) printf_number_buffer::padding
(signed byte) printf_number_buffer::padding#1 padding zp[1]:15 1.00000000000001E14
(signed byte) printf_number_buffer::padding#10 padding zp[1]:15 1.904761904761924E13
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
(label) printf_padding::@1
(label) printf_padding::@2
(label) printf_padding::@3
(label) printf_padding::@return
(byte) printf_padding::i
(byte) printf_padding::i#1 i zp[1]:6 2.0E27
(byte) printf_padding::i#2 i zp[1]:6 7.500000000000001E26
(byte) printf_padding::length
(byte) printf_padding::length#0 length zp[1]:4 2.00000000000002E14
(byte) printf_padding::length#1 length zp[1]:4 2.00000000000002E14
(byte) printf_padding::length#2 length zp[1]:4 2.00000000000002E14
(byte) printf_padding::length#4 length zp[1]:4 1.6666666666671665E26
(byte) printf_padding::pad
(byte) printf_padding::pad#5 pad zp[1]:5 1.6666666666666666E26
(void()) printf_scroll()
(byte*~) printf_scroll::$4 zp[2]:18 2.0E29
(label) printf_scroll::@1
(label) printf_scroll::@2
(label) printf_scroll::@3
(label) printf_scroll::@return
(void()) printf_str((byte*) printf_str::str)
(label) printf_str::@1
(label) printf_str::@2
(label) printf_str::@3
(label) printf_str::@4
(label) printf_str::@5
(label) printf_str::@return
(byte) printf_str::ch
(byte) printf_str::ch#0 ch zp[1]:5 1.0E26
(byte*) printf_str::str
(byte*) printf_str::str#0 str zp[2]:12 4.285714285714285E25
(byte*) printf_str::str#1 str zp[2]:12 2.00000000000002E14
(byte*) printf_str::str#10 str zp[2]:12 2.000000000005E26
(byte*) printf_str::str#11 str zp[2]:12 1.100000000000002E15
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_upper_case , (byte) printf_uchar::format_radix)
(label) printf_uchar::@1
(label) printf_uchar::@2
(label) printf_uchar::@return
(struct printf_format_number) printf_uchar::format
(byte) printf_uchar::format_justify_left
(byte) printf_uchar::format_min_length
(byte) printf_uchar::format_radix
(byte) printf_uchar::format_sign_always
(byte) printf_uchar::format_upper_case
(byte) printf_uchar::format_zero_padding
(byte) printf_uchar::uvalue
(byte) printf_uchar::uvalue#0 uvalue zp[1]:14 2.000000000002E12
(byte) printf_uchar::uvalue#1 uvalue zp[1]:14 2.000000000002E12
(byte) printf_uchar::uvalue#2 uvalue zp[1]:14 6.0000000000015E12
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
(label) printf_uint::@1
(label) printf_uint::@2
(label) printf_uint::@return
(struct printf_format_number) printf_uint::format
(byte) printf_uint::format_justify_left
(const byte) printf_uint::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_uint::format_min_length
(const byte) printf_uint::format_min_length#0 format_min_length = (byte) 0
(byte) printf_uint::format_radix
(byte) printf_uint::format_sign_always
(byte) printf_uint::format_upper_case
(const byte) printf_uint::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_uint::format_zero_padding
(const byte) printf_uint::format_zero_padding#0 format_zero_padding = (byte) 0
(word) printf_uint::uvalue
(const word) printf_uint::uvalue#0 uvalue = (byte) 8
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
(label) printf_ulong::@1
(label) printf_ulong::@2
(label) printf_ulong::@return
(struct printf_format_number) printf_ulong::format
(byte) printf_ulong::format_justify_left
(const byte) printf_ulong::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_ulong::format_min_length
(const byte) printf_ulong::format_min_length#0 format_min_length = (byte) 0
(byte) printf_ulong::format_radix
(byte) printf_ulong::format_sign_always
(byte) printf_ulong::format_upper_case
(const byte) printf_ulong::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_ulong::format_zero_padding
(const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0
(dword) printf_ulong::uvalue
(dword) printf_ulong::uvalue#0 uvalue zp[4]:8 37.33333333333333
__stackcall (void()) queen((byte) queen::row)
(byte~) queen::$1 zp[1]:15 2.00000000002E11
(byte~) queen::$4 zp[1]:27 2.00000000002E11
(label) queen::@1
(label) queen::@2
(label) queen::@3
(label) queen::@4
(label) queen::@5
(label) queen::@6
(label) queen::@7
(label) queen::@return
(const byte) queen::OFFSET_STACK_ROW = (byte) 0
(byte) queen::column loadstore zp[1]:28 2.9411764706823532E10
(byte) queen::r loadstore zp[1]:27 2.1052631579736843E10
(byte) queen::row
(byte) queen::row#0 row zp[1]:27 22.0
(word()) strlen((byte*) strlen::str)
(label) strlen::@1
(label) strlen::@2
(label) strlen::@return
(word) strlen::len
(word) strlen::len#1 len zp[2]:2 1.0E27
(word) strlen::len#2 len zp[2]:2 5.00000000000025E26
(word) strlen::return
(word) strlen::return#2 return zp[2]:2 2.00000000000002E14
(byte*) strlen::str
(byte*) strlen::str#0 str zp[2]:25 2.0E27
(byte*) strlen::str#1 str zp[2]:25 5.50000000000001E14
(byte*) strlen::str#2 str zp[2]:25 1.0000000000003332E27
(byte*()) strupr((byte*) strupr::str)
(byte~) strupr::$0 zp[1]:4 2.0E27
(label) strupr::@1
(label) strupr::@2
(label) strupr::@3
(label) strupr::@return
(byte*) strupr::return
(byte*) strupr::src
(byte*) strupr::src#1 src zp[2]:25 2.0E27
(byte*) strupr::src#2 src zp[2]:25 7.142857142858572E26
(byte*) strupr::str
(byte*) strupr::str#0 str zp[2]:25 5.50000000000001E14
(byte()) toupper((byte) toupper::ch)
(label) toupper::@1
(label) toupper::@2
(label) toupper::@return
(byte) toupper::ch
(byte) toupper::ch#0 ch zp[1]:4 1.6999999999999998E28
(byte) toupper::return
(byte) toupper::return#0 return zp[1]:4 2.0E28
(byte) toupper::return#2 return zp[1]:4 1.0333333333333333E28
(byte) toupper::return#3 return zp[1]:4 2.0E27
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
(label) uctoa::@1
(label) uctoa::@2
(label) uctoa::@3
(label) uctoa::@4
(label) uctoa::@5
(label) uctoa::@6
(label) uctoa::@7
(label) uctoa::@return
(byte*) uctoa::buffer
(byte*) uctoa::buffer#11 buffer zp[2]:12 3.3333333333350004E25
(byte*) uctoa::buffer#14 buffer zp[2]:12 1.5000000000000002E26
(byte*) uctoa::buffer#3 buffer zp[2]:12 2.00000000000002E14
(byte*) uctoa::buffer#4 buffer zp[2]:12 2.0E26
(byte) uctoa::digit
(byte) uctoa::digit#1 digit zp[1]:34 2.0E26
(byte) uctoa::digit#2 digit zp[1]:34 3.076923076923077E25
(byte) uctoa::digit_value
(byte) uctoa::digit_value#0 digit_value zp[1]:29 6.000000000000001E25
(byte*) uctoa::digit_values
(byte) uctoa::max_digits
(byte) uctoa::radix
(byte) uctoa::started
(byte) uctoa::started#2 started zp[1]:5 6.000000000000001E25
(byte) uctoa::started#4 started zp[1]:5 1.0E26
(byte) uctoa::value
(byte) uctoa::value#0 value zp[1]:4 1.0E26
(byte) uctoa::value#1 value zp[1]:4 5.5000000000001E13
(byte) uctoa::value#2 value zp[1]:4 6.666666666670001E25
(byte) uctoa::value#6 value zp[1]:4 1.5000000000000002E26
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
(label) uctoa_append::@1
(label) uctoa_append::@2
(label) uctoa_append::@3
(label) uctoa_append::@return
(byte*) uctoa_append::buffer
(byte*) uctoa_append::buffer#0 buffer zp[2]:12 1.3750000000000001E26
(byte) uctoa_append::digit
(byte) uctoa_append::digit#1 digit zp[1]:6 1.0E40
(byte) uctoa_append::digit#2 digit zp[1]:6 1.00000000000005E40
(byte) uctoa_append::return
(byte) uctoa_append::return#0 return zp[1]:4 2.0E26
(byte) uctoa_append::sub
(byte) uctoa_append::sub#0 sub zp[1]:29 3.33333333333335E39
(byte) uctoa_append::value
(byte) uctoa_append::value#0 value zp[1]:4 3.666666666666667E26
(byte) uctoa_append::value#1 value zp[1]:4 2.0E40
(byte) uctoa_append::value#2 value zp[1]:4 5.0000000000001833E39
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
(byte~) ultoa::$10 zp[1]:34 2.00000000000002E14
(byte~) ultoa::$11 zp[1]:29 2002.0
(label) ultoa::@1
(label) ultoa::@2
(label) ultoa::@3
(label) ultoa::@4
(label) ultoa::@5
(label) ultoa::@6
(label) ultoa::@7
(label) ultoa::@return
(byte*) ultoa::buffer
(byte*) ultoa::buffer#11 buffer zp[2]:12 2.8571428571571855E13
(byte*) ultoa::buffer#14 buffer zp[2]:12 1.500000000000015E14
(byte*) ultoa::buffer#3 buffer zp[2]:12 2002.0
(byte*) ultoa::buffer#4 buffer zp[2]:12 2.00000000000002E14
(byte) ultoa::digit
(byte) ultoa::digit#1 digit zp[1]:7 2.00000000000002E14
(byte) ultoa::digit#2 digit zp[1]:7 2.8571428571428855E13
(dword) ultoa::digit_value
(dword) ultoa::digit_value#0 digit_value zp[4]:30 6.000000000000059E13
(dword*) ultoa::digit_values
(byte) ultoa::max_digits
(const byte) ultoa::max_digits#1 max_digits = (byte) $a
(byte) ultoa::radix
(byte) ultoa::started
(byte) ultoa::started#2 started zp[1]:15 5.00000000000005E13
(byte) ultoa::started#4 started zp[1]:15 1.00000000000001E14
(dword) ultoa::value
(dword) ultoa::value#0 value zp[4]:8 1.00000000000001E14
(dword) ultoa::value#1 value zp[4]:8 551.0
(dword) ultoa::value#2 value zp[4]:8 5.714285714300071E13
(dword) ultoa::value#6 value zp[4]:8 1.500000000000015E14
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
(label) ultoa_append::@1
(label) ultoa_append::@2
(label) ultoa_append::@3
(label) ultoa_append::@return
(byte*) ultoa_append::buffer
(byte*) ultoa_append::buffer#0 buffer zp[2]:12 1.3750000000000025E14
(byte) ultoa_append::digit
(byte) ultoa_append::digit#1 digit zp[1]:29 1.0E27
(byte) ultoa_append::digit#2 digit zp[1]:29 1.0000000000005E27
(dword) ultoa_append::return
(dword) ultoa_append::return#0 return zp[4]:8 2.00000000000002E14
(dword) ultoa_append::sub
(dword) ultoa_append::sub#0 sub zp[4]:30 3.3333333333335E26
(dword) ultoa_append::value
(dword) ultoa_append::value#0 value zp[4]:8 3.666666666666674E14
(dword) ultoa_append::value#1 value zp[4]:8 2.0E27
(dword) ultoa_append::value#2 value zp[4]:8 5.0000000000018335E26
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
(byte~) utoa::$10 zp[1]:27 20002.0
(byte~) utoa::$11 zp[1]:24 2002.0
(label) utoa::@1
(label) utoa::@2
(label) utoa::@3
(label) utoa::@4
(label) utoa::@5
(label) utoa::@6
(label) utoa::@7
(label) utoa::@return
(byte*) utoa::buffer
(byte*) utoa::buffer#11 buffer zp[2]:2 3000.4285714285716
(byte*) utoa::buffer#14 buffer zp[2]:2 15001.5
(byte*) utoa::buffer#3 buffer zp[2]:2 2002.0
(byte*) utoa::buffer#4 buffer zp[2]:2 20002.0
(byte) utoa::digit
(byte) utoa::digit#1 digit zp[1]:15 20002.0
(byte) utoa::digit#2 digit zp[1]:15 2857.4285714285716
(word) utoa::digit_value
(word) utoa::digit_value#0 digit_value zp[2]:25 6000.6
(word*) utoa::digit_values
(byte) utoa::max_digits
(const byte) utoa::max_digits#1 max_digits = (byte) 5
(byte) utoa::radix
(byte) utoa::started
(byte) utoa::started#2 started zp[1]:29 5000.5
(byte) utoa::started#4 started zp[1]:29 10001.0
(word) utoa::value
(word) utoa::value#0 value zp[2]:12 10001.0
(word) utoa::value#2 value zp[2]:12 5714.857142857143
(word) utoa::value#6 value zp[2]:12 15001.5
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
(label) utoa_append::@1
(label) utoa_append::@2
(label) utoa_append::@3
(label) utoa_append::@return
(byte*) utoa_append::buffer
(byte*) utoa_append::buffer#0 buffer zp[2]:2 13750.25
(byte) utoa_append::digit
(byte) utoa_append::digit#1 digit zp[1]:24 1.0000001E7
(byte) utoa_append::digit#2 digit zp[1]:24 1.00500015E7
(word) utoa_append::return
(word) utoa_append::return#0 return zp[2]:12 20002.0
(word) utoa_append::sub
(word) utoa_append::sub#0 sub zp[2]:25 3335000.5
(word) utoa_append::value
(word) utoa_append::value#0 value zp[2]:12 36667.33333333333
(word) utoa_append::value#1 value zp[2]:12 2.0000002E7
(word) utoa_append::value#2 value zp[2]:12 5018334.166666666
zp[2]:2 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
zp[1]:4 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 uctoa_append::return#0 printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 strupr::$0 printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
zp[1]:5 [ uctoa::started#2 uctoa::started#4 printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 printf_str::ch#0 ]
zp[1]:6 [ uctoa_append::digit#2 uctoa_append::digit#1 printf_padding::i#2 printf_padding::i#1 ]
zp[1]:7 [ ultoa::digit#2 ultoa::digit#1 memset::c#4 ]
zp[4]:8 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 printf_ulong::uvalue#0 ultoa_append::return#0 ]
zp[2]:12 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ]
zp[1]:14 [ legal::i#2 legal::i#1 print::i#2 print::i#1 printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 print::i1#2 print::i1#1 ]
zp[1]:15 [ legal::return#4 legal::return#0 queen::$1 ultoa::started#2 ultoa::started#4 utoa::digit#2 utoa::digit#1 printf_number_buffer::format_min_length#3 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
zp[1]:16 [ printf_cursor_x ]
zp[1]:17 [ printf_cursor_y ]
zp[2]:18 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ]
zp[4]:20 [ count ]
zp[1]:24 [ utoa::$11 diff::b#2 diff::b#0 diff::b#1 utoa_append::digit#2 utoa_append::digit#1 printf_number_buffer::format_zero_padding#10 ]
zp[2]:25 [ utoa::digit_value#0 utoa_append::sub#0 strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ]
zp[1]:27 [ queen::row#0 queen::r legal::row#0 queen::$4 utoa::$10 ]
zp[1]:28 [ queen::column legal::column#0 ]
zp[1]:29 [ ultoa::$11 uctoa::digit_value#0 uctoa_append::sub#0 diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 diff::return#1 legal::$4 ultoa_append::digit#2 ultoa_append::digit#1 utoa::started#2 utoa::started#4 printf_number_buffer::format_justify_left#10 ]
zp[4]:30 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
zp[1]:34 [ legal::$0 ultoa::$10 uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_upper_case#10 ]
zp[1]:35 [ diff::return#0 legal::$3 print::j#2 print::j#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
mem[12] [ printf_buffer ]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,5 @@
(label) @1
(label) @2
(label) @3
(label) @begin
(label) @end
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
@ -10,39 +9,61 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(const byte*) RADIX_DECIMAL_VALUES_CHAR[] = { (byte) $64, (byte) $a }
(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte*) RADIX_HEXADECIMAL_VALUES_CHAR[] = { (byte) $10 }
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
(const word) STACK_BASE = (word) $103
(const byte*) board[(number) $14] = { fill( $14, 0) }
(byte) count loadstore zp[1]:16 0.5833333333333333
(dword) count
(dword) count#11 count zp[4]:2 1133.8666666666668
(dword) count#13 count zp[4]:2 750.1071428571429
(byte()) diff((byte) diff::a , (byte) diff::b)
(label) diff::@1
(label) diff::@2
(label) diff::@return
(byte) diff::a
(byte) diff::a#0 a zp[1]:17 1.000000000001E12
(byte) diff::a#1 a zp[1]:17 1.000000000001E12
(byte) diff::a#2 a zp[1]:17 1.60000000000025E13
(byte) diff::a#0 reg byte a 1000001.0
(byte) diff::a#1 reg byte a 1000001.0
(byte) diff::a#2 reg byte a 1.60000025E7
(byte) diff::b
(byte) diff::b#0 b zp[1]:18 2.000000000002E12
(byte) diff::b#1 b zp[1]:18 2.000000000002E12
(byte) diff::b#2 b zp[1]:18 1.60000000000025E13
(byte) diff::b#0 reg byte x 2000002.0
(byte) diff::b#1 reg byte x 2000002.0
(byte) diff::b#2 reg byte x 1.60000025E7
(byte) diff::return
(byte) diff::return#0 return zp[1]:24 2.000000000002E12
(byte) diff::return#1 return_1 zp[1]:17 2.000000000002E12
(byte) diff::return#2 return_1 zp[1]:17 2.0000000000002E13
(byte) diff::return#3 return_1 zp[1]:17 2.0000000000002E13
(byte) diff::return#4 return_1 zp[1]:17 5.500000000001E12
(byte) diff::return#0 reg byte a 2000002.0
(byte) diff::return#1 reg byte a 2000002.0
(byte) diff::return#2 reg byte a 2.0000002E7
(byte) diff::return#3 reg byte a 2.0000002E7
(byte) diff::return#4 reg byte a 5500001.0
(byte()) legal((byte) legal::row , (byte) legal::column)
(byte~) legal::$0 reg byte x 2000002.0
(byte~) legal::$3 zp[1]:33 333333.6666666667
(byte~) legal::$4 reg byte a 2000002.0
(label) legal::@1
(label) legal::@2
(label) legal::@3
(label) legal::@4
(label) legal::@5
(label) legal::@6
(label) legal::@return
(byte) legal::column
(byte) legal::column#0 column zp[1]:27 111166.83333333333
(byte) legal::i
(byte) legal::i#1 reg byte y 2000002.0
(byte) legal::i#2 reg byte y 400000.4
(byte) legal::return
(byte) legal::return#0 reg byte a 2002.0
(byte) legal::return#4 reg byte a 333.6666666666667
(byte) legal::row
(byte) legal::row#0 row zp[1]:18 105315.94736842104
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@return
(const byte*) main::str[(byte) $29] = (byte*) " - N Queens Problem Using Backtracking -"
(const byte*) main::str1[(byte) $14] = (byte*) "
Number of Queens:"
(const byte*) main::str[(byte) $29] = (byte*) " - n queens problem using backtracking -"
(const byte*) main::str1[(byte) $13] = (byte*) "
Number of queens:"
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
(label) memcpy::@1
(label) memcpy::@2
@ -50,16 +71,16 @@ Number of Queens:"
(void*) memcpy::destination
(const void*) memcpy::destination#0 destination = (void*) 1024
(byte*) memcpy::dst
(byte*) memcpy::dst#1 dst zp[2]:4 1.0E43
(byte*) memcpy::dst#2 dst zp[2]:4 1.0E43
(byte*) memcpy::dst#1 dst zp[2]:34 1.0E19
(byte*) memcpy::dst#2 dst zp[2]:34 1.0E19
(word) memcpy::num
(const word) memcpy::num#0 num = (word)(number) $28*(number) $19-(number) $28
(void*) memcpy::return
(void*) memcpy::source
(const void*) memcpy::source#0 source = (void*)(number) $400+(number) $28
(byte*) memcpy::src
(byte*) memcpy::src#1 src zp[2]:19 2.0E43
(byte*) memcpy::src#2 src zp[2]:19 1.0E43
(byte*) memcpy::src#1 src zp[2]:21 2.0E19
(byte*) memcpy::src#2 src zp[2]:21 1.0E19
(byte*) memcpy::src_end
(const byte*) memcpy::src_end#0 src_end = (byte*)(const void*) memcpy::source#0+(const word) memcpy::num#0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
@ -68,39 +89,18 @@ Number of Queens:"
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#4 c zp[1]:10 1.25E42
(byte) memset::c#4 reg byte x 1.25E16
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:4 2.0E43
(byte*) memset::dst#2 dst zp[2]:4 1.3333333333333668E43
(byte*) memset::dst#4 dst zp[2]:4 2.0E30
(byte*) memset::dst#1 dst zp[2]:34 2.0E17
(byte*) memset::dst#2 dst zp[2]:34 1.33666666666666656E17
(byte*) memset::dst#4 dst zp[2]:34 2.000000000000002E15
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:19 1.6666666666668335E42
(byte*) memset::end#0 end zp[2]:21 1.6833333333333332E16
(word) memset::num
(word) memset::num#2 num zp[2]:19 1.0E30
(word) memset::num#2 num zp[2]:21 1.000000000000001E15
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:4
(byte()) place((byte) place::row , (byte) place::column)
(byte~) place::$0 zp[1]:23 2.000000000002E12
(byte~) place::$3 zp[1]:24 3.333333333336667E11
(byte~) place::$4 zp[1]:17 2.000000000002E12
(label) place::@1
(label) place::@2
(label) place::@3
(label) place::@4
(label) place::@5
(label) place::@6
(label) place::@return
(byte) place::column
(byte) place::column#0 column zp[1]:22 1.1666666666683334E11
(byte) place::i
(byte) place::i#2 i zp[1]:10 2.000000000002E12
(byte) place::i#3 i zp[1]:10 4.0000000000039996E11
(byte) place::return
(byte) place::return#0 return zp[1]:11 2.00000000002E11
(byte) place::return#4 return zp[1]:11 3.3333333333666668E10
(byte) place::row
(byte) place::row#0 row zp[1]:21 1.1052631578963158E11
(void*) memset::str#3 str zp[2]:34
(void()) print()
(label) print::@1
(label) print::@10
@ -118,16 +118,16 @@ Number of Queens:"
(label) print::@9
(label) print::@return
(byte) print::i
(byte) print::i#1 i zp[1]:11 2.000000000002E12
(byte) print::i#2 i zp[1]:11 1.000000000001E12
(byte) print::i#1 i zp[1]:27 2000002.0
(byte) print::i#2 i zp[1]:27 1000001.0
(byte) print::i1
(byte) print::i1#1 i1 zp[1]:11 2.000000000002E12
(byte) print::i1#2 i1 zp[1]:11 1.0000000000003572E12
(byte) print::i1#1 i1 zp[1]:33 2000002.0
(byte) print::i1#2 i1 zp[1]:33 1000000.357142857
(byte) print::j
(byte) print::j#1 j zp[1]:18 2.0000000000002E13
(byte) print::j#2 j zp[1]:18 5.714285714286286E12
(const byte*) print::str[(byte) $b] = (byte*) "
Solution "
(byte) print::j#1 j zp[1]:6 2.0000002E7
(byte) print::j#2 j zp[1]:6 5714286.285714285
(const byte*) print::str[(byte) 3] = (byte*) "
#"
(const byte*) print::str1[(byte) 4] = (byte*) ":
"
(const byte*) print::str2[(byte) 2] = (byte*) "
@ -141,16 +141,16 @@ Solution "
(label) printf_char::@1
(label) printf_char::@return
(byte) printf_char::ch
(byte) printf_char::ch#0 ch zp[1]:8 2.0E27
(byte) printf_char::ch#1 ch zp[1]:8 2.0E26
(byte) printf_char::ch#2 ch zp[1]:8 2.00000000000002E14
(byte) printf_char::ch#3 ch zp[1]:8 1.11000000000001E28
(byte) printf_char::ch#0 reg byte a 2.000000000002E12
(byte) printf_char::ch#1 reg byte a 2.0000000002E10
(byte) printf_char::ch#2 reg byte a 2.00000002E8
(byte) printf_char::ch#3 reg byte a 1.1010100000004E13
(void()) printf_cls()
(label) printf_cls::@1
(label) printf_cls::@return
(byte*) printf_cursor_ptr loadstore zp[2]:14 1.5364238410596024E27
(byte) printf_cursor_x loadstore zp[1]:12 2.9787234042553192E26
(byte) printf_cursor_y loadstore zp[1]:13 2.1184210526315788E27
(byte*) printf_cursor_ptr loadstore zp[2]:25 1.5045751633994116E12
(byte) printf_cursor_x loadstore zp[1]:23 2.811188811196433E11
(byte) printf_cursor_y loadstore zp[1]:24 2.0792207792214937E12
(byte) printf_format_number::justify_left
(byte) printf_format_number::min_length
(byte) printf_format_number::radix
@ -160,11 +160,11 @@ Solution "
(byte) printf_format_string::justify_left
(byte) printf_format_string::min_length
(void()) printf_ln()
(byte*~) printf_ln::$0 zp[2]:14 2.0E27
(byte*~) printf_ln::$1 zp[2]:14 2.0E27
(byte*~) printf_ln::$0 zp[2]:25 2.00000000002E11
(byte*~) printf_ln::$1 zp[2]:25 2.00000000002E11
(label) printf_ln::@return
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
(word~) printf_number_buffer::$19 zp[2]:4 1.00000000000001E14
(word~) printf_number_buffer::$19 zp[2]:34 1.00000001E8
(label) printf_number_buffer::@1
(label) printf_number_buffer::@10
(label) printf_number_buffer::@11
@ -189,46 +189,47 @@ Solution "
(label) printf_number_buffer::@return
(struct printf_buffer_number) printf_number_buffer::buffer
(byte*) printf_number_buffer::buffer_digits
(byte*) printf_number_buffer::buffer_digits#10 buffer_digits zp[2]:2 1.0344827586207E13
(byte*) printf_number_buffer::buffer_digits#10 buffer_digits zp[2]:19 1.0344827689655172E7
(byte) printf_number_buffer::buffer_sign
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:18 202.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:18 2.0000000000002E13
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:18 1.550000000000525E13
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:13 200002.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:13 202.0
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:13 1.55050053E7
(byte) printf_number_buffer::buffer_sign#2 buffer_sign zp[1]:13 2.0000002E7
(struct printf_format_number) printf_number_buffer::format
(byte) printf_number_buffer::format_justify_left
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:24 6.451612903225871E12
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:11 6451612.9677419355
(byte) printf_number_buffer::format_min_length
(byte) printf_number_buffer::format_min_length#2 format_min_length zp[1]:23 1.00000000000001E13
(byte) printf_number_buffer::format_min_length#3 reg byte x 1.00000001E7
(byte) printf_number_buffer::format_radix
(byte) printf_number_buffer::format_sign_always
(byte) printf_number_buffer::format_upper_case
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:6 3.846153846153885E12
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:28 3846153.8846153845
(byte) printf_number_buffer::format_zero_padding
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:17 9.375000000000094E12
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:12 9375000.09375
(signed byte) printf_number_buffer::len
(signed byte) printf_number_buffer::len#0 len zp[1]:7 1.500000000000015E14
(signed byte) printf_number_buffer::len#1 len zp[1]:7 2.00000000000002E14
(signed byte) printf_number_buffer::len#2 len zp[1]:7 3.00000000000003E14
(signed byte) printf_number_buffer::len#0 reg byte y 1.500000015E8
(signed byte) printf_number_buffer::len#1 reg byte y 2.00000002E8
(signed byte) printf_number_buffer::len#2 reg byte y 3.00000003E8
(signed byte) printf_number_buffer::padding
(signed byte) printf_number_buffer::padding#1 padding zp[1]:23 1.00000000000001E14
(signed byte) printf_number_buffer::padding#10 padding zp[1]:23 1.904761904761924E13
(signed byte) printf_number_buffer::padding#1 padding zp[1]:7 1.00000001E8
(signed byte) printf_number_buffer::padding#10 padding zp[1]:7 1.904761923809524E7
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
(label) printf_padding::@1
(label) printf_padding::@2
(label) printf_padding::@3
(label) printf_padding::@return
(byte) printf_padding::i
(byte) printf_padding::i#1 i zp[1]:9 2.0E27
(byte) printf_padding::i#2 i zp[1]:9 7.500000000000001E26
(byte) printf_padding::i#1 i zp[1]:10 2.000000000002E12
(byte) printf_padding::i#2 i zp[1]:10 7.5000000000075E11
(byte) printf_padding::length
(byte) printf_padding::length#0 length zp[1]:7 2.00000000000002E14
(byte) printf_padding::length#1 length zp[1]:7 2.00000000000002E14
(byte) printf_padding::length#2 length zp[1]:7 2.00000000000002E14
(byte) printf_padding::length#4 length zp[1]:7 1.6666666666671665E26
(byte) printf_padding::length#0 length zp[1]:8 2.00000002E8
(byte) printf_padding::length#1 length zp[1]:8 2.00000002E8
(byte) printf_padding::length#2 length zp[1]:8 2.00000002E8
(byte) printf_padding::length#4 length zp[1]:8 1.6671666666733334E11
(byte) printf_padding::pad
(byte) printf_padding::pad#5 pad zp[1]:8 1.6666666666666666E26
(byte) printf_padding::pad#5 pad zp[1]:9 1.6666666666683334E11
(void()) printf_scroll()
(byte*~) printf_scroll::$4 zp[2]:14 2.0E29
(byte*~) printf_scroll::$4 zp[2]:25 2.00000000000002E14
(label) printf_scroll::@1
(label) printf_scroll::@2
(label) printf_scroll::@3
@ -241,12 +242,12 @@ Solution "
(label) printf_str::@5
(label) printf_str::@return
(byte) printf_str::ch
(byte) printf_str::ch#0 ch zp[1]:8 1.0E26
(byte) printf_str::ch#0 reg byte a 1.0000000001E10
(byte*) printf_str::str
(byte*) printf_str::str#0 str zp[2]:2 4.285714285714285E25
(byte*) printf_str::str#1 str zp[2]:2 2.00000000000002E14
(byte*) printf_str::str#10 str zp[2]:2 2.000000000005E26
(byte*) printf_str::str#11 str zp[2]:2 1.100000000000002E15
(byte*) printf_str::str#0 str zp[2]:19 4.2857142861428566E9
(byte*) printf_str::str#1 str zp[2]:19 2.00000002E8
(byte*) printf_str::str#10 str zp[2]:19 2.05000000025E10
(byte*) printf_str::str#11 str zp[2]:19 1.100000002E9
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_upper_case , (byte) printf_uchar::format_radix)
(label) printf_uchar::@1
(label) printf_uchar::@2
@ -259,10 +260,9 @@ Solution "
(byte) printf_uchar::format_upper_case
(byte) printf_uchar::format_zero_padding
(byte) printf_uchar::uvalue
(byte) printf_uchar::uvalue#0 uvalue zp[1]:11 22.0
(byte) printf_uchar::uvalue#1 uvalue zp[1]:11 2.000000000002E12
(byte) printf_uchar::uvalue#2 uvalue zp[1]:11 2.000000000002E12
(byte) printf_uchar::uvalue#3 uvalue zp[1]:11 6.000000000007E12
(byte) printf_uchar::uvalue#0 reg byte x 2000002.0
(byte) printf_uchar::uvalue#1 reg byte x 2000002.0
(byte) printf_uchar::uvalue#2 reg byte x 6000001.5
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
(label) printf_uint::@1
(label) printf_uint::@2
@ -280,57 +280,74 @@ Solution "
(const byte) printf_uint::format_zero_padding#0 format_zero_padding = (byte) 0
(word) printf_uint::uvalue
(const word) printf_uint::uvalue#0 uvalue = (byte) 8
__stackcall (void()) queen((byte) queen::row)
(byte~) queen::$1 zp[1]:11 2.00000000002E11
(byte~) queen::$4 zp[1]:21 2.00000000002E11
(label) queen::@1
(label) queen::@2
(label) queen::@3
(label) queen::@4
(label) queen::@5
(label) queen::@6
(label) queen::@7
(label) queen::@return
(const byte) queen::OFFSET_STACK_ROW = (byte) 0
(byte) queen::column loadstore zp[1]:22 2.9411764706823532E10
(byte) queen::r loadstore zp[1]:21 2.1052631579736843E10
(byte) queen::row
(byte) queen::row#0 row zp[1]:21 22.0
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
(label) printf_ulong::@1
(label) printf_ulong::@2
(label) printf_ulong::@return
(struct printf_format_number) printf_ulong::format
(byte) printf_ulong::format_justify_left
(const byte) printf_ulong::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_ulong::format_min_length
(const byte) printf_ulong::format_min_length#0 format_min_length = (byte) 0
(byte) printf_ulong::format_radix
(byte) printf_ulong::format_sign_always
(byte) printf_ulong::format_upper_case
(const byte) printf_ulong::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_ulong::format_zero_padding
(const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0
(dword) printf_ulong::uvalue
(dword) printf_ulong::uvalue#0 uvalue zp[4]:2 36667.33333333333
(void()) queens()
(byte~) queens::$2 reg byte a 2002.0
(label) queens::@1
(label) queens::@2
(label) queens::@3
(label) queens::@4
(label) queens::@5
(label) queens::@6
(label) queens::@7
(label) queens::@8
(label) queens::@9
(label) queens::@return
(byte) queens::row
(byte) queens::row#1 row zp[1]:18 2002.0
(byte) queens::row#10 row zp[1]:18 1144.0
(byte) queens::row#2 row zp[1]:18 2002.0
(word()) strlen((byte*) strlen::str)
(label) strlen::@1
(label) strlen::@2
(label) strlen::@return
(word) strlen::len
(word) strlen::len#1 len zp[2]:4 1.0E27
(word) strlen::len#2 len zp[2]:4 5.00000000000025E26
(word) strlen::len#1 len zp[2]:34 1.000000000001E12
(word) strlen::len#2 len zp[2]:34 5.0002500000075E11
(word) strlen::return
(word) strlen::return#2 return zp[2]:4 2.00000000000002E14
(word) strlen::return#2 return zp[2]:34 2.00000002E8
(byte*) strlen::str
(byte*) strlen::str#0 str zp[2]:19 2.0E27
(byte*) strlen::str#1 str zp[2]:19 5.50000000000001E14
(byte*) strlen::str#2 str zp[2]:19 1.0000000000003332E27
(byte*) strlen::str#0 str zp[2]:21 2.000000000002E12
(byte*) strlen::str#1 str zp[2]:21 5.50000001E8
(byte*) strlen::str#2 str zp[2]:21 1.0003333333346667E12
(byte*()) strupr((byte*) strupr::str)
(byte~) strupr::$0 zp[1]:7 2.0E27
(byte~) strupr::$0 reg byte a 2.000000000002E12
(label) strupr::@1
(label) strupr::@2
(label) strupr::@3
(label) strupr::@return
(byte*) strupr::return
(byte*) strupr::src
(byte*) strupr::src#1 src zp[2]:19 2.0E27
(byte*) strupr::src#2 src zp[2]:19 7.142857142858572E26
(byte*) strupr::src#1 src zp[2]:21 2.000000000002E12
(byte*) strupr::src#2 src zp[2]:21 7.144285714294285E11
(byte*) strupr::str
(byte*) strupr::str#0 str zp[2]:19 5.50000000000001E14
(byte*) strupr::str#0 str zp[2]:21 5.50000001E8
(byte()) toupper((byte) toupper::ch)
(label) toupper::@1
(label) toupper::@2
(label) toupper::@return
(byte) toupper::ch
(byte) toupper::ch#0 ch zp[1]:7 1.6999999999999998E28
(byte) toupper::ch#0 reg byte a 1.7000000000001998E13
(byte) toupper::return
(byte) toupper::return#0 return zp[1]:7 2.0E28
(byte) toupper::return#2 return zp[1]:7 1.0333333333333333E28
(byte) toupper::return#3 return zp[1]:7 2.0E27
(byte) toupper::return#0 reg byte a 2.0000000000002E13
(byte) toupper::return#2 reg byte a 1.0333333333334666E13
(byte) toupper::return#3 reg byte a 2.000000000002E12
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
(label) uctoa::@1
(label) uctoa::@2
@ -341,47 +358,98 @@ __stackcall (void()) queen((byte) queen::row)
(label) uctoa::@7
(label) uctoa::@return
(byte*) uctoa::buffer
(byte*) uctoa::buffer#11 buffer zp[2]:19 3.3333333333350004E25
(byte*) uctoa::buffer#14 buffer zp[2]:19 1.5000000000000002E26
(byte*) uctoa::buffer#3 buffer zp[2]:19 2.00000000000002E14
(byte*) uctoa::buffer#4 buffer zp[2]:19 2.0E26
(byte*) uctoa::buffer#11 buffer zp[2]:19 3.3350000000500004E10
(byte*) uctoa::buffer#14 buffer zp[2]:19 1.500000000015E11
(byte*) uctoa::buffer#3 buffer zp[2]:19 2.00000002E8
(byte*) uctoa::buffer#4 buffer zp[2]:19 2.00000000002E11
(byte) uctoa::digit
(byte) uctoa::digit#1 digit zp[1]:6 2.0E26
(byte) uctoa::digit#2 digit zp[1]:6 3.076923076923077E25
(byte) uctoa::digit#1 digit zp[1]:11 2.00000000002E11
(byte) uctoa::digit#2 digit zp[1]:11 3.076923076953846E10
(byte) uctoa::digit_value
(byte) uctoa::digit_value#0 digit_value zp[1]:23 6.000000000000001E25
(byte) uctoa::digit_value#0 digit_value zp[1]:28 6.0000000000600006E10
(byte*) uctoa::digit_values
(byte) uctoa::max_digits
(byte) uctoa::radix
(byte) uctoa::started
(byte) uctoa::started#2 started zp[1]:8 6.000000000000001E25
(byte) uctoa::started#4 started zp[1]:8 1.0E26
(byte) uctoa::started#2 started zp[1]:12 6.0000000000600006E10
(byte) uctoa::started#4 started zp[1]:12 1.00000000001E11
(byte) uctoa::value
(byte) uctoa::value#0 value zp[1]:7 1.0E26
(byte) uctoa::value#1 value zp[1]:7 5.5000000000001E13
(byte) uctoa::value#2 value zp[1]:7 6.666666666670001E25
(byte) uctoa::value#6 value zp[1]:7 1.5000000000000002E26
(byte) uctoa::value#0 reg byte x 1.00000000001E11
(byte) uctoa::value#1 reg byte x 5.5000001E7
(byte) uctoa::value#2 reg byte x 6.670000000100001E10
(byte) uctoa::value#6 reg byte x 1.500000000015E11
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
(label) uctoa_append::@1
(label) uctoa_append::@2
(label) uctoa_append::@3
(label) uctoa_append::@return
(byte*) uctoa_append::buffer
(byte*) uctoa_append::buffer#0 buffer zp[2]:19 1.3750000000000001E26
(byte*) uctoa_append::buffer#0 buffer zp[2]:19 1.3750000000025E11
(byte) uctoa_append::digit
(byte) uctoa_append::digit#1 digit zp[1]:9 1.0E40
(byte) uctoa_append::digit#2 digit zp[1]:9 1.00000000000005E40
(byte) uctoa_append::digit#1 reg byte y 1.0E16
(byte) uctoa_append::digit#2 reg byte y 1.00005E16
(byte) uctoa_append::return
(byte) uctoa_append::return#0 return zp[1]:7 2.0E26
(byte) uctoa_append::return#0 reg byte x 2.00000000002E11
(byte) uctoa_append::sub
(byte) uctoa_append::sub#0 sub zp[1]:23 3.33333333333335E39
(byte) uctoa_append::sub#0 sub zp[1]:28 3.33335E15
(byte) uctoa_append::value
(byte) uctoa_append::value#0 value zp[1]:7 3.666666666666667E26
(byte) uctoa_append::value#1 value zp[1]:7 2.0E40
(byte) uctoa_append::value#2 value zp[1]:7 5.0000000000001833E39
(byte) uctoa_append::value#0 reg byte x 3.666666666673334E11
(byte) uctoa_append::value#1 reg byte x 2.0E16
(byte) uctoa_append::value#2 reg byte x 5.000183333333334E15
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
(byte~) ultoa::$10 reg byte a 2.00000002E8
(byte~) ultoa::$11 reg byte a 2000002.0
(label) ultoa::@1
(label) ultoa::@2
(label) ultoa::@3
(label) ultoa::@4
(label) ultoa::@5
(label) ultoa::@6
(label) ultoa::@7
(label) ultoa::@return
(byte*) ultoa::buffer
(byte*) ultoa::buffer#11 buffer zp[2]:34 2.871428614285714E7
(byte*) ultoa::buffer#14 buffer zp[2]:34 1.500000015E8
(byte*) ultoa::buffer#3 buffer zp[2]:34 2000002.0
(byte*) ultoa::buffer#4 buffer zp[2]:34 2.00000002E8
(byte) ultoa::digit
(byte) ultoa::digit#1 digit zp[1]:13 2.00000002E8
(byte) ultoa::digit#2 digit zp[1]:13 2.857142885714286E7
(dword) ultoa::digit_value
(dword) ultoa::digit_value#0 digit_value zp[4]:29 6.0000000599999994E7
(dword*) ultoa::digit_values
(byte) ultoa::max_digits
(const byte) ultoa::max_digits#1 max_digits = (byte) $a
(byte) ultoa::radix
(byte) ultoa::started
(byte) ultoa::started#2 reg byte x 5.00000005E7
(byte) ultoa::started#4 reg byte x 1.00000001E8
(dword) ultoa::value
(dword) ultoa::value#0 value zp[4]:14 1.00000001E8
(dword) ultoa::value#1 value zp[4]:14 550001.0
(dword) ultoa::value#2 value zp[4]:14 5.7285715E7
(dword) ultoa::value#6 value zp[4]:14 1.500000015E8
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
(label) ultoa_append::@1
(label) ultoa_append::@2
(label) ultoa_append::@3
(label) ultoa_append::@return
(byte*) ultoa_append::buffer
(byte*) ultoa_append::buffer#0 buffer zp[2]:34 1.3750000025E8
(byte) ultoa_append::digit
(byte) ultoa_append::digit#1 reg byte x 1.000000000001E12
(byte) ultoa_append::digit#2 reg byte x 1.0005000000015E12
(dword) ultoa_append::return
(dword) ultoa_append::return#0 return zp[4]:14 2.00000002E8
(dword) ultoa_append::sub
(dword) ultoa_append::sub#0 sub zp[4]:29 3.333500000005E11
(dword) ultoa_append::value
(dword) ultoa_append::value#0 value zp[4]:14 3.666666673333334E8
(dword) ultoa_append::value#1 value zp[4]:14 2.000000000002E12
(dword) ultoa_append::value#2 value zp[4]:14 5.0018333333416675E11
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
(byte~) utoa::$10 zp[1]:18 20002.0
(byte~) utoa::$11 zp[1]:17 2002.0
(byte~) utoa::$10 reg byte a 20002.0
(byte~) utoa::$11 reg byte a 2002.0
(label) utoa::@1
(label) utoa::@2
(label) utoa::@3
@ -391,62 +459,96 @@ __stackcall (void()) queen((byte) queen::row)
(label) utoa::@7
(label) utoa::@return
(byte*) utoa::buffer
(byte*) utoa::buffer#11 buffer zp[2]:4 3000.4285714285716
(byte*) utoa::buffer#14 buffer zp[2]:4 15001.5
(byte*) utoa::buffer#3 buffer zp[2]:4 2002.0
(byte*) utoa::buffer#4 buffer zp[2]:4 20002.0
(byte*) utoa::buffer#11 buffer zp[2]:21 3000.4285714285716
(byte*) utoa::buffer#14 buffer zp[2]:21 15001.5
(byte*) utoa::buffer#3 buffer zp[2]:21 2002.0
(byte*) utoa::buffer#4 buffer zp[2]:21 20002.0
(byte) utoa::digit
(byte) utoa::digit#1 digit zp[1]:23 20002.0
(byte) utoa::digit#2 digit zp[1]:23 2857.4285714285716
(byte) utoa::digit#1 digit zp[1]:18 20002.0
(byte) utoa::digit#2 digit zp[1]:18 2857.4285714285716
(word) utoa::digit_value
(word) utoa::digit_value#0 digit_value zp[2]:19 6000.6
(word) utoa::digit_value#0 digit_value zp[2]:34 6000.6
(word*) utoa::digit_values
(byte) utoa::max_digits
(const byte) utoa::max_digits#1 max_digits = (byte) 5
(byte) utoa::radix
(byte) utoa::started
(byte) utoa::started#2 started zp[1]:24 5000.5
(byte) utoa::started#4 started zp[1]:24 10001.0
(byte) utoa::started#2 reg byte x 5000.5
(byte) utoa::started#4 reg byte x 10001.0
(word) utoa::value
(word) utoa::value#0 value zp[2]:2 10001.0
(word) utoa::value#2 value zp[2]:2 5714.857142857143
(word) utoa::value#6 value zp[2]:2 15001.5
(word) utoa::value#0 value zp[2]:19 10001.0
(word) utoa::value#2 value zp[2]:19 5714.857142857143
(word) utoa::value#6 value zp[2]:19 15001.5
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
(label) utoa_append::@1
(label) utoa_append::@2
(label) utoa_append::@3
(label) utoa_append::@return
(byte*) utoa_append::buffer
(byte*) utoa_append::buffer#0 buffer zp[2]:4 13750.25
(byte*) utoa_append::buffer#0 buffer zp[2]:21 13750.25
(byte) utoa_append::digit
(byte) utoa_append::digit#1 digit zp[1]:17 1.0000001E7
(byte) utoa_append::digit#2 digit zp[1]:17 1.00500015E7
(byte) utoa_append::digit#1 reg byte x 1.0000001E7
(byte) utoa_append::digit#2 reg byte x 1.00500015E7
(word) utoa_append::return
(word) utoa_append::return#0 return zp[2]:2 20002.0
(word) utoa_append::return#0 return zp[2]:19 20002.0
(word) utoa_append::sub
(word) utoa_append::sub#0 sub zp[2]:19 3335000.5
(word) utoa_append::sub#0 sub zp[2]:34 3335000.5
(word) utoa_append::value
(word) utoa_append::value#0 value zp[2]:2 36667.33333333333
(word) utoa_append::value#1 value zp[2]:2 2.0000002E7
(word) utoa_append::value#2 value zp[2]:2 5018334.166666666
(word) utoa_append::value#0 value zp[2]:19 36667.33333333333
(word) utoa_append::value#1 value zp[2]:19 2.0000002E7
(word) utoa_append::value#2 value zp[2]:19 5018334.166666666
zp[2]:2 [ utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ]
zp[2]:4 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
zp[1]:6 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_upper_case#10 ]
zp[1]:7 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 uctoa_append::return#0 printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 strupr::$0 printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
zp[1]:8 [ uctoa::started#2 uctoa::started#4 printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 printf_str::ch#0 ]
zp[1]:9 [ uctoa_append::digit#2 uctoa_append::digit#1 printf_padding::i#2 printf_padding::i#1 ]
zp[1]:10 [ place::i#3 place::i#2 memset::c#4 ]
zp[1]:11 [ place::return#4 place::return#0 queen::$1 print::i#2 print::i#1 printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 print::i1#2 print::i1#1 ]
zp[1]:12 [ printf_cursor_x ]
zp[1]:13 [ printf_cursor_y ]
zp[2]:14 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ]
zp[1]:16 [ count ]
zp[1]:17 [ utoa::$11 diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 diff::return#1 place::$4 utoa_append::digit#2 utoa_append::digit#1 printf_number_buffer::format_zero_padding#10 ]
zp[1]:18 [ utoa::$10 diff::b#2 diff::b#0 diff::b#1 print::j#2 print::j#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
zp[2]:19 [ utoa::digit_value#0 utoa_append::sub#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ]
zp[1]:21 [ queen::row#0 queen::r place::row#0 queen::$4 ]
zp[1]:22 [ queen::column place::column#0 ]
zp[1]:23 [ place::$0 uctoa::digit_value#0 uctoa_append::sub#0 utoa::digit#2 utoa::digit#1 printf_number_buffer::format_min_length#2 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
zp[1]:24 [ diff::return#0 place::$3 utoa::started#2 utoa::started#4 printf_number_buffer::format_justify_left#10 ]
zp[4]:2 [ count#11 count#13 printf_ulong::uvalue#0 ]
zp[1]:6 [ print::j#2 print::j#1 ]
reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ]
reg byte x [ printf_number_buffer::format_min_length#3 ]
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
zp[1]:7 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
zp[1]:8 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
zp[1]:9 [ printf_padding::pad#5 ]
zp[1]:10 [ printf_padding::i#2 printf_padding::i#1 ]
reg byte a [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ]
reg byte x [ memset::c#4 ]
reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ]
zp[1]:11 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_justify_left#10 ]
reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
zp[1]:12 [ uctoa::started#2 uctoa::started#4 printf_number_buffer::format_zero_padding#10 ]
reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ]
zp[1]:13 [ ultoa::digit#2 ultoa::digit#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
zp[4]:14 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ultoa_append::return#0 ]
reg byte x [ ultoa::started#2 ultoa::started#4 ]
reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ]
reg byte y [ legal::i#2 legal::i#1 ]
reg byte a [ legal::return#4 ]
reg byte a [ diff::a#2 diff::a#0 diff::a#1 ]
reg byte x [ diff::b#2 diff::b#0 diff::b#1 ]
reg byte a [ diff::return#4 diff::return#2 diff::return#3 ]
zp[1]:18 [ utoa::digit#2 utoa::digit#1 queens::row#10 queens::row#1 queens::row#2 legal::row#0 ]
zp[2]:19 [ utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ]
reg byte x [ utoa::started#2 utoa::started#4 ]
zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ]
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
zp[1]:23 [ printf_cursor_x ]
zp[1]:24 [ printf_cursor_y ]
zp[2]:25 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ]
zp[1]:27 [ legal::column#0 print::i#2 print::i#1 ]
reg byte a [ legal::return#0 ]
reg byte a [ queens::$2 ]
reg byte a [ printf_str::ch#0 ]
reg byte a [ toupper::return#3 ]
reg byte a [ strupr::$0 ]
zp[1]:28 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_number_buffer::format_upper_case#10 ]
reg byte x [ uctoa_append::return#0 ]
reg byte a [ ultoa::$11 ]
reg byte a [ ultoa::$10 ]
zp[4]:29 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
reg byte x [ legal::$0 ]
reg byte a [ diff::return#0 ]
zp[1]:33 [ legal::$3 print::i1#2 print::i1#1 ]
reg byte a [ diff::return#1 ]
reg byte a [ legal::$4 ]
reg byte a [ utoa::$11 ]
reg byte a [ utoa::$10 ]
zp[2]:34 [ utoa::digit_value#0 utoa_append::sub#0 ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
mem[12] [ printf_buffer ]