From d8d0cc1ff8102df7bdfc821dae8676aaca5e2117 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 26 Apr 2020 13:57:53 +0200 Subject: [PATCH] Added 8 queens example programs with and without recursion. --- .../dk/camelot64/kickc/test/TestPrograms.java | 5 + .../eightqueens/eightqueens-recursive.c | 99 + .../kc/examples/eightqueens/eightqueens.c | 124 +- .../eightqueens/eightqueens-recursive.asm | 1336 ++ .../eightqueens/eightqueens-recursive.cfg | 744 + .../eightqueens/eightqueens-recursive.log | 13813 ++++++++++++++++ .../eightqueens/eightqueens-recursive.sym | 522 + .../ref/examples/eightqueens/eightqueens.asm | 1201 +- .../ref/examples/eightqueens/eightqueens.cfg | 954 +- .../ref/examples/eightqueens/eightqueens.log | 12747 ++++++++------ .../ref/examples/eightqueens/eightqueens.sym | 484 +- 11 files changed, 25458 insertions(+), 6571 deletions(-) create mode 100644 src/test/kc/examples/eightqueens/eightqueens-recursive.c create mode 100644 src/test/ref/examples/eightqueens/eightqueens-recursive.asm create mode 100644 src/test/ref/examples/eightqueens/eightqueens-recursive.cfg create mode 100644 src/test/ref/examples/eightqueens/eightqueens-recursive.log create mode 100644 src/test/ref/examples/eightqueens/eightqueens-recursive.sym diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index f89622084..e2f4ec1b5 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -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"); diff --git a/src/test/kc/examples/eightqueens/eightqueens-recursive.c b/src/test/kc/examples/eightqueens/eightqueens-recursive.c new file mode 100644 index 000000000..db66cc154 --- /dev/null +++ b/src/test/kc/examples/eightqueens/eightqueens-recursive.c @@ -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 + +#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 - -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("-"); } } } \ No newline at end of file diff --git a/src/test/ref/examples/eightqueens/eightqueens-recursive.asm b/src/test/ref/examples/eightqueens/eightqueens-recursive.asm new file mode 100644 index 000000000..340dfd3f3 --- /dev/null +++ b/src/test/ref/examples/eightqueens/eightqueens-recursive.asm @@ -0,0 +1,1336 @@ +// 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 +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 + .const STACK_BASE = $103 + .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c + .label printf_cursor_x = $10 + .label printf_cursor_y = $11 + .label printf_cursor_ptr = $12 + .label count = $14 +__bbegin: + // printf_cursor_x = 0 + // X-position of cursor + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + // Y-position of cursor + sta.z printf_cursor_y + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + // Pointer to cursor address + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // count = 0 + // The number of found solutions + lda #<0 + sta.z count + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + jsr main + rts +main: { + // printf_cls() + jsr printf_cls + // printf(" - n queens problem using backtracking -") + lda #str + sta.z printf_str.str+1 + jsr printf_str + // printf("\nNumber of queens:%u",QUEENS) + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // printf("\nNumber of queens:%u",QUEENS) + jsr printf_uint + // queen(1) + lda #1 + pha + jsr queen + pla + // } + rts + str: .text " - n queens problem using backtracking -" + .byte 0 + str1: .text @"\nNumber of queens:" + .byte 0 +} +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + // printf_buffer.sign = format.sign_always?'+':0 + // Handle any sign + lda #0 + sta printf_buffer + // utoa(uvalue, printf_buffer.digits, format.radix) + // Format number into buffer + jsr utoa + // printf_number_buffer(printf_buffer, format) + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // Print using format + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // } + rts +} +// Print the contents of the number buffer using a specific format. +// This handles minimum length, zero-filling, and left/right justification from the format +// printf_number_buffer(byte zp($23) buffer_sign, byte* zp($c) buffer_digits, byte zp($f) format_min_length, byte zp($1d) format_justify_left, byte zp($18) format_zero_padding, byte zp($22) format_upper_case) +printf_number_buffer: { + .label __19 = 2 + .label buffer_sign = $23 + .label len = 4 + .label padding = $f + .label format_min_length = $f + .label format_zero_padding = $18 + .label format_justify_left = $1d + .label buffer_digits = $c + .label format_upper_case = $22 + // if(format.min_length) + lda #0 + cmp.z format_min_length + beq __b6 + // strlen(buffer.digits) + lda.z buffer_digits + sta.z strlen.str + lda.z buffer_digits+1 + sta.z strlen.str+1 + jsr strlen + // strlen(buffer.digits) + // len = (signed char)strlen(buffer.digits) + // There is a minimum length - work out the padding + lda.z __19 + sta.z len + // if(buffer.sign) + lda #0 + cmp.z buffer_sign + beq __b13 + // len++; + inc.z len + __b13: + // padding = (signed char)format.min_length - len + lda.z padding + sec + sbc.z len + sta.z padding + // if(padding<0) + cmp #0 + bpl __b1 + __b6: + lda #0 + sta.z padding + __b1: + // if(!format.justify_left && !format.zero_padding && padding) + lda #0 + cmp.z format_justify_left + bne __b2 + cmp.z format_zero_padding + bne __b2 + cmp.z padding + bne __b8 + jmp __b2 + __b8: + // printf_padding(' ',(char)padding) + lda.z padding + sta.z printf_padding.length + lda #' ' + sta.z printf_padding.pad + jsr printf_padding + __b2: + // if(buffer.sign) + lda #0 + cmp.z buffer_sign + beq __b3 + // printf_char(buffer.sign) + lda.z buffer_sign + sta.z printf_char.ch + jsr printf_char + __b3: + // if(format.zero_padding && padding) + lda #0 + cmp.z format_zero_padding + beq __b4 + cmp.z padding + bne __b10 + jmp __b4 + __b10: + // printf_padding('0',(char)padding) + lda.z padding + sta.z printf_padding.length + lda #'0' + sta.z printf_padding.pad + jsr printf_padding + __b4: + // if(format.upper_case) + lda #0 + cmp.z format_upper_case + beq __b5 + // strupr(buffer.digits) + lda.z buffer_digits + sta.z strupr.str + lda.z buffer_digits+1 + sta.z strupr.str+1 + jsr strupr + __b5: + // printf_str(buffer.digits) + jsr printf_str + // if(format.justify_left && !format.zero_padding && padding) + lda #0 + cmp.z format_justify_left + beq __breturn + cmp.z format_zero_padding + bne __breturn + cmp.z padding + bne __b12 + rts + __b12: + // printf_padding(' ',(char)padding) + lda.z padding + sta.z printf_padding.length + lda #' ' + sta.z printf_padding.pad + jsr printf_padding + __breturn: + // } + rts +} +// Print a padding char a number of times +// printf_padding(byte zp(5) pad, byte zp(4) length) +printf_padding: { + .label i = 6 + .label length = 4 + .label pad = 5 + lda #0 + sta.z i + __b1: + // for(char i=0;i$400+$28*$19-$28 + sta.z memset.str+1 + lda #<$28 + sta.z memset.num + lda #>$28 + sta.z memset.num+1 + jsr memset + // printf_cursor_ptr-PRINTF_SCREEN_WIDTH + lda.z __4 + sec + sbc #<$28 + sta.z __4 + lda.z __4+1 + sbc #>$28 + sta.z __4+1 + // printf_cursor_ptr = printf_cursor_ptr-PRINTF_SCREEN_WIDTH + // printf_cursor_y--; + dec.z printf_cursor_y + __breturn: + // } + rts +} +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zp(2) str, byte zp(7) c, word zp($19) num) +memset: { + .label end = $19 + .label dst = 2 + .label num = $19 + .label str = 2 + .label c = 7 + // if(num>0) + lda.z num + bne !+ + lda.z num+1 + beq __breturn + !: + // end = (char*)str + num + lda.z end + clc + adc.z str + sta.z end + lda.z end+1 + adc.z str+1 + sta.z end+1 + __b2: + // for(char* dst = str; dst!=end; dst++) + lda.z dst+1 + cmp.z end+1 + bne __b3 + lda.z dst + cmp.z end + bne __b3 + __breturn: + // } + rts + __b3: + // *dst = c + lda.z c + ldy #0 + sta (dst),y + // for(char* dst = str; dst!=end; dst++) + inc.z dst + bne !+ + inc.z dst+1 + !: + jmp __b2 +} +// Copy block of memory (forwards) +// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. +memcpy: { + .label destination = $400 + .label source = $400+$28 + .const num = $28*$19-$28 + .label src_end = source+num + .label dst = 2 + .label src = $19 + lda #destination + sta.z dst+1 + lda #source + sta.z src+1 + __b1: + // while(src!=src_end) + lda.z src+1 + cmp #>src_end + bne __b2 + lda.z src + cmp #='a' && ch<='z') + lda.z ch + cmp #'a' + bcc __breturn + lda #'z' + cmp.z ch + bcs __b1 + rts + __b1: + // return ch + ('A'-'a'); + lax.z return + axs #-['A'-'a'] + stx.z return + __breturn: + // } + rts +} +// Computes the length of the string str up to but not including the terminating null character. +// strlen(byte* zp($19) str) +strlen: { + .label len = 2 + .label str = $19 + .label return = 2 + lda #<0 + sta.z len + sta.z len+1 + __b1: + // while(*str) + ldy #0 + lda (str),y + cmp #0 + bne __b2 + // } + rts + __b2: + // len++; + inc.z len + bne !+ + inc.z len+1 + !: + // str++; + inc.z str + bne !+ + inc.z str+1 + !: + jmp __b1 +} +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($c) value, byte* zp(2) buffer) +utoa: { + .const max_digits = 5 + .label __10 = $1b + .label __11 = $18 + .label digit_value = $19 + .label buffer = 2 + .label digit = $f + .label value = $c + .label started = $1d + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + lda #0 + sta.z started + lda #printf_uint.uvalue + sta.z value+1 + lda #0 + sta.z digit + __b1: + // for( char digit=0; digit= digit_value) + lda #0 + cmp.z started + bne __b5 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + __b4: + // for( char digit=0; digit= sub) + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + // *buffer = DIGITS[digit] + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // } + rts + __b2: + // digit++; + inc.z digit + // value -= sub + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + jmp __b1 +} +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) + lda #' ' + sta.z memset.c + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // printf_cursor_x = 0 + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + sta.z printf_cursor_y + // } + rts +} +// 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. +// queen(byte zp($1b) row) +queen: { + .const OFFSET_STACK_ROW = 0 + .label r = $1b + .label column = $1c + .label __1 = $f + .label __4 = $1b + .label row = $1b + tsx + lda STACK_BASE+OFFSET_STACK_ROW,x + sta.z row + // r = row + // column=1 + lda #1 + sta.z column + __b1: + // for(__ma char column=1;column<=QUEENS;++column) + lda.z column + cmp #8+1 + bcc __b2 + // } + rts + __b2: + // legal(r,column) + jsr legal + // legal(r,column) + // if(legal(r,column)) + lda #0 + cmp.z __1 + beq __b3 + // board[r]=column + //no conflicts so place queen + lda.z column + ldy.z r + sta board,y + // if(r==QUEENS) + lda #8 + cmp.z r + beq __b4 + // asm + // Perform recussive placement on rows above + // Push the local vars on the stack (waiting for proper recursion support) + lda column + pha + tya + pha + // r+1 + inc.z __4 + // queen(r+1) + // Do recursion + lda.z __4 + pha + jsr queen + pla + // asm + // Pop the local vars on the stack (waiting for proper recursion support) + pla + sta r + pla + sta column + __b3: + // for(__ma char column=1;column<=QUEENS;++column) + inc.z column + jmp __b1 + __b4: + // print() + // we are done! Print the board configuration + jsr print + jmp __b3 +} +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $e + .label i1 = $e + .label j = $23 + // printf("\n#%lu:\n ",++count); + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // printf("\n#%lu:\n ",++count) + lda #str + sta.z printf_str.str+1 + jsr printf_str + // printf("\n#%lu:\n ",++count) + lda.z count + sta.z printf_ulong.uvalue + lda.z count+1 + sta.z printf_ulong.uvalue+1 + lda.z count+2 + sta.z printf_ulong.uvalue+2 + lda.z count+3 + sta.z printf_ulong.uvalue+3 + jsr printf_ulong + // printf("\n#%lu:\n ",++count) + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + lda #1 + sta.z i + __b1: + // for(char i=1;i<=QUEENS;++i) + lda.z i + cmp #8+1 + bcc __b2 + lda #1 + sta.z i1 + __b3: + // for(char i=1;i<=QUEENS;++i) + lda.z i1 + cmp #8+1 + bcc __b4 + // } + rts + __b4: + // printf("\n%x",i) + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + // printf("\n%x",i) + jsr printf_uchar + lda #1 + sta.z j + __b5: + // for(char j=1;j<=QUEENS;++j) + lda.z j + cmp #8+1 + bcc __b6 + // for(char i=1;i<=QUEENS;++i) + inc.z i1 + jmp __b3 + __b6: + // if(board[i]==j) + ldy.z i1 + lda board,y + cmp.z j + beq __b8 + // printf("-") + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + __b9: + // for(char j=1;j<=QUEENS;++j) + inc.z j + jmp __b5 + __b8: + // printf("Q") + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + __b2: + // printf("%x",i) + jsr printf_uchar + // for(char i=1;i<=QUEENS;++i) + inc.z i + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} +// Print an unsigned char using a specific format +// printf_uchar(byte zp($e) uvalue) +printf_uchar: { + .label uvalue = $e + // printf_buffer.sign = format.sign_always?'+':0 + // Handle any sign + lda #0 + sta printf_buffer + // uctoa(uvalue, printf_buffer.digits, format.radix) + lda.z uvalue + sta.z uctoa.value + // Format number into buffer + jsr uctoa + // printf_number_buffer(printf_buffer, format) + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // Print using format + lda #0 + sta.z printf_number_buffer.format_upper_case + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + lda #0 + sta.z printf_number_buffer.format_zero_padding + sta.z printf_number_buffer.format_justify_left + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // } + rts +} +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// uctoa(byte zp(4) value, byte* zp($c) buffer) +uctoa: { + .label digit_value = $1d + .label buffer = $c + .label digit = $22 + .label value = 4 + .label started = 5 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + lda #0 + sta.z started + sta.z digit + __b1: + // for( char digit=0; digit= digit_value) + lda #0 + cmp.z started + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + __b4: + // for( char digit=0; digit= sub) + lda.z value + cmp.z sub + bcs __b2 + // *buffer = DIGITS[digit] + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // } + rts + __b2: + // digit++; + inc.z digit + // value -= sub + lda.z value + sec + sbc.z sub + sta.z value + jmp __b1 +} +// Print an unsigned int using a specific format +// printf_ulong(dword zp(8) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 8 + // printf_buffer.sign = format.sign_always?'+':0 + // Handle any sign + lda #0 + sta printf_buffer + // ultoa(uvalue, printf_buffer.digits, format.radix) + // Format number into buffer + jsr ultoa + // printf_number_buffer(printf_buffer, format) + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // Print using format + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // } + rts +} +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp(8) value, byte* zp($c) buffer) +ultoa: { + .const max_digits = $a + .label __10 = $22 + .label __11 = $1d + .label digit_value = $1e + .label buffer = $c + .label digit = 7 + .label value = 8 + .label started = $f + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + lda #0 + sta.z started + sta.z digit + __b1: + // for( char digit=0; digit= digit_value) + lda #0 + cmp.z started + bne __b5 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + __b4: + // for( char digit=0; digit= sub) + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + // *buffer = DIGITS[digit] + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // } + rts + __b2: + // digit++; + inc.z digit + // value -= sub + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + jmp __b1 +} +// 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 +// legal(byte zp($1b) row, byte zp($1c) column) +legal: { + .label __0 = $22 + .label __3 = $23 + .label __4 = $1d + .label row = $1b + .label column = $1c + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return = $f + .label i = $e + lda #1 + sta.z i + __b1: + // row-1 + ldx.z row + dex + stx.z __0 + // for(char i=1;i<=row-1;++i) + txa + cmp.z i + bcs __b2 + lda #1 + sta.z return + rts + __b4: + lda #0 + sta.z return + // } + rts + __b2: + // if(board[i]==column) + ldy.z i + lda board,y + cmp.z column + beq __b4 + // diff(board[i],column) + lda board,y + sta.z diff.a + lda.z column + sta.z diff.b + jsr diff + // diff(board[i],column) + lda.z diff.return_1 + sta.z diff.return + // diff(i,row) + lda.z i + sta.z diff.a + lda.z row + sta.z diff.b + jsr diff + // diff(i,row) + // if(diff(board[i],column)==diff(i,row)) + lda.z __3 + cmp.z __4 + bne __b3 + jmp __b4 + __b3: + // for(char i=1;i<=row-1;++i) + inc.z i + jmp __b1 +} +// Find the absolute difference between two unsigned chars +// diff(byte zp($1d) a, byte zp($18) b) +diff: { + .label a = $1d + .label b = $18 + .label return = $23 + .label return_1 = $1d + // if(a=(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 diff --git a/src/test/ref/examples/eightqueens/eightqueens-recursive.log b/src/test/ref/examples/eightqueens/eightqueens-recursive.log new file mode 100644 index 000000000..fd1a00906 --- /dev/null +++ b/src/test/ref/examples/eightqueens/eightqueens-recursive.log @@ -0,0 +1,13813 @@ +Fixing struct type size struct printf_buffer_number to 12 +Fixing struct type size struct printf_buffer_number to 12 +Fixing struct type SIZE_OF struct printf_buffer_number to 12 +Fixing struct type SIZE_OF struct printf_buffer_number to 12 +Added struct type cast to parameter value list call printf_uint (number) 8 (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } +Added struct type cast to parameter value list call printf_ulong (dword) count (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } +Added struct type cast to parameter value list call printf_uchar (byte) print::i (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) HEXADECIMAL } +Added struct type cast to parameter value list call printf_uchar (byte) print::i1 (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) HEXADECIMAL } +Created struct value member variable (byte) printf_slong::format_min_length +Created struct value member variable (byte) printf_slong::format_justify_left +Created struct value member variable (byte) printf_slong::format_sign_always +Created struct value member variable (byte) printf_slong::format_zero_padding +Created struct value member variable (byte) printf_slong::format_upper_case +Created struct value member variable (byte) printf_slong::format_radix +Converted struct value to member variables (struct printf_format_number) printf_slong::format +Created struct value member variable (byte) printf_ulong::format_min_length +Created struct value member variable (byte) printf_ulong::format_justify_left +Created struct value member variable (byte) printf_ulong::format_sign_always +Created struct value member variable (byte) printf_ulong::format_zero_padding +Created struct value member variable (byte) printf_ulong::format_upper_case +Created struct value member variable (byte) printf_ulong::format_radix +Converted struct value to member variables (struct printf_format_number) printf_ulong::format +Created struct value member variable (byte) printf_sint::format_min_length +Created struct value member variable (byte) printf_sint::format_justify_left +Created struct value member variable (byte) printf_sint::format_sign_always +Created struct value member variable (byte) printf_sint::format_zero_padding +Created struct value member variable (byte) printf_sint::format_upper_case +Created struct value member variable (byte) printf_sint::format_radix +Converted struct value to member variables (struct printf_format_number) printf_sint::format +Created struct value member variable (byte) printf_uint::format_min_length +Created struct value member variable (byte) printf_uint::format_justify_left +Created struct value member variable (byte) printf_uint::format_sign_always +Created struct value member variable (byte) printf_uint::format_zero_padding +Created struct value member variable (byte) printf_uint::format_upper_case +Created struct value member variable (byte) printf_uint::format_radix +Converted struct value to member variables (struct printf_format_number) printf_uint::format +Created struct value member variable (byte) printf_schar::format_min_length +Created struct value member variable (byte) printf_schar::format_justify_left +Created struct value member variable (byte) printf_schar::format_sign_always +Created struct value member variable (byte) printf_schar::format_zero_padding +Created struct value member variable (byte) printf_schar::format_upper_case +Created struct value member variable (byte) printf_schar::format_radix +Converted struct value to member variables (struct printf_format_number) printf_schar::format +Created struct value member variable (byte) printf_uchar::format_min_length +Created struct value member variable (byte) printf_uchar::format_justify_left +Created struct value member variable (byte) printf_uchar::format_sign_always +Created struct value member variable (byte) printf_uchar::format_zero_padding +Created struct value member variable (byte) printf_uchar::format_upper_case +Created struct value member variable (byte) printf_uchar::format_radix +Converted struct value to member variables (struct printf_format_number) printf_uchar::format +Created struct value member variable (byte) printf_number_buffer::buffer_sign +Created struct value member variable (byte*) printf_number_buffer::buffer_digits +Converted struct value to member variables (struct printf_buffer_number) printf_number_buffer::buffer +Created struct value member variable (byte) printf_number_buffer::format_min_length +Created struct value member variable (byte) printf_number_buffer::format_justify_left +Created struct value member variable (byte) printf_number_buffer::format_sign_always +Created struct value member variable (byte) printf_number_buffer::format_zero_padding +Created struct value member variable (byte) printf_number_buffer::format_upper_case +Created struct value member variable (byte) printf_number_buffer::format_radix +Converted struct value to member variables (struct printf_format_number) printf_number_buffer::format +Created struct value member variable (byte) printf_string::format_min_length +Created struct value member variable (byte) printf_string::format_justify_left +Converted struct value to member variables (struct printf_format_string) printf_string::format +Converted procedure struct value parameter to member unwinding (void()) printf_slong((signed dword) printf_slong::value , (byte) printf_slong::format_min_length , (byte) printf_slong::format_justify_left , (byte) printf_slong::format_sign_always , (byte) printf_slong::format_zero_padding , (byte) printf_slong::format_upper_case , (byte) printf_slong::format_radix) +Converted procedure struct value parameter to member unwinding (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) +Converted procedure struct value parameter to member unwinding (void()) printf_sint((signed word) printf_sint::value , (byte) printf_sint::format_min_length , (byte) printf_sint::format_justify_left , (byte) printf_sint::format_sign_always , (byte) printf_sint::format_zero_padding , (byte) printf_sint::format_upper_case , (byte) printf_sint::format_radix) +Converted procedure struct value parameter to member unwinding (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) +Converted procedure struct value parameter to member unwinding (void()) printf_schar((signed byte) printf_schar::value , (byte) printf_schar::format_min_length , (byte) printf_schar::format_justify_left , (byte) printf_schar::format_sign_always , (byte) printf_schar::format_zero_padding , (byte) printf_schar::format_upper_case , (byte) printf_schar::format_radix) +Converted procedure struct value parameter to member unwinding (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) +Converted procedure struct value parameter to member unwinding (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) +Converted procedure struct value parameter to member unwinding (void()) printf_string((byte*) printf_string::str , (byte) printf_string::format_min_length , (byte) printf_string::format_justify_left) +Converted call struct value parameter to member unwinding (void~) printf_slong::$2 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (byte) printf_slong::format_min_length (byte) printf_slong::format_justify_left (byte) printf_slong::format_sign_always (byte) printf_slong::format_zero_padding (byte) printf_slong::format_upper_case (byte) printf_slong::format_radix +Converted call struct value parameter to member unwinding (void~) printf_ulong::$4 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (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 +Converted call struct value parameter to member unwinding (void~) printf_sint::$2 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (byte) printf_sint::format_min_length (byte) printf_sint::format_justify_left (byte) printf_sint::format_sign_always (byte) printf_sint::format_zero_padding (byte) printf_sint::format_upper_case (byte) printf_sint::format_radix +Converted call struct value parameter to member unwinding (void~) printf_uint::$4 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (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 +Converted call struct value parameter to member unwinding (void~) printf_schar::$2 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (byte) printf_schar::format_min_length (byte) printf_schar::format_justify_left (byte) printf_schar::format_sign_always (byte) printf_schar::format_zero_padding (byte) printf_schar::format_upper_case (byte) printf_schar::format_radix +Converted call struct value parameter to member unwinding (void~) printf_uchar::$4 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (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 +Converted call struct value parameter to member unwinding call printf_uint (number) 8 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL +Converted call struct value parameter to member unwinding call printf_ulong (dword) count (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL +Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) HEXADECIMAL +Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i1 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) HEXADECIMAL +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_format_number) printf_slong::format.sign_always with member unwinding reference (byte) printf_slong::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_slong::format.radix with member unwinding reference (byte) printf_slong::format_radix +Replacing struct member reference (struct printf_format_number) printf_ulong::format.sign_always with member unwinding reference (byte) printf_ulong::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_ulong::format.radix with member unwinding reference (byte) printf_ulong::format_radix +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_format_number) printf_sint::format.sign_always with member unwinding reference (byte) printf_sint::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_sint::format.radix with member unwinding reference (byte) printf_sint::format_radix +Replacing struct member reference (struct printf_format_number) printf_uint::format.sign_always with member unwinding reference (byte) printf_uint::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_uint::format.radix with member unwinding reference (byte) printf_uint::format_radix +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_format_number) printf_schar::format.sign_always with member unwinding reference (byte) printf_schar::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_schar::format.radix with member unwinding reference (byte) printf_schar::format_radix +Replacing struct member reference (struct printf_format_number) printf_uchar::format.sign_always with member unwinding reference (byte) printf_uchar::format_sign_always +Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Replacing struct member reference (struct printf_buffer_number) printf_buffer.digits with member unwinding reference (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Replacing struct member reference (struct printf_format_number) printf_uchar::format.radix with member unwinding reference (byte) printf_uchar::format_radix +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.min_length with member unwinding reference (byte) printf_number_buffer::format_min_length +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.justify_left with member unwinding reference (byte) printf_number_buffer::format_justify_left +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.zero_padding with member unwinding reference (byte) printf_number_buffer::format_zero_padding +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.digits with member unwinding reference (byte*) printf_number_buffer::buffer_digits +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.sign with member unwinding reference (byte) printf_number_buffer::buffer_sign +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.min_length with member unwinding reference (byte) printf_number_buffer::format_min_length +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.sign with member unwinding reference (byte) printf_number_buffer::buffer_sign +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.zero_padding with member unwinding reference (byte) printf_number_buffer::format_zero_padding +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.sign with member unwinding reference (byte) printf_number_buffer::buffer_sign +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.upper_case with member unwinding reference (byte) printf_number_buffer::format_upper_case +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.digits with member unwinding reference (byte*) printf_number_buffer::buffer_digits +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.zero_padding with member unwinding reference (byte) printf_number_buffer::format_zero_padding +Replacing struct member reference (struct printf_format_number) printf_number_buffer::format.justify_left with member unwinding reference (byte) printf_number_buffer::format_justify_left +Replacing struct member reference (struct printf_buffer_number) printf_number_buffer::buffer.digits with member unwinding reference (byte*) printf_number_buffer::buffer_digits +Replacing struct member reference (struct printf_format_string) printf_string::format.min_length with member unwinding reference (byte) printf_string::format_min_length +Replacing struct member reference (struct printf_format_string) printf_string::format.justify_left with member unwinding reference (byte) printf_string::format_justify_left +Replacing struct member reference (struct printf_format_string) printf_string::format.min_length with member unwinding reference (byte) printf_string::format_min_length +Replacing struct member reference (struct printf_format_string) printf_string::format.justify_left with member unwinding reference (byte) printf_string::format_justify_left +Eliminating unused variable with no statement (void~) main::$1 +Eliminating unused variable with no statement (void~) main::$2 +Eliminating unused variable with no statement (void~) print::$0 +Eliminating unused variable with no statement (void~) print::$2 +Eliminating unused variable with no statement (void~) print::$4 +Eliminating unused variable with no statement (void~) print::$7 +Eliminating unused variable with no statement (void~) print::$8 +Converting PHI-variable modified inside __stackcall procedure queen() to load/store (dword) count +Calling convention STACK_CALL adding prepare/execute/finalize for call queen (number) 1 +Calling convention STACK_CALL adding prepare/execute/finalize for call queen (number~) queen::$4 +Calling convention STACK_CALL replacing param((byte) queen::row) with stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) +Calling convention STACK_CALL adding stack push stackpush(byte) ← 1 +Calling convention STACK_CALL adding stack push stackpush(byte) ← queen::$4 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 + +(byte()) toupper((byte) toupper::ch) +toupper: scope:[toupper] from strupr::@2 + (byte) toupper::ch#1 ← phi( strupr::@2/(byte) toupper::ch#0 ) + (bool~) toupper::$0 ← (byte) toupper::ch#1 >= (byte) 'a' + (bool~) toupper::$1 ← (byte) toupper::ch#1 <= (byte) 'z' + (bool~) toupper::$2 ← (bool~) toupper::$0 && (bool~) toupper::$1 + if((bool~) toupper::$2) goto toupper::@1 + to:toupper::@2 +toupper::@1: scope:[toupper] from toupper + (byte) toupper::ch#2 ← phi( toupper/(byte) toupper::ch#1 ) + (byte~) toupper::$3 ← (byte) toupper::ch#2 + (byte) 'A'-(byte) 'a' + (byte) toupper::return#0 ← (byte~) toupper::$3 + to:toupper::@return +toupper::@2: scope:[toupper] from toupper + (byte) toupper::ch#3 ← phi( toupper/(byte) toupper::ch#1 ) + (byte) toupper::return#1 ← (byte) toupper::ch#3 + to:toupper::@return +toupper::@return: scope:[toupper] from toupper::@1 toupper::@2 + (byte) toupper::return#4 ← phi( toupper::@1/(byte) toupper::return#0 toupper::@2/(byte) toupper::return#1 ) + (byte) toupper::return#2 ← (byte) toupper::return#4 + return + to:@return + +(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) +memcpy: scope:[memcpy] from printf_scroll::@1 + (word) memcpy::num#1 ← phi( printf_scroll::@1/(word) memcpy::num#0 ) + (void*) memcpy::destination#1 ← phi( printf_scroll::@1/(void*) memcpy::destination#0 ) + (void*) memcpy::source#1 ← phi( printf_scroll::@1/(void*) memcpy::source#0 ) + (byte*) memcpy::src#0 ← ((byte*)) (void*) memcpy::source#1 + (byte*) memcpy::dst#0 ← ((byte*)) (void*) memcpy::destination#1 + (byte*~) memcpy::$2 ← (byte*)(void*) memcpy::source#1 + (byte*~) memcpy::$0 ← (byte*~) memcpy::$2 + (word) memcpy::num#1 + (byte*) memcpy::src_end#0 ← (byte*~) memcpy::$0 + to:memcpy::@1 +memcpy::@1: scope:[memcpy] from memcpy memcpy::@2 + (void*) memcpy::destination#3 ← phi( memcpy/(void*) memcpy::destination#1 memcpy::@2/(void*) memcpy::destination#4 ) + (byte*) memcpy::dst#3 ← phi( memcpy/(byte*) memcpy::dst#0 memcpy::@2/(byte*) memcpy::dst#1 ) + (byte*) memcpy::src_end#1 ← phi( memcpy/(byte*) memcpy::src_end#0 memcpy::@2/(byte*) memcpy::src_end#2 ) + (byte*) memcpy::src#2 ← phi( memcpy/(byte*) memcpy::src#0 memcpy::@2/(byte*) memcpy::src#1 ) + (bool~) memcpy::$1 ← (byte*) memcpy::src#2 != (byte*) memcpy::src_end#1 + if((bool~) memcpy::$1) goto memcpy::@2 + to:memcpy::@3 +memcpy::@2: scope:[memcpy] from memcpy::@1 + (void*) memcpy::destination#4 ← phi( memcpy::@1/(void*) memcpy::destination#3 ) + (byte*) memcpy::src_end#2 ← phi( memcpy::@1/(byte*) memcpy::src_end#1 ) + (byte*) memcpy::dst#2 ← phi( memcpy::@1/(byte*) memcpy::dst#3 ) + (byte*) memcpy::src#3 ← phi( memcpy::@1/(byte*) memcpy::src#2 ) + *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#3) + (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 + (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#3 + to:memcpy::@1 +memcpy::@3: scope:[memcpy] from memcpy::@1 + (void*) memcpy::destination#2 ← phi( memcpy::@1/(void*) memcpy::destination#3 ) + (void*) memcpy::return#0 ← (void*) memcpy::destination#2 + to:memcpy::@return +memcpy::@return: scope:[memcpy] from memcpy::@3 + (void*) memcpy::return#3 ← phi( memcpy::@3/(void*) memcpy::return#0 ) + (void*) memcpy::return#1 ← (void*) memcpy::return#3 + return + to:@return + +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +memset: scope:[memset] from printf_cls printf_scroll::@2 + (byte) memset::c#5 ← phi( printf_cls/(byte) memset::c#0 printf_scroll::@2/(byte) memset::c#1 ) + (void*) memset::str#4 ← phi( printf_cls/(void*) memset::str#0 printf_scroll::@2/(void*) memset::str#1 ) + (word) memset::num#2 ← phi( printf_cls/(word) memset::num#0 printf_scroll::@2/(word) memset::num#1 ) + (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 + (bool~) memset::$1 ← ! (bool~) memset::$0 + if((bool~) memset::$1) goto memset::@1 + to:memset::@2 +memset::@1: scope:[memset] from memset memset::@3 + (void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@3/(void*) memset::str#5 ) + (void*) memset::return#0 ← (void*) memset::str#2 + to:memset::@return +memset::@2: scope:[memset] from memset + (byte) memset::c#4 ← phi( memset/(byte) memset::c#5 ) + (word) memset::num#3 ← phi( memset/(word) memset::num#2 ) + (void*) memset::str#3 ← phi( memset/(void*) memset::str#4 ) + (byte*~) memset::$4 ← (byte*)(void*) memset::str#3 + (byte*~) memset::$2 ← (byte*~) memset::$4 + (word) memset::num#3 + (byte*) memset::end#0 ← (byte*~) memset::$2 + (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3 + to:memset::@3 +memset::@3: scope:[memset] from memset::@2 memset::@4 + (byte) memset::c#3 ← phi( memset::@2/(byte) memset::c#4 memset::@4/(byte) memset::c#2 ) + (void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#6 ) + (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#2 ) + (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 ) + (bool~) memset::$3 ← (byte*) memset::dst#2 != (byte*) memset::end#1 + if((bool~) memset::$3) goto memset::@4 + to:memset::@1 +memset::@4: scope:[memset] from memset::@3 + (void*) memset::str#6 ← phi( memset::@3/(void*) memset::str#5 ) + (byte*) memset::end#2 ← phi( memset::@3/(byte*) memset::end#1 ) + (byte*) memset::dst#3 ← phi( memset::@3/(byte*) memset::dst#2 ) + (byte) memset::c#2 ← phi( memset::@3/(byte) memset::c#3 ) + *((byte*) memset::dst#3) ← (byte) memset::c#2 + (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3 + to:memset::@3 +memset::@return: scope:[memset] from memset::@1 + (void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 ) + (void*) memset::return#1 ← (void*) memset::return#4 + return + to:@return + +(byte*()) strupr((byte*) strupr::str) +strupr: scope:[strupr] from printf_number_buffer::@11 + (byte*) strupr::str#1 ← phi( printf_number_buffer::@11/(byte*) strupr::str#0 ) + (byte*) strupr::src#0 ← (byte*) strupr::str#1 + to:strupr::@1 +strupr::@1: scope:[strupr] from strupr strupr::@4 + (byte*) strupr::str#3 ← phi( strupr/(byte*) strupr::str#1 strupr::@4/(byte*) strupr::str#4 ) + (byte*) strupr::src#2 ← phi( strupr/(byte*) strupr::src#0 strupr::@4/(byte*) strupr::src#1 ) + (bool~) strupr::$1 ← (number) 0 != *((byte*) strupr::src#2) + if((bool~) strupr::$1) goto strupr::@2 + to:strupr::@3 +strupr::@2: scope:[strupr] from strupr::@1 + (byte*) strupr::str#5 ← phi( strupr::@1/(byte*) strupr::str#3 ) + (byte*) strupr::src#3 ← phi( strupr::@1/(byte*) strupr::src#2 ) + (byte) toupper::ch#0 ← *((byte*) strupr::src#3) + call toupper + (byte) toupper::return#3 ← (byte) toupper::return#2 + to:strupr::@4 +strupr::@4: scope:[strupr] from strupr::@2 + (byte*) strupr::str#4 ← phi( strupr::@2/(byte*) strupr::str#5 ) + (byte*) strupr::src#4 ← phi( strupr::@2/(byte*) strupr::src#3 ) + (byte) toupper::return#5 ← phi( strupr::@2/(byte) toupper::return#3 ) + (byte~) strupr::$0 ← (byte) toupper::return#5 + *((byte*) strupr::src#4) ← (byte~) strupr::$0 + (byte*) strupr::src#1 ← ++ (byte*) strupr::src#4 + to:strupr::@1 +strupr::@3: scope:[strupr] from strupr::@1 + (byte*) strupr::str#2 ← phi( strupr::@1/(byte*) strupr::str#3 ) + (byte*) strupr::return#0 ← (byte*) strupr::str#2 + to:strupr::@return +strupr::@return: scope:[strupr] from strupr::@3 + (byte*) strupr::return#3 ← phi( strupr::@3/(byte*) strupr::return#0 ) + (byte*) strupr::return#1 ← (byte*) strupr::return#3 + return + to:@return + +(word()) strlen((byte*) strlen::str) +strlen: scope:[strlen] from printf_number_buffer::@6 + (byte*) strlen::str#4 ← phi( printf_number_buffer::@6/(byte*) strlen::str#1 ) + (word) strlen::len#0 ← (word) 0 + to:strlen::@1 +strlen::@1: scope:[strlen] from strlen strlen::@2 + (word) strlen::len#4 ← phi( strlen/(word) strlen::len#0 strlen::@2/(word) strlen::len#1 ) + (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#4 strlen::@2/(byte*) strlen::str#0 ) + (bool~) strlen::$0 ← (number) 0 != *((byte*) strlen::str#2) + if((bool~) strlen::$0) goto strlen::@2 + to:strlen::@3 +strlen::@2: scope:[strlen] from strlen::@1 + (byte*) strlen::str#3 ← phi( strlen::@1/(byte*) strlen::str#2 ) + (word) strlen::len#2 ← phi( strlen::@1/(word) strlen::len#4 ) + (word) strlen::len#1 ← ++ (word) strlen::len#2 + (byte*) strlen::str#0 ← ++ (byte*) strlen::str#3 + to:strlen::@1 +strlen::@3: scope:[strlen] from strlen::@1 + (word) strlen::len#3 ← phi( strlen::@1/(word) strlen::len#4 ) + (word) strlen::return#0 ← (word) strlen::len#3 + to:strlen::@return +strlen::@return: scope:[strlen] from strlen::@3 + (word) strlen::return#3 ← phi( strlen::@3/(word) strlen::return#0 ) + (word) strlen::return#1 ← (word) strlen::return#3 + return + to:@return + +(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix) +uctoa: scope:[uctoa] from printf_uchar::@3 + (byte*) uctoa::buffer#21 ← phi( printf_uchar::@3/(byte*) uctoa::buffer#5 ) + (byte) uctoa::value#12 ← phi( printf_uchar::@3/(byte) uctoa::value#1 ) + (byte) uctoa::radix#1 ← phi( printf_uchar::@3/(byte) uctoa::radix#0 ) + (byte) uctoa::max_digits#0 ← (byte) 0 + (byte*) uctoa::digit_values#0 ← (byte*) 0 + (bool~) uctoa::$0 ← (byte) uctoa::radix#1 == (const byte) DECIMAL + if((bool~) uctoa::$0) goto uctoa::@1 + to:uctoa::@6 +uctoa::@1: scope:[uctoa] from uctoa + (byte*) uctoa::buffer#17 ← phi( uctoa/(byte*) uctoa::buffer#21 ) + (byte) uctoa::value#8 ← phi( uctoa/(byte) uctoa::value#12 ) + (byte) uctoa::max_digits#1 ← (number) 3 + (byte*) uctoa::digit_values#1 ← (const byte*) RADIX_DECIMAL_VALUES_CHAR + to:uctoa::@5 +uctoa::@6: scope:[uctoa] from uctoa + (byte) uctoa::value#13 ← phi( uctoa/(byte) uctoa::value#12 ) + (byte*) uctoa::buffer#16 ← phi( uctoa/(byte*) uctoa::buffer#21 ) + (byte) uctoa::radix#2 ← phi( uctoa/(byte) uctoa::radix#1 ) + (bool~) uctoa::$1 ← (byte) uctoa::radix#2 == (const byte) HEXADECIMAL + if((bool~) uctoa::$1) goto uctoa::@2 + to:uctoa::@7 +uctoa::@2: scope:[uctoa] from uctoa::@6 + (byte*) uctoa::buffer#18 ← phi( uctoa::@6/(byte*) uctoa::buffer#16 ) + (byte) uctoa::value#9 ← phi( uctoa::@6/(byte) uctoa::value#13 ) + (byte) uctoa::max_digits#2 ← (number) 2 + (byte*) uctoa::digit_values#2 ← (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + to:uctoa::@5 +uctoa::@7: scope:[uctoa] from uctoa::@6 + (byte) uctoa::value#14 ← phi( uctoa::@6/(byte) uctoa::value#13 ) + (byte*) uctoa::buffer#13 ← phi( uctoa::@6/(byte*) uctoa::buffer#16 ) + (byte) uctoa::radix#3 ← phi( uctoa::@6/(byte) uctoa::radix#2 ) + (bool~) uctoa::$2 ← (byte) uctoa::radix#3 == (const byte) OCTAL + if((bool~) uctoa::$2) goto uctoa::@3 + to:uctoa::@8 +uctoa::@3: scope:[uctoa] from uctoa::@7 + (byte*) uctoa::buffer#19 ← phi( uctoa::@7/(byte*) uctoa::buffer#13 ) + (byte) uctoa::value#10 ← phi( uctoa::@7/(byte) uctoa::value#14 ) + (byte) uctoa::max_digits#3 ← (number) 3 + (byte*) uctoa::digit_values#3 ← (const byte*) RADIX_OCTAL_VALUES_CHAR + to:uctoa::@5 +uctoa::@8: scope:[uctoa] from uctoa::@7 + (byte) uctoa::value#15 ← phi( uctoa::@7/(byte) uctoa::value#14 ) + (byte*) uctoa::buffer#10 ← phi( uctoa::@7/(byte*) uctoa::buffer#13 ) + (byte) uctoa::radix#4 ← phi( uctoa::@7/(byte) uctoa::radix#3 ) + (bool~) uctoa::$3 ← (byte) uctoa::radix#4 == (const byte) BINARY + if((bool~) uctoa::$3) goto uctoa::@4 + to:uctoa::@9 +uctoa::@4: scope:[uctoa] from uctoa::@8 + (byte*) uctoa::buffer#20 ← phi( uctoa::@8/(byte*) uctoa::buffer#10 ) + (byte) uctoa::value#11 ← phi( uctoa::@8/(byte) uctoa::value#15 ) + (byte) uctoa::max_digits#4 ← (number) 8 + (byte*) uctoa::digit_values#4 ← (const byte*) RADIX_BINARY_VALUES_CHAR + to:uctoa::@5 +uctoa::@9: scope:[uctoa] from uctoa::@8 + (byte*) uctoa::buffer#6 ← phi( uctoa::@8/(byte*) uctoa::buffer#10 ) + *((byte*) uctoa::buffer#6) ← (byte) 'e' + (byte*) uctoa::buffer#0 ← ++ (byte*) uctoa::buffer#6 + *((byte*) uctoa::buffer#0) ← (byte) 'r' + (byte*) uctoa::buffer#1 ← ++ (byte*) uctoa::buffer#0 + *((byte*) uctoa::buffer#1) ← (byte) 'r' + (byte*) uctoa::buffer#2 ← ++ (byte*) uctoa::buffer#1 + *((byte*) uctoa::buffer#2) ← (number) 0 + to:uctoa::@return +uctoa::@return: scope:[uctoa] from uctoa::@12 uctoa::@9 + return + to:@return +uctoa::@5: scope:[uctoa] from uctoa::@1 uctoa::@2 uctoa::@3 uctoa::@4 + (byte*) uctoa::buffer#15 ← phi( uctoa::@1/(byte*) uctoa::buffer#17 uctoa::@2/(byte*) uctoa::buffer#18 uctoa::@3/(byte*) uctoa::buffer#19 uctoa::@4/(byte*) uctoa::buffer#20 ) + (byte) uctoa::value#7 ← phi( uctoa::@1/(byte) uctoa::value#8 uctoa::@2/(byte) uctoa::value#9 uctoa::@3/(byte) uctoa::value#10 uctoa::@4/(byte) uctoa::value#11 ) + (byte*) uctoa::digit_values#8 ← phi( uctoa::@1/(byte*) uctoa::digit_values#1 uctoa::@2/(byte*) uctoa::digit_values#2 uctoa::@3/(byte*) uctoa::digit_values#3 uctoa::@4/(byte*) uctoa::digit_values#4 ) + (byte) uctoa::max_digits#7 ← phi( uctoa::@1/(byte) uctoa::max_digits#1 uctoa::@2/(byte) uctoa::max_digits#2 uctoa::@3/(byte) uctoa::max_digits#3 uctoa::@4/(byte) uctoa::max_digits#4 ) + (byte) uctoa::started#0 ← (byte) 0 + (byte) uctoa::digit#0 ← (byte) 0 + to:uctoa::@10 +uctoa::@10: scope:[uctoa] from uctoa::@13 uctoa::@5 + (byte*) uctoa::buffer#11 ← phi( uctoa::@13/(byte*) uctoa::buffer#14 uctoa::@5/(byte*) uctoa::buffer#15 ) + (byte) uctoa::started#3 ← phi( uctoa::@13/(byte) uctoa::started#4 uctoa::@5/(byte) uctoa::started#0 ) + (byte) uctoa::value#5 ← phi( uctoa::@13/(byte) uctoa::value#6 uctoa::@5/(byte) uctoa::value#7 ) + (byte*) uctoa::digit_values#6 ← phi( uctoa::@13/(byte*) uctoa::digit_values#7 uctoa::@5/(byte*) uctoa::digit_values#8 ) + (byte) uctoa::digit#2 ← phi( uctoa::@13/(byte) uctoa::digit#1 uctoa::@5/(byte) uctoa::digit#0 ) + (byte) uctoa::max_digits#5 ← phi( uctoa::@13/(byte) uctoa::max_digits#6 uctoa::@5/(byte) uctoa::max_digits#7 ) + (number~) uctoa::$4 ← (byte) uctoa::max_digits#5 - (number) 1 + (bool~) uctoa::$5 ← (byte) uctoa::digit#2 < (number~) uctoa::$4 + if((bool~) uctoa::$5) goto uctoa::@11 + to:uctoa::@12 +uctoa::@11: scope:[uctoa] from uctoa::@10 + (byte) uctoa::max_digits#8 ← phi( uctoa::@10/(byte) uctoa::max_digits#5 ) + (byte*) uctoa::buffer#12 ← phi( uctoa::@10/(byte*) uctoa::buffer#11 ) + (byte) uctoa::started#2 ← phi( uctoa::@10/(byte) uctoa::started#3 ) + (byte) uctoa::value#2 ← phi( uctoa::@10/(byte) uctoa::value#5 ) + (byte) uctoa::digit#3 ← phi( uctoa::@10/(byte) uctoa::digit#2 ) + (byte*) uctoa::digit_values#5 ← phi( uctoa::@10/(byte*) uctoa::digit_values#6 ) + (byte) uctoa::digit_value#0 ← *((byte*) uctoa::digit_values#5 + (byte) uctoa::digit#3) + (bool~) uctoa::$6 ← (byte) uctoa::value#2 >= (byte) uctoa::digit_value#0 + (bool~) uctoa::$7 ← (byte) uctoa::started#2 || (bool~) uctoa::$6 + (bool~) uctoa::$8 ← ! (bool~) uctoa::$7 + if((bool~) uctoa::$8) goto uctoa::@13 + to:uctoa::@14 +uctoa::@12: scope:[uctoa] from uctoa::@10 + (byte*) uctoa::buffer#7 ← phi( uctoa::@10/(byte*) uctoa::buffer#11 ) + (byte) uctoa::value#3 ← phi( uctoa::@10/(byte) uctoa::value#5 ) + (byte~) uctoa::$10 ← (byte)(byte) uctoa::value#3 + *((byte*) uctoa::buffer#7) ← *((const byte*) DIGITS + (byte~) uctoa::$10) + (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#7 + *((byte*) uctoa::buffer#3) ← (number) 0 + to:uctoa::@return +uctoa::@13: scope:[uctoa] from uctoa::@11 uctoa::@15 + (byte*) uctoa::buffer#14 ← phi( uctoa::@11/(byte*) uctoa::buffer#12 uctoa::@15/(byte*) uctoa::buffer#4 ) + (byte) uctoa::started#4 ← phi( uctoa::@11/(byte) uctoa::started#2 uctoa::@15/(byte) uctoa::started#1 ) + (byte) uctoa::value#6 ← phi( uctoa::@11/(byte) uctoa::value#2 uctoa::@15/(byte) uctoa::value#0 ) + (byte*) uctoa::digit_values#7 ← phi( uctoa::@11/(byte*) uctoa::digit_values#5 uctoa::@15/(byte*) uctoa::digit_values#9 ) + (byte) uctoa::max_digits#6 ← phi( uctoa::@11/(byte) uctoa::max_digits#8 uctoa::@15/(byte) uctoa::max_digits#9 ) + (byte) uctoa::digit#4 ← phi( uctoa::@11/(byte) uctoa::digit#3 uctoa::@15/(byte) uctoa::digit#5 ) + (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#4 + to:uctoa::@10 +uctoa::@14: scope:[uctoa] from uctoa::@11 + (byte*) uctoa::digit_values#10 ← phi( uctoa::@11/(byte*) uctoa::digit_values#5 ) + (byte) uctoa::max_digits#10 ← phi( uctoa::@11/(byte) uctoa::max_digits#8 ) + (byte) uctoa::digit#6 ← phi( uctoa::@11/(byte) uctoa::digit#3 ) + (byte) uctoa::digit_value#1 ← phi( uctoa::@11/(byte) uctoa::digit_value#0 ) + (byte) uctoa::value#4 ← phi( uctoa::@11/(byte) uctoa::value#2 ) + (byte*) uctoa::buffer#8 ← phi( uctoa::@11/(byte*) uctoa::buffer#12 ) + (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#8 + (byte) uctoa_append::value#0 ← (byte) uctoa::value#4 + (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#1 + call uctoa_append + (byte) uctoa_append::return#0 ← (byte) uctoa_append::return#2 + to:uctoa::@15 +uctoa::@15: scope:[uctoa] from uctoa::@14 + (byte*) uctoa::digit_values#9 ← phi( uctoa::@14/(byte*) uctoa::digit_values#10 ) + (byte) uctoa::max_digits#9 ← phi( uctoa::@14/(byte) uctoa::max_digits#10 ) + (byte) uctoa::digit#5 ← phi( uctoa::@14/(byte) uctoa::digit#6 ) + (byte*) uctoa::buffer#9 ← phi( uctoa::@14/(byte*) uctoa::buffer#8 ) + (byte) uctoa_append::return#3 ← phi( uctoa::@14/(byte) uctoa_append::return#0 ) + (byte~) uctoa::$9 ← (byte) uctoa_append::return#3 + (byte) uctoa::value#0 ← (byte~) uctoa::$9 + (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#9 + (byte) uctoa::started#1 ← (number) 1 + to:uctoa::@13 + +(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub) +uctoa_append: scope:[uctoa_append] from uctoa::@14 + (byte*) uctoa_append::buffer#3 ← phi( uctoa::@14/(byte*) uctoa_append::buffer#0 ) + (byte) uctoa_append::sub#3 ← phi( uctoa::@14/(byte) uctoa_append::sub#0 ) + (byte) uctoa_append::value#5 ← phi( uctoa::@14/(byte) uctoa_append::value#0 ) + (byte) uctoa_append::digit#0 ← (byte) 0 + to:uctoa_append::@1 +uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2 + (byte*) uctoa_append::buffer#2 ← phi( uctoa_append/(byte*) uctoa_append::buffer#3 uctoa_append::@2/(byte*) uctoa_append::buffer#4 ) + (byte) uctoa_append::digit#4 ← phi( uctoa_append/(byte) uctoa_append::digit#0 uctoa_append::@2/(byte) uctoa_append::digit#1 ) + (byte) uctoa_append::sub#1 ← phi( uctoa_append/(byte) uctoa_append::sub#3 uctoa_append::@2/(byte) uctoa_append::sub#2 ) + (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#5 uctoa_append::@2/(byte) uctoa_append::value#1 ) + (bool~) uctoa_append::$0 ← (byte) uctoa_append::value#2 >= (byte) uctoa_append::sub#1 + if((bool~) uctoa_append::$0) goto uctoa_append::@2 + to:uctoa_append::@3 +uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1 + (byte*) uctoa_append::buffer#4 ← phi( uctoa_append::@1/(byte*) uctoa_append::buffer#2 ) + (byte) uctoa_append::sub#2 ← phi( uctoa_append::@1/(byte) uctoa_append::sub#1 ) + (byte) uctoa_append::value#3 ← phi( uctoa_append::@1/(byte) uctoa_append::value#2 ) + (byte) uctoa_append::digit#2 ← phi( uctoa_append::@1/(byte) uctoa_append::digit#4 ) + (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 + (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#3 - (byte) uctoa_append::sub#2 + to:uctoa_append::@1 +uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1 + (byte) uctoa_append::value#4 ← phi( uctoa_append::@1/(byte) uctoa_append::value#2 ) + (byte*) uctoa_append::buffer#1 ← phi( uctoa_append::@1/(byte*) uctoa_append::buffer#2 ) + (byte) uctoa_append::digit#3 ← phi( uctoa_append::@1/(byte) uctoa_append::digit#4 ) + *((byte*) uctoa_append::buffer#1) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#3) + (byte) uctoa_append::return#1 ← (byte) uctoa_append::value#4 + to:uctoa_append::@return +uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3 + (byte) uctoa_append::return#4 ← phi( uctoa_append::@3/(byte) uctoa_append::return#1 ) + (byte) uctoa_append::return#2 ← (byte) uctoa_append::return#4 + return + to:@return + +(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) +utoa: scope:[utoa] from printf_uint::@3 + (byte*) utoa::buffer#21 ← phi( printf_uint::@3/(byte*) utoa::buffer#5 ) + (word) utoa::value#12 ← phi( printf_uint::@3/(word) utoa::value#1 ) + (byte) utoa::radix#1 ← phi( printf_uint::@3/(byte) utoa::radix#0 ) + (byte) utoa::max_digits#0 ← (byte) 0 + (word*) utoa::digit_values#0 ← (word*) 0 + (bool~) utoa::$0 ← (byte) utoa::radix#1 == (const byte) DECIMAL + if((bool~) utoa::$0) goto utoa::@1 + to:utoa::@6 +utoa::@1: scope:[utoa] from utoa + (byte*) utoa::buffer#17 ← phi( utoa/(byte*) utoa::buffer#21 ) + (word) utoa::value#8 ← phi( utoa/(word) utoa::value#12 ) + (byte) utoa::max_digits#1 ← (number) 5 + (word*) utoa::digit_values#1 ← (const word*) RADIX_DECIMAL_VALUES + to:utoa::@5 +utoa::@6: scope:[utoa] from utoa + (word) utoa::value#13 ← phi( utoa/(word) utoa::value#12 ) + (byte*) utoa::buffer#16 ← phi( utoa/(byte*) utoa::buffer#21 ) + (byte) utoa::radix#2 ← phi( utoa/(byte) utoa::radix#1 ) + (bool~) utoa::$1 ← (byte) utoa::radix#2 == (const byte) HEXADECIMAL + if((bool~) utoa::$1) goto utoa::@2 + to:utoa::@7 +utoa::@2: scope:[utoa] from utoa::@6 + (byte*) utoa::buffer#18 ← phi( utoa::@6/(byte*) utoa::buffer#16 ) + (word) utoa::value#9 ← phi( utoa::@6/(word) utoa::value#13 ) + (byte) utoa::max_digits#2 ← (number) 4 + (word*) utoa::digit_values#2 ← (const word*) RADIX_HEXADECIMAL_VALUES + to:utoa::@5 +utoa::@7: scope:[utoa] from utoa::@6 + (word) utoa::value#14 ← phi( utoa::@6/(word) utoa::value#13 ) + (byte*) utoa::buffer#13 ← phi( utoa::@6/(byte*) utoa::buffer#16 ) + (byte) utoa::radix#3 ← phi( utoa::@6/(byte) utoa::radix#2 ) + (bool~) utoa::$2 ← (byte) utoa::radix#3 == (const byte) OCTAL + if((bool~) utoa::$2) goto utoa::@3 + to:utoa::@8 +utoa::@3: scope:[utoa] from utoa::@7 + (byte*) utoa::buffer#19 ← phi( utoa::@7/(byte*) utoa::buffer#13 ) + (word) utoa::value#10 ← phi( utoa::@7/(word) utoa::value#14 ) + (byte) utoa::max_digits#3 ← (number) 6 + (word*) utoa::digit_values#3 ← (const word*) RADIX_OCTAL_VALUES + to:utoa::@5 +utoa::@8: scope:[utoa] from utoa::@7 + (word) utoa::value#15 ← phi( utoa::@7/(word) utoa::value#14 ) + (byte*) utoa::buffer#10 ← phi( utoa::@7/(byte*) utoa::buffer#13 ) + (byte) utoa::radix#4 ← phi( utoa::@7/(byte) utoa::radix#3 ) + (bool~) utoa::$3 ← (byte) utoa::radix#4 == (const byte) BINARY + if((bool~) utoa::$3) goto utoa::@4 + to:utoa::@9 +utoa::@4: scope:[utoa] from utoa::@8 + (byte*) utoa::buffer#20 ← phi( utoa::@8/(byte*) utoa::buffer#10 ) + (word) utoa::value#11 ← phi( utoa::@8/(word) utoa::value#15 ) + (byte) utoa::max_digits#4 ← (number) $10 + (word*) utoa::digit_values#4 ← (const word*) RADIX_BINARY_VALUES + to:utoa::@5 +utoa::@9: scope:[utoa] from utoa::@8 + (byte*) utoa::buffer#6 ← phi( utoa::@8/(byte*) utoa::buffer#10 ) + *((byte*) utoa::buffer#6) ← (byte) 'e' + (byte*) utoa::buffer#0 ← ++ (byte*) utoa::buffer#6 + *((byte*) utoa::buffer#0) ← (byte) 'r' + (byte*) utoa::buffer#1 ← ++ (byte*) utoa::buffer#0 + *((byte*) utoa::buffer#1) ← (byte) 'r' + (byte*) utoa::buffer#2 ← ++ (byte*) utoa::buffer#1 + *((byte*) utoa::buffer#2) ← (number) 0 + to:utoa::@return +utoa::@return: scope:[utoa] from utoa::@12 utoa::@9 + return + to:@return +utoa::@5: scope:[utoa] from utoa::@1 utoa::@2 utoa::@3 utoa::@4 + (byte*) utoa::buffer#15 ← phi( utoa::@1/(byte*) utoa::buffer#17 utoa::@2/(byte*) utoa::buffer#18 utoa::@3/(byte*) utoa::buffer#19 utoa::@4/(byte*) utoa::buffer#20 ) + (word) utoa::value#7 ← phi( utoa::@1/(word) utoa::value#8 utoa::@2/(word) utoa::value#9 utoa::@3/(word) utoa::value#10 utoa::@4/(word) utoa::value#11 ) + (word*) utoa::digit_values#8 ← phi( utoa::@1/(word*) utoa::digit_values#1 utoa::@2/(word*) utoa::digit_values#2 utoa::@3/(word*) utoa::digit_values#3 utoa::@4/(word*) utoa::digit_values#4 ) + (byte) utoa::max_digits#7 ← phi( utoa::@1/(byte) utoa::max_digits#1 utoa::@2/(byte) utoa::max_digits#2 utoa::@3/(byte) utoa::max_digits#3 utoa::@4/(byte) utoa::max_digits#4 ) + (byte) utoa::started#0 ← (byte) 0 + (byte) utoa::digit#0 ← (byte) 0 + to:utoa::@10 +utoa::@10: scope:[utoa] from utoa::@13 utoa::@5 + (byte*) utoa::buffer#11 ← phi( utoa::@13/(byte*) utoa::buffer#14 utoa::@5/(byte*) utoa::buffer#15 ) + (byte) utoa::started#3 ← phi( utoa::@13/(byte) utoa::started#4 utoa::@5/(byte) utoa::started#0 ) + (word) utoa::value#5 ← phi( utoa::@13/(word) utoa::value#6 utoa::@5/(word) utoa::value#7 ) + (word*) utoa::digit_values#6 ← phi( utoa::@13/(word*) utoa::digit_values#7 utoa::@5/(word*) utoa::digit_values#8 ) + (byte) utoa::digit#2 ← phi( utoa::@13/(byte) utoa::digit#1 utoa::@5/(byte) utoa::digit#0 ) + (byte) utoa::max_digits#5 ← phi( utoa::@13/(byte) utoa::max_digits#6 utoa::@5/(byte) utoa::max_digits#7 ) + (number~) utoa::$4 ← (byte) utoa::max_digits#5 - (number) 1 + (bool~) utoa::$5 ← (byte) utoa::digit#2 < (number~) utoa::$4 + if((bool~) utoa::$5) goto utoa::@11 + to:utoa::@12 +utoa::@11: scope:[utoa] from utoa::@10 + (byte) utoa::max_digits#8 ← phi( utoa::@10/(byte) utoa::max_digits#5 ) + (byte*) utoa::buffer#12 ← phi( utoa::@10/(byte*) utoa::buffer#11 ) + (byte) utoa::started#2 ← phi( utoa::@10/(byte) utoa::started#3 ) + (word) utoa::value#2 ← phi( utoa::@10/(word) utoa::value#5 ) + (word*) utoa::digit_values#5 ← phi( utoa::@10/(word*) utoa::digit_values#6 ) + (byte) utoa::digit#3 ← phi( utoa::@10/(byte) utoa::digit#2 ) + (byte~) utoa::$10 ← (byte) utoa::digit#3 * (const byte) SIZEOF_WORD + (word) utoa::digit_value#0 ← *((word*) utoa::digit_values#5 + (byte~) utoa::$10) + (bool~) utoa::$6 ← (word) utoa::value#2 >= (word) utoa::digit_value#0 + (bool~) utoa::$7 ← (byte) utoa::started#2 || (bool~) utoa::$6 + (bool~) utoa::$8 ← ! (bool~) utoa::$7 + if((bool~) utoa::$8) goto utoa::@13 + to:utoa::@14 +utoa::@12: scope:[utoa] from utoa::@10 + (byte*) utoa::buffer#7 ← phi( utoa::@10/(byte*) utoa::buffer#11 ) + (word) utoa::value#3 ← phi( utoa::@10/(word) utoa::value#5 ) + (byte~) utoa::$11 ← (byte)(word) utoa::value#3 + *((byte*) utoa::buffer#7) ← *((const byte*) DIGITS + (byte~) utoa::$11) + (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#7 + *((byte*) utoa::buffer#3) ← (number) 0 + to:utoa::@return +utoa::@13: scope:[utoa] from utoa::@11 utoa::@15 + (byte*) utoa::buffer#14 ← phi( utoa::@11/(byte*) utoa::buffer#12 utoa::@15/(byte*) utoa::buffer#4 ) + (byte) utoa::started#4 ← phi( utoa::@11/(byte) utoa::started#2 utoa::@15/(byte) utoa::started#1 ) + (word) utoa::value#6 ← phi( utoa::@11/(word) utoa::value#2 utoa::@15/(word) utoa::value#0 ) + (word*) utoa::digit_values#7 ← phi( utoa::@11/(word*) utoa::digit_values#5 utoa::@15/(word*) utoa::digit_values#9 ) + (byte) utoa::max_digits#6 ← phi( utoa::@11/(byte) utoa::max_digits#8 utoa::@15/(byte) utoa::max_digits#9 ) + (byte) utoa::digit#4 ← phi( utoa::@11/(byte) utoa::digit#3 utoa::@15/(byte) utoa::digit#5 ) + (byte) utoa::digit#1 ← ++ (byte) utoa::digit#4 + to:utoa::@10 +utoa::@14: scope:[utoa] from utoa::@11 + (word*) utoa::digit_values#10 ← phi( utoa::@11/(word*) utoa::digit_values#5 ) + (byte) utoa::max_digits#10 ← phi( utoa::@11/(byte) utoa::max_digits#8 ) + (byte) utoa::digit#6 ← phi( utoa::@11/(byte) utoa::digit#3 ) + (word) utoa::digit_value#1 ← phi( utoa::@11/(word) utoa::digit_value#0 ) + (word) utoa::value#4 ← phi( utoa::@11/(word) utoa::value#2 ) + (byte*) utoa::buffer#8 ← phi( utoa::@11/(byte*) utoa::buffer#12 ) + (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#8 + (word) utoa_append::value#0 ← (word) utoa::value#4 + (word) utoa_append::sub#0 ← (word) utoa::digit_value#1 + call utoa_append + (word) utoa_append::return#0 ← (word) utoa_append::return#2 + to:utoa::@15 +utoa::@15: scope:[utoa] from utoa::@14 + (word*) utoa::digit_values#9 ← phi( utoa::@14/(word*) utoa::digit_values#10 ) + (byte) utoa::max_digits#9 ← phi( utoa::@14/(byte) utoa::max_digits#10 ) + (byte) utoa::digit#5 ← phi( utoa::@14/(byte) utoa::digit#6 ) + (byte*) utoa::buffer#9 ← phi( utoa::@14/(byte*) utoa::buffer#8 ) + (word) utoa_append::return#3 ← phi( utoa::@14/(word) utoa_append::return#0 ) + (word~) utoa::$9 ← (word) utoa_append::return#3 + (word) utoa::value#0 ← (word~) utoa::$9 + (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#9 + (byte) utoa::started#1 ← (number) 1 + to:utoa::@13 + +(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) +utoa_append: scope:[utoa_append] from utoa::@14 + (byte*) utoa_append::buffer#3 ← phi( utoa::@14/(byte*) utoa_append::buffer#0 ) + (word) utoa_append::sub#3 ← phi( utoa::@14/(word) utoa_append::sub#0 ) + (word) utoa_append::value#5 ← phi( utoa::@14/(word) utoa_append::value#0 ) + (byte) utoa_append::digit#0 ← (byte) 0 + to:utoa_append::@1 +utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2 + (byte*) utoa_append::buffer#2 ← phi( utoa_append/(byte*) utoa_append::buffer#3 utoa_append::@2/(byte*) utoa_append::buffer#4 ) + (byte) utoa_append::digit#4 ← phi( utoa_append/(byte) utoa_append::digit#0 utoa_append::@2/(byte) utoa_append::digit#1 ) + (word) utoa_append::sub#1 ← phi( utoa_append/(word) utoa_append::sub#3 utoa_append::@2/(word) utoa_append::sub#2 ) + (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#5 utoa_append::@2/(word) utoa_append::value#1 ) + (bool~) utoa_append::$0 ← (word) utoa_append::value#2 >= (word) utoa_append::sub#1 + if((bool~) utoa_append::$0) goto utoa_append::@2 + to:utoa_append::@3 +utoa_append::@2: scope:[utoa_append] from utoa_append::@1 + (byte*) utoa_append::buffer#4 ← phi( utoa_append::@1/(byte*) utoa_append::buffer#2 ) + (word) utoa_append::sub#2 ← phi( utoa_append::@1/(word) utoa_append::sub#1 ) + (word) utoa_append::value#3 ← phi( utoa_append::@1/(word) utoa_append::value#2 ) + (byte) utoa_append::digit#2 ← phi( utoa_append::@1/(byte) utoa_append::digit#4 ) + (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 + (word) utoa_append::value#1 ← (word) utoa_append::value#3 - (word) utoa_append::sub#2 + to:utoa_append::@1 +utoa_append::@3: scope:[utoa_append] from utoa_append::@1 + (word) utoa_append::value#4 ← phi( utoa_append::@1/(word) utoa_append::value#2 ) + (byte*) utoa_append::buffer#1 ← phi( utoa_append::@1/(byte*) utoa_append::buffer#2 ) + (byte) utoa_append::digit#3 ← phi( utoa_append::@1/(byte) utoa_append::digit#4 ) + *((byte*) utoa_append::buffer#1) ← *((const byte*) DIGITS + (byte) utoa_append::digit#3) + (word) utoa_append::return#1 ← (word) utoa_append::value#4 + to:utoa_append::@return +utoa_append::@return: scope:[utoa_append] from utoa_append::@3 + (word) utoa_append::return#4 ← phi( utoa_append::@3/(word) utoa_append::return#1 ) + (word) utoa_append::return#2 ← (word) utoa_append::return#4 + return + to:@return + +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +ultoa: scope:[ultoa] from printf_ulong::@3 + (byte*) ultoa::buffer#21 ← phi( printf_ulong::@3/(byte*) ultoa::buffer#5 ) + (dword) ultoa::value#12 ← phi( printf_ulong::@3/(dword) ultoa::value#1 ) + (byte) ultoa::radix#1 ← phi( printf_ulong::@3/(byte) ultoa::radix#0 ) + (byte) ultoa::max_digits#0 ← (byte) 0 + (dword*) ultoa::digit_values#0 ← (dword*) 0 + (bool~) ultoa::$0 ← (byte) ultoa::radix#1 == (const byte) DECIMAL + if((bool~) ultoa::$0) goto ultoa::@1 + to:ultoa::@6 +ultoa::@1: scope:[ultoa] from ultoa + (byte*) ultoa::buffer#17 ← phi( ultoa/(byte*) ultoa::buffer#21 ) + (dword) ultoa::value#8 ← phi( ultoa/(dword) ultoa::value#12 ) + (byte) ultoa::max_digits#1 ← (number) $a + (dword*) ultoa::digit_values#1 ← (const dword*) RADIX_DECIMAL_VALUES_LONG + to:ultoa::@5 +ultoa::@6: scope:[ultoa] from ultoa + (dword) ultoa::value#13 ← phi( ultoa/(dword) ultoa::value#12 ) + (byte*) ultoa::buffer#16 ← phi( ultoa/(byte*) ultoa::buffer#21 ) + (byte) ultoa::radix#2 ← phi( ultoa/(byte) ultoa::radix#1 ) + (bool~) ultoa::$1 ← (byte) ultoa::radix#2 == (const byte) HEXADECIMAL + if((bool~) ultoa::$1) goto ultoa::@2 + to:ultoa::@7 +ultoa::@2: scope:[ultoa] from ultoa::@6 + (byte*) ultoa::buffer#18 ← phi( ultoa::@6/(byte*) ultoa::buffer#16 ) + (dword) ultoa::value#9 ← phi( ultoa::@6/(dword) ultoa::value#13 ) + (byte) ultoa::max_digits#2 ← (number) 8 + (dword*) ultoa::digit_values#2 ← (const dword*) RADIX_HEXADECIMAL_VALUES_LONG + to:ultoa::@5 +ultoa::@7: scope:[ultoa] from ultoa::@6 + (dword) ultoa::value#14 ← phi( ultoa::@6/(dword) ultoa::value#13 ) + (byte*) ultoa::buffer#13 ← phi( ultoa::@6/(byte*) ultoa::buffer#16 ) + (byte) ultoa::radix#3 ← phi( ultoa::@6/(byte) ultoa::radix#2 ) + (bool~) ultoa::$2 ← (byte) ultoa::radix#3 == (const byte) OCTAL + if((bool~) ultoa::$2) goto ultoa::@3 + to:ultoa::@8 +ultoa::@3: scope:[ultoa] from ultoa::@7 + (byte*) ultoa::buffer#19 ← phi( ultoa::@7/(byte*) ultoa::buffer#13 ) + (dword) ultoa::value#10 ← phi( ultoa::@7/(dword) ultoa::value#14 ) + (byte) ultoa::max_digits#3 ← (number) $b + (dword*) ultoa::digit_values#3 ← (const dword*) RADIX_OCTAL_VALUES_LONG + to:ultoa::@5 +ultoa::@8: scope:[ultoa] from ultoa::@7 + (dword) ultoa::value#15 ← phi( ultoa::@7/(dword) ultoa::value#14 ) + (byte*) ultoa::buffer#10 ← phi( ultoa::@7/(byte*) ultoa::buffer#13 ) + (byte) ultoa::radix#4 ← phi( ultoa::@7/(byte) ultoa::radix#3 ) + (bool~) ultoa::$3 ← (byte) ultoa::radix#4 == (const byte) BINARY + if((bool~) ultoa::$3) goto ultoa::@4 + to:ultoa::@9 +ultoa::@4: scope:[ultoa] from ultoa::@8 + (byte*) ultoa::buffer#20 ← phi( ultoa::@8/(byte*) ultoa::buffer#10 ) + (dword) ultoa::value#11 ← phi( ultoa::@8/(dword) ultoa::value#15 ) + (byte) ultoa::max_digits#4 ← (number) $20 + (dword*) ultoa::digit_values#4 ← (const dword*) RADIX_BINARY_VALUES_LONG + to:ultoa::@5 +ultoa::@9: scope:[ultoa] from ultoa::@8 + (byte*) ultoa::buffer#6 ← phi( ultoa::@8/(byte*) ultoa::buffer#10 ) + *((byte*) ultoa::buffer#6) ← (byte) 'e' + (byte*) ultoa::buffer#0 ← ++ (byte*) ultoa::buffer#6 + *((byte*) ultoa::buffer#0) ← (byte) 'r' + (byte*) ultoa::buffer#1 ← ++ (byte*) ultoa::buffer#0 + *((byte*) ultoa::buffer#1) ← (byte) 'r' + (byte*) ultoa::buffer#2 ← ++ (byte*) ultoa::buffer#1 + *((byte*) ultoa::buffer#2) ← (number) 0 + to:ultoa::@return +ultoa::@return: scope:[ultoa] from ultoa::@12 ultoa::@9 + return + to:@return +ultoa::@5: scope:[ultoa] from ultoa::@1 ultoa::@2 ultoa::@3 ultoa::@4 + (byte*) ultoa::buffer#15 ← phi( ultoa::@1/(byte*) ultoa::buffer#17 ultoa::@2/(byte*) ultoa::buffer#18 ultoa::@3/(byte*) ultoa::buffer#19 ultoa::@4/(byte*) ultoa::buffer#20 ) + (dword) ultoa::value#7 ← phi( ultoa::@1/(dword) ultoa::value#8 ultoa::@2/(dword) ultoa::value#9 ultoa::@3/(dword) ultoa::value#10 ultoa::@4/(dword) ultoa::value#11 ) + (dword*) ultoa::digit_values#8 ← phi( ultoa::@1/(dword*) ultoa::digit_values#1 ultoa::@2/(dword*) ultoa::digit_values#2 ultoa::@3/(dword*) ultoa::digit_values#3 ultoa::@4/(dword*) ultoa::digit_values#4 ) + (byte) ultoa::max_digits#7 ← phi( ultoa::@1/(byte) ultoa::max_digits#1 ultoa::@2/(byte) ultoa::max_digits#2 ultoa::@3/(byte) ultoa::max_digits#3 ultoa::@4/(byte) ultoa::max_digits#4 ) + (byte) ultoa::started#0 ← (byte) 0 + (byte) ultoa::digit#0 ← (byte) 0 + to:ultoa::@10 +ultoa::@10: scope:[ultoa] from ultoa::@13 ultoa::@5 + (byte*) ultoa::buffer#11 ← phi( ultoa::@13/(byte*) ultoa::buffer#14 ultoa::@5/(byte*) ultoa::buffer#15 ) + (byte) ultoa::started#3 ← phi( ultoa::@13/(byte) ultoa::started#4 ultoa::@5/(byte) ultoa::started#0 ) + (dword) ultoa::value#5 ← phi( ultoa::@13/(dword) ultoa::value#6 ultoa::@5/(dword) ultoa::value#7 ) + (dword*) ultoa::digit_values#6 ← phi( ultoa::@13/(dword*) ultoa::digit_values#7 ultoa::@5/(dword*) ultoa::digit_values#8 ) + (byte) ultoa::digit#2 ← phi( ultoa::@13/(byte) ultoa::digit#1 ultoa::@5/(byte) ultoa::digit#0 ) + (byte) ultoa::max_digits#5 ← phi( ultoa::@13/(byte) ultoa::max_digits#6 ultoa::@5/(byte) ultoa::max_digits#7 ) + (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (number) 1 + (bool~) ultoa::$5 ← (byte) ultoa::digit#2 < (number~) ultoa::$4 + if((bool~) ultoa::$5) goto ultoa::@11 + to:ultoa::@12 +ultoa::@11: scope:[ultoa] from ultoa::@10 + (byte) ultoa::max_digits#8 ← phi( ultoa::@10/(byte) ultoa::max_digits#5 ) + (byte*) ultoa::buffer#12 ← phi( ultoa::@10/(byte*) ultoa::buffer#11 ) + (byte) ultoa::started#2 ← phi( ultoa::@10/(byte) ultoa::started#3 ) + (dword) ultoa::value#2 ← phi( ultoa::@10/(dword) ultoa::value#5 ) + (dword*) ultoa::digit_values#5 ← phi( ultoa::@10/(dword*) ultoa::digit_values#6 ) + (byte) ultoa::digit#3 ← phi( ultoa::@10/(byte) ultoa::digit#2 ) + (byte~) ultoa::$10 ← (byte) ultoa::digit#3 * (const byte) SIZEOF_DWORD + (dword) ultoa::digit_value#0 ← *((dword*) ultoa::digit_values#5 + (byte~) ultoa::$10) + (bool~) ultoa::$6 ← (dword) ultoa::value#2 >= (dword) ultoa::digit_value#0 + (bool~) ultoa::$7 ← (byte) ultoa::started#2 || (bool~) ultoa::$6 + (bool~) ultoa::$8 ← ! (bool~) ultoa::$7 + if((bool~) ultoa::$8) goto ultoa::@13 + to:ultoa::@14 +ultoa::@12: scope:[ultoa] from ultoa::@10 + (byte*) ultoa::buffer#7 ← phi( ultoa::@10/(byte*) ultoa::buffer#11 ) + (dword) ultoa::value#3 ← phi( ultoa::@10/(dword) ultoa::value#5 ) + (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#3 + *((byte*) ultoa::buffer#7) ← *((const byte*) DIGITS + (byte~) ultoa::$11) + (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#7 + *((byte*) ultoa::buffer#3) ← (number) 0 + to:ultoa::@return +ultoa::@13: scope:[ultoa] from ultoa::@11 ultoa::@15 + (byte*) ultoa::buffer#14 ← phi( ultoa::@11/(byte*) ultoa::buffer#12 ultoa::@15/(byte*) ultoa::buffer#4 ) + (byte) ultoa::started#4 ← phi( ultoa::@11/(byte) ultoa::started#2 ultoa::@15/(byte) ultoa::started#1 ) + (dword) ultoa::value#6 ← phi( ultoa::@11/(dword) ultoa::value#2 ultoa::@15/(dword) ultoa::value#0 ) + (dword*) ultoa::digit_values#7 ← phi( ultoa::@11/(dword*) ultoa::digit_values#5 ultoa::@15/(dword*) ultoa::digit_values#9 ) + (byte) ultoa::max_digits#6 ← phi( ultoa::@11/(byte) ultoa::max_digits#8 ultoa::@15/(byte) ultoa::max_digits#9 ) + (byte) ultoa::digit#4 ← phi( ultoa::@11/(byte) ultoa::digit#3 ultoa::@15/(byte) ultoa::digit#5 ) + (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#4 + to:ultoa::@10 +ultoa::@14: scope:[ultoa] from ultoa::@11 + (dword*) ultoa::digit_values#10 ← phi( ultoa::@11/(dword*) ultoa::digit_values#5 ) + (byte) ultoa::max_digits#10 ← phi( ultoa::@11/(byte) ultoa::max_digits#8 ) + (byte) ultoa::digit#6 ← phi( ultoa::@11/(byte) ultoa::digit#3 ) + (dword) ultoa::digit_value#1 ← phi( ultoa::@11/(dword) ultoa::digit_value#0 ) + (dword) ultoa::value#4 ← phi( ultoa::@11/(dword) ultoa::value#2 ) + (byte*) ultoa::buffer#8 ← phi( ultoa::@11/(byte*) ultoa::buffer#12 ) + (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#8 + (dword) ultoa_append::value#0 ← (dword) ultoa::value#4 + (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#1 + call ultoa_append + (dword) ultoa_append::return#0 ← (dword) ultoa_append::return#2 + to:ultoa::@15 +ultoa::@15: scope:[ultoa] from ultoa::@14 + (dword*) ultoa::digit_values#9 ← phi( ultoa::@14/(dword*) ultoa::digit_values#10 ) + (byte) ultoa::max_digits#9 ← phi( ultoa::@14/(byte) ultoa::max_digits#10 ) + (byte) ultoa::digit#5 ← phi( ultoa::@14/(byte) ultoa::digit#6 ) + (byte*) ultoa::buffer#9 ← phi( ultoa::@14/(byte*) ultoa::buffer#8 ) + (dword) ultoa_append::return#3 ← phi( ultoa::@14/(dword) ultoa_append::return#0 ) + (dword~) ultoa::$9 ← (dword) ultoa_append::return#3 + (dword) ultoa::value#0 ← (dword~) ultoa::$9 + (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#9 + (byte) ultoa::started#1 ← (number) 1 + to:ultoa::@13 + +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +ultoa_append: scope:[ultoa_append] from ultoa::@14 + (byte*) ultoa_append::buffer#3 ← phi( ultoa::@14/(byte*) ultoa_append::buffer#0 ) + (dword) ultoa_append::sub#3 ← phi( ultoa::@14/(dword) ultoa_append::sub#0 ) + (dword) ultoa_append::value#5 ← phi( ultoa::@14/(dword) ultoa_append::value#0 ) + (byte) ultoa_append::digit#0 ← (byte) 0 + to:ultoa_append::@1 +ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2 + (byte*) ultoa_append::buffer#2 ← phi( ultoa_append/(byte*) ultoa_append::buffer#3 ultoa_append::@2/(byte*) ultoa_append::buffer#4 ) + (byte) ultoa_append::digit#4 ← phi( ultoa_append/(byte) ultoa_append::digit#0 ultoa_append::@2/(byte) ultoa_append::digit#1 ) + (dword) ultoa_append::sub#1 ← phi( ultoa_append/(dword) ultoa_append::sub#3 ultoa_append::@2/(dword) ultoa_append::sub#2 ) + (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#5 ultoa_append::@2/(dword) ultoa_append::value#1 ) + (bool~) ultoa_append::$0 ← (dword) ultoa_append::value#2 >= (dword) ultoa_append::sub#1 + if((bool~) ultoa_append::$0) goto ultoa_append::@2 + to:ultoa_append::@3 +ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1 + (byte*) ultoa_append::buffer#4 ← phi( ultoa_append::@1/(byte*) ultoa_append::buffer#2 ) + (dword) ultoa_append::sub#2 ← phi( ultoa_append::@1/(dword) ultoa_append::sub#1 ) + (dword) ultoa_append::value#3 ← phi( ultoa_append::@1/(dword) ultoa_append::value#2 ) + (byte) ultoa_append::digit#2 ← phi( ultoa_append::@1/(byte) ultoa_append::digit#4 ) + (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 + (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#3 - (dword) ultoa_append::sub#2 + to:ultoa_append::@1 +ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1 + (dword) ultoa_append::value#4 ← phi( ultoa_append::@1/(dword) ultoa_append::value#2 ) + (byte*) ultoa_append::buffer#1 ← phi( ultoa_append::@1/(byte*) ultoa_append::buffer#2 ) + (byte) ultoa_append::digit#3 ← phi( ultoa_append::@1/(byte) ultoa_append::digit#4 ) + *((byte*) ultoa_append::buffer#1) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#3) + (dword) ultoa_append::return#1 ← (dword) ultoa_append::value#4 + to:ultoa_append::@return +ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3 + (dword) ultoa_append::return#4 ← phi( ultoa_append::@3/(dword) ultoa_append::return#1 ) + (dword) ultoa_append::return#2 ← (dword) ultoa_append::return#4 + return + to:@return +@1: scope:[] from @begin + (byte) printf_cursor_x ← (byte) 0 + (byte) printf_cursor_y ← (byte) 0 + (byte*) printf_cursor_ptr ← (byte*)(number) $400 + to:@2 + +(void()) printf_cls() +printf_cls: scope:[printf_cls] from main + (void*) memset::str#0 ← (void*)(number) $400 + (byte) memset::c#0 ← (byte) ' ' + (word) memset::num#0 ← (number) $28*(number) $19 + call memset + (void*) memset::return#2 ← (void*) memset::return#1 + to:printf_cls::@1 +printf_cls::@1: scope:[printf_cls] from printf_cls + (byte*) printf_cursor_ptr ← ((byte*)) (number) $400 + (byte) printf_cursor_x ← (number) 0 + (byte) printf_cursor_y ← (number) 0 + to:printf_cls::@return +printf_cls::@return: scope:[printf_cls] from printf_cls::@1 + return + to:@return + +(void()) printf_char((byte) printf_char::ch) +printf_char: scope:[printf_char] from printf_number_buffer::@9 printf_padding::@2 printf_str::@5 + (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 ) + *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 + (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr + (byte) printf_cursor_x ← ++ (byte) printf_cursor_x + (bool~) printf_char::$0 ← (byte) printf_cursor_x == (number) $28 + (bool~) printf_char::$1 ← ! (bool~) printf_char::$0 + if((bool~) printf_char::$1) goto printf_char::@return + to:printf_char::@1 +printf_char::@1: scope:[printf_char] from printf_char + (byte) printf_cursor_x ← (number) 0 + (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + call printf_scroll + to:printf_char::@2 +printf_char::@2: scope:[printf_char] from printf_char::@1 + to:printf_char::@return +printf_char::@return: scope:[printf_char] from printf_char printf_char::@2 + return + to:@return + +(void()) printf_ln() +printf_ln: scope:[printf_ln] from printf_str::@4 + (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x + (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (number) $28 + (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + (byte) printf_cursor_x ← (number) 0 + (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + call printf_scroll + to:printf_ln::@1 +printf_ln::@1: scope:[printf_ln] from printf_ln + to:printf_ln::@return +printf_ln::@return: scope:[printf_ln] from printf_ln::@1 + return + to:@return + +(void()) printf_scroll() +printf_scroll: scope:[printf_scroll] from printf_char::@1 printf_ln + (bool~) printf_scroll::$0 ← (byte) printf_cursor_y == (number) $19 + (bool~) printf_scroll::$1 ← ! (bool~) printf_scroll::$0 + if((bool~) printf_scroll::$1) goto printf_scroll::@return + to:printf_scroll::@1 +printf_scroll::@1: scope:[printf_scroll] from printf_scroll + (void*) memcpy::destination#0 ← (void*)(number) $400 + (void*) memcpy::source#0 ← (void*)(number) $400+(number) $28 + (word) memcpy::num#0 ← (number) $28*(number) $19-(number) $28 + call memcpy + (void*) memcpy::return#2 ← (void*) memcpy::return#1 + to:printf_scroll::@2 +printf_scroll::@2: scope:[printf_scroll] from printf_scroll::@1 + (void*) memset::str#1 ← (void*)(number) $400+(number) $28*(number) $19-(number) $28 + (byte) memset::c#1 ← (byte) ' ' + (word) memset::num#1 ← (number) $28 + call memset + (void*) memset::return#3 ← (void*) memset::return#1 + to:printf_scroll::@3 +printf_scroll::@3: scope:[printf_scroll] from printf_scroll::@2 + (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (number) $28 + (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + (byte) printf_cursor_y ← -- (byte) printf_cursor_y + to:printf_scroll::@return +printf_scroll::@return: scope:[printf_scroll] from printf_scroll printf_scroll::@3 + 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 + (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) printf_padding::pad#1 printf_number_buffer::@12/(byte) printf_padding::pad#2 printf_number_buffer::@8/(byte) printf_padding::pad#0 ) + (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 ) + (byte) printf_padding::i#0 ← (byte) 0 + to:printf_padding::@1 +printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3 + (byte) printf_padding::pad#4 ← phi( printf_padding/(byte) printf_padding::pad#5 printf_padding::@3/(byte) printf_padding::pad#6 ) + (byte) printf_padding::length#3 ← phi( printf_padding/(byte) printf_padding::length#4 printf_padding::@3/(byte) printf_padding::length#5 ) + (byte) printf_padding::i#2 ← phi( printf_padding/(byte) printf_padding::i#0 printf_padding::@3/(byte) printf_padding::i#1 ) + (bool~) printf_padding::$0 ← (byte) printf_padding::i#2 < (byte) printf_padding::length#3 + if((bool~) printf_padding::$0) goto printf_padding::@2 + to:printf_padding::@return +printf_padding::@2: scope:[printf_padding] from printf_padding::@1 + (byte) printf_padding::length#6 ← phi( printf_padding::@1/(byte) printf_padding::length#3 ) + (byte) printf_padding::i#4 ← phi( printf_padding::@1/(byte) printf_padding::i#2 ) + (byte) printf_padding::pad#3 ← phi( printf_padding::@1/(byte) printf_padding::pad#4 ) + (byte) printf_char::ch#0 ← (byte) printf_padding::pad#3 + call printf_char + to:printf_padding::@3 +printf_padding::@3: scope:[printf_padding] from printf_padding::@2 + (byte) printf_padding::pad#6 ← phi( printf_padding::@2/(byte) printf_padding::pad#3 ) + (byte) printf_padding::length#5 ← phi( printf_padding::@2/(byte) printf_padding::length#6 ) + (byte) printf_padding::i#3 ← phi( printf_padding::@2/(byte) printf_padding::i#4 ) + (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#3 + to:printf_padding::@1 +printf_padding::@return: scope:[printf_padding] from printf_padding::@1 + return + to:@return + +(void()) printf_str((byte*) printf_str::str) +printf_str: scope:[printf_str] from main::@1 main::@2 print print::@11 print::@13 print::@5 print::@9 printf_number_buffer::@5 + (byte*) printf_str::str#11 ← phi( main::@1/(byte*) printf_str::str#2 main::@2/(byte*) printf_str::str#3 print/(byte*) printf_str::str#4 print::@11/(byte*) printf_str::str#8 print::@13/(byte*) printf_str::str#5 print::@5/(byte*) printf_str::str#6 print::@9/(byte*) printf_str::str#7 printf_number_buffer::@5/(byte*) printf_str::str#1 ) + to:printf_str::@1 +printf_str::@1: scope:[printf_str] from printf_str printf_str::@6 printf_str::@7 + (byte*) printf_str::str#10 ← phi( printf_str/(byte*) printf_str::str#11 printf_str::@6/(byte*) printf_str::str#12 printf_str::@7/(byte*) printf_str::str#13 ) + if(true) goto printf_str::@2 + to:printf_str::@return +printf_str::@2: scope:[printf_str] from printf_str::@1 + (byte*) printf_str::str#9 ← phi( printf_str::@1/(byte*) printf_str::str#10 ) + (byte) printf_str::ch#0 ← *((byte*) printf_str::str#9) + (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#9 + (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (number) 0 + (bool~) printf_str::$1 ← ! (bool~) printf_str::$0 + if((bool~) printf_str::$1) goto printf_str::@3 + to:printf_str::@return +printf_str::@3: scope:[printf_str] from printf_str::@2 + (byte*) printf_str::str#16 ← phi( printf_str::@2/(byte*) printf_str::str#0 ) + (byte) printf_str::ch#1 ← phi( printf_str::@2/(byte) printf_str::ch#0 ) + (bool~) printf_str::$2 ← (byte) printf_str::ch#1 == (byte) ' +' + if((bool~) printf_str::$2) goto printf_str::@4 + to:printf_str::@5 +printf_str::@4: scope:[printf_str] from printf_str::@3 + (byte*) printf_str::str#14 ← phi( printf_str::@3/(byte*) printf_str::str#16 ) + call printf_ln + to:printf_str::@6 +printf_str::@6: scope:[printf_str] from printf_str::@4 + (byte*) printf_str::str#12 ← phi( printf_str::@4/(byte*) printf_str::str#14 ) + to:printf_str::@1 +printf_str::@5: scope:[printf_str] from printf_str::@3 + (byte*) printf_str::str#15 ← phi( printf_str::@3/(byte*) printf_str::str#16 ) + (byte) printf_str::ch#2 ← phi( printf_str::@3/(byte) printf_str::ch#1 ) + (byte) printf_char::ch#1 ← (byte) printf_str::ch#2 + call printf_char + to:printf_str::@7 +printf_str::@7: scope:[printf_str] from printf_str::@5 + (byte*) printf_str::str#13 ← phi( printf_str::@5/(byte*) printf_str::str#15 ) + to:printf_str::@1 +printf_str::@return: scope:[printf_str] from printf_str::@1 printf_str::@2 + return + to:@return + +(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::@12 + (byte) printf_ulong::format_upper_case#5 ← phi( print::@12/(byte) printf_ulong::format_upper_case#0 ) + (byte) printf_ulong::format_zero_padding#5 ← phi( print::@12/(byte) printf_ulong::format_zero_padding#0 ) + (byte) printf_ulong::format_justify_left#5 ← phi( print::@12/(byte) printf_ulong::format_justify_left#0 ) + (byte) printf_ulong::format_min_length#5 ← phi( print::@12/(byte) printf_ulong::format_min_length#0 ) + (byte) printf_ulong::format_radix#5 ← phi( print::@12/(byte) printf_ulong::format_radix#0 ) + (dword) printf_ulong::uvalue#4 ← phi( print::@12/(dword) printf_ulong::uvalue#0 ) + (byte) printf_ulong::format_sign_always#1 ← phi( print::@12/(byte) printf_ulong::format_sign_always#0 ) + (bool~) printf_ulong::$5 ← (number) 0 != (byte) printf_ulong::format_sign_always#1 + if((bool~) printf_ulong::$5) goto printf_ulong::@1 + to:printf_ulong::@2 +printf_ulong::@1: scope:[printf_ulong] from printf_ulong + (byte) printf_ulong::format_upper_case#3 ← phi( printf_ulong/(byte) printf_ulong::format_upper_case#5 ) + (byte) printf_ulong::format_zero_padding#3 ← phi( printf_ulong/(byte) printf_ulong::format_zero_padding#5 ) + (byte) printf_ulong::format_sign_always#4 ← phi( printf_ulong/(byte) printf_ulong::format_sign_always#1 ) + (byte) printf_ulong::format_justify_left#3 ← phi( printf_ulong/(byte) printf_ulong::format_justify_left#5 ) + (byte) printf_ulong::format_min_length#3 ← phi( printf_ulong/(byte) printf_ulong::format_min_length#5 ) + (byte) printf_ulong::format_radix#3 ← phi( printf_ulong/(byte) printf_ulong::format_radix#5 ) + (dword) printf_ulong::uvalue#2 ← phi( printf_ulong/(dword) printf_ulong::uvalue#4 ) + (byte~) printf_ulong::$1 ← (byte) '+' + to:printf_ulong::@3 +printf_ulong::@2: scope:[printf_ulong] from printf_ulong + (byte) printf_ulong::format_upper_case#4 ← phi( printf_ulong/(byte) printf_ulong::format_upper_case#5 ) + (byte) printf_ulong::format_zero_padding#4 ← phi( printf_ulong/(byte) printf_ulong::format_zero_padding#5 ) + (byte) printf_ulong::format_sign_always#5 ← phi( printf_ulong/(byte) printf_ulong::format_sign_always#1 ) + (byte) printf_ulong::format_justify_left#4 ← phi( printf_ulong/(byte) printf_ulong::format_justify_left#5 ) + (byte) printf_ulong::format_min_length#4 ← phi( printf_ulong/(byte) printf_ulong::format_min_length#5 ) + (byte) printf_ulong::format_radix#4 ← phi( printf_ulong/(byte) printf_ulong::format_radix#5 ) + (dword) printf_ulong::uvalue#3 ← phi( printf_ulong/(dword) printf_ulong::uvalue#4 ) + (number~) printf_ulong::$0 ← (number) 0 + to:printf_ulong::@3 +printf_ulong::@3: scope:[printf_ulong] from printf_ulong::@1 printf_ulong::@2 + (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (number~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) + *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (number~) printf_ulong::$2 + (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#1 + (byte*) ultoa::buffer#5 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) ultoa::radix#0 ← (byte) printf_ulong::format_radix#1 + call ultoa + to:printf_ulong::@4 +printf_ulong::@4: scope:[printf_ulong] from printf_ulong::@3 + (byte) printf_ulong::format_radix#2 ← phi( printf_ulong::@3/(byte) printf_ulong::format_radix#1 ) + (byte) printf_ulong::format_upper_case#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_upper_case#2 ) + (byte) printf_ulong::format_zero_padding#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_zero_padding#2 ) + (byte) printf_ulong::format_sign_always#2 ← phi( printf_ulong::@3/(byte) printf_ulong::format_sign_always#3 ) + (byte) printf_ulong::format_justify_left#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_justify_left#2 ) + (byte) printf_ulong::format_min_length#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_min_length#2 ) + (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#0 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#0 ← (byte) printf_ulong::format_min_length#1 + (byte) printf_number_buffer::format_justify_left#0 ← (byte) printf_ulong::format_justify_left#1 + (byte) printf_number_buffer::format_sign_always#0 ← (byte) printf_ulong::format_sign_always#2 + (byte) printf_number_buffer::format_zero_padding#0 ← (byte) printf_ulong::format_zero_padding#1 + (byte) printf_number_buffer::format_upper_case#0 ← (byte) printf_ulong::format_upper_case#1 + (byte) printf_number_buffer::format_radix#0 ← (byte) printf_ulong::format_radix#2 + call printf_number_buffer + to:printf_ulong::@5 +printf_ulong::@5: scope:[printf_ulong] from printf_ulong::@4 + to:printf_ulong::@return +printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@5 + 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 + (byte) printf_uint::format_upper_case#5 ← phi( main::@3/(byte) printf_uint::format_upper_case#0 ) + (byte) printf_uint::format_zero_padding#5 ← phi( main::@3/(byte) printf_uint::format_zero_padding#0 ) + (byte) printf_uint::format_justify_left#5 ← phi( main::@3/(byte) printf_uint::format_justify_left#0 ) + (byte) printf_uint::format_min_length#5 ← phi( main::@3/(byte) printf_uint::format_min_length#0 ) + (byte) printf_uint::format_radix#5 ← phi( main::@3/(byte) printf_uint::format_radix#0 ) + (word) printf_uint::uvalue#4 ← phi( main::@3/(word) printf_uint::uvalue#0 ) + (byte) printf_uint::format_sign_always#1 ← phi( main::@3/(byte) printf_uint::format_sign_always#0 ) + (bool~) printf_uint::$5 ← (number) 0 != (byte) printf_uint::format_sign_always#1 + if((bool~) printf_uint::$5) goto printf_uint::@1 + to:printf_uint::@2 +printf_uint::@1: scope:[printf_uint] from printf_uint + (byte) printf_uint::format_upper_case#3 ← phi( printf_uint/(byte) printf_uint::format_upper_case#5 ) + (byte) printf_uint::format_zero_padding#3 ← phi( printf_uint/(byte) printf_uint::format_zero_padding#5 ) + (byte) printf_uint::format_sign_always#4 ← phi( printf_uint/(byte) printf_uint::format_sign_always#1 ) + (byte) printf_uint::format_justify_left#3 ← phi( printf_uint/(byte) printf_uint::format_justify_left#5 ) + (byte) printf_uint::format_min_length#3 ← phi( printf_uint/(byte) printf_uint::format_min_length#5 ) + (byte) printf_uint::format_radix#3 ← phi( printf_uint/(byte) printf_uint::format_radix#5 ) + (word) printf_uint::uvalue#2 ← phi( printf_uint/(word) printf_uint::uvalue#4 ) + (byte~) printf_uint::$1 ← (byte) '+' + to:printf_uint::@3 +printf_uint::@2: scope:[printf_uint] from printf_uint + (byte) printf_uint::format_upper_case#4 ← phi( printf_uint/(byte) printf_uint::format_upper_case#5 ) + (byte) printf_uint::format_zero_padding#4 ← phi( printf_uint/(byte) printf_uint::format_zero_padding#5 ) + (byte) printf_uint::format_sign_always#5 ← phi( printf_uint/(byte) printf_uint::format_sign_always#1 ) + (byte) printf_uint::format_justify_left#4 ← phi( printf_uint/(byte) printf_uint::format_justify_left#5 ) + (byte) printf_uint::format_min_length#4 ← phi( printf_uint/(byte) printf_uint::format_min_length#5 ) + (byte) printf_uint::format_radix#4 ← phi( printf_uint/(byte) printf_uint::format_radix#5 ) + (word) printf_uint::uvalue#3 ← phi( printf_uint/(word) printf_uint::uvalue#4 ) + (number~) printf_uint::$0 ← (number) 0 + to:printf_uint::@3 +printf_uint::@3: scope:[printf_uint] from printf_uint::@1 printf_uint::@2 + (byte) printf_uint::format_upper_case#2 ← phi( printf_uint::@1/(byte) printf_uint::format_upper_case#3 printf_uint::@2/(byte) printf_uint::format_upper_case#4 ) + (byte) printf_uint::format_zero_padding#2 ← phi( printf_uint::@1/(byte) printf_uint::format_zero_padding#3 printf_uint::@2/(byte) printf_uint::format_zero_padding#4 ) + (byte) printf_uint::format_sign_always#3 ← phi( printf_uint::@1/(byte) printf_uint::format_sign_always#4 printf_uint::@2/(byte) printf_uint::format_sign_always#5 ) + (byte) printf_uint::format_justify_left#2 ← phi( printf_uint::@1/(byte) printf_uint::format_justify_left#3 printf_uint::@2/(byte) printf_uint::format_justify_left#4 ) + (byte) printf_uint::format_min_length#2 ← phi( printf_uint::@1/(byte) printf_uint::format_min_length#3 printf_uint::@2/(byte) printf_uint::format_min_length#4 ) + (byte) printf_uint::format_radix#1 ← phi( printf_uint::@1/(byte) printf_uint::format_radix#3 printf_uint::@2/(byte) printf_uint::format_radix#4 ) + (word) printf_uint::uvalue#1 ← phi( printf_uint::@1/(word) printf_uint::uvalue#2 printf_uint::@2/(word) printf_uint::uvalue#3 ) + (number~) printf_uint::$2 ← phi( printf_uint::@1/(byte~) printf_uint::$1 printf_uint::@2/(number~) printf_uint::$0 ) + *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (number~) printf_uint::$2 + (word) utoa::value#1 ← (word) printf_uint::uvalue#1 + (byte*) utoa::buffer#5 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) utoa::radix#0 ← (byte) printf_uint::format_radix#1 + call utoa + to:printf_uint::@4 +printf_uint::@4: scope:[printf_uint] from printf_uint::@3 + (byte) printf_uint::format_radix#2 ← phi( printf_uint::@3/(byte) printf_uint::format_radix#1 ) + (byte) printf_uint::format_upper_case#1 ← phi( printf_uint::@3/(byte) printf_uint::format_upper_case#2 ) + (byte) printf_uint::format_zero_padding#1 ← phi( printf_uint::@3/(byte) printf_uint::format_zero_padding#2 ) + (byte) printf_uint::format_sign_always#2 ← phi( printf_uint::@3/(byte) printf_uint::format_sign_always#3 ) + (byte) printf_uint::format_justify_left#1 ← phi( printf_uint::@3/(byte) printf_uint::format_justify_left#2 ) + (byte) printf_uint::format_min_length#1 ← phi( printf_uint::@3/(byte) printf_uint::format_min_length#2 ) + (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#1 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#1 ← (byte) printf_uint::format_min_length#1 + (byte) printf_number_buffer::format_justify_left#1 ← (byte) printf_uint::format_justify_left#1 + (byte) printf_number_buffer::format_sign_always#1 ← (byte) printf_uint::format_sign_always#2 + (byte) printf_number_buffer::format_zero_padding#1 ← (byte) printf_uint::format_zero_padding#1 + (byte) printf_number_buffer::format_upper_case#1 ← (byte) printf_uint::format_upper_case#1 + (byte) printf_number_buffer::format_radix#1 ← (byte) printf_uint::format_radix#2 + call printf_number_buffer + to:printf_uint::@5 +printf_uint::@5: scope:[printf_uint] from printf_uint::@4 + to:printf_uint::@return +printf_uint::@return: scope:[printf_uint] from printf_uint::@5 + return + to:@return + +(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::@16 print::@2 + (byte) printf_uchar::format_upper_case#6 ← phi( print::@16/(byte) printf_uchar::format_upper_case#1 print::@2/(byte) printf_uchar::format_upper_case#0 ) + (byte) printf_uchar::format_zero_padding#6 ← phi( print::@16/(byte) printf_uchar::format_zero_padding#1 print::@2/(byte) printf_uchar::format_zero_padding#0 ) + (byte) printf_uchar::format_justify_left#6 ← phi( print::@16/(byte) printf_uchar::format_justify_left#1 print::@2/(byte) printf_uchar::format_justify_left#0 ) + (byte) printf_uchar::format_min_length#6 ← phi( print::@16/(byte) printf_uchar::format_min_length#1 print::@2/(byte) printf_uchar::format_min_length#0 ) + (byte) printf_uchar::format_radix#6 ← phi( print::@16/(byte) printf_uchar::format_radix#1 print::@2/(byte) printf_uchar::format_radix#0 ) + (byte) printf_uchar::uvalue#5 ← phi( print::@16/(byte) printf_uchar::uvalue#1 print::@2/(byte) printf_uchar::uvalue#0 ) + (byte) printf_uchar::format_sign_always#2 ← phi( print::@16/(byte) printf_uchar::format_sign_always#1 print::@2/(byte) printf_uchar::format_sign_always#0 ) + (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#2 + if((bool~) printf_uchar::$5) goto printf_uchar::@1 + to:printf_uchar::@2 +printf_uchar::@1: scope:[printf_uchar] from printf_uchar + (byte) printf_uchar::format_upper_case#4 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#6 ) + (byte) printf_uchar::format_zero_padding#4 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#6 ) + (byte) printf_uchar::format_sign_always#5 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#2 ) + (byte) printf_uchar::format_justify_left#4 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#6 ) + (byte) printf_uchar::format_min_length#4 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#6 ) + (byte) printf_uchar::format_radix#4 ← phi( printf_uchar/(byte) printf_uchar::format_radix#6 ) + (byte) printf_uchar::uvalue#3 ← phi( printf_uchar/(byte) printf_uchar::uvalue#5 ) + (byte~) printf_uchar::$1 ← (byte) '+' + to:printf_uchar::@3 +printf_uchar::@2: scope:[printf_uchar] from printf_uchar + (byte) printf_uchar::format_upper_case#5 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#6 ) + (byte) printf_uchar::format_zero_padding#5 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#6 ) + (byte) printf_uchar::format_sign_always#6 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#2 ) + (byte) printf_uchar::format_justify_left#5 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#6 ) + (byte) printf_uchar::format_min_length#5 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#6 ) + (byte) printf_uchar::format_radix#5 ← phi( printf_uchar/(byte) printf_uchar::format_radix#6 ) + (byte) printf_uchar::uvalue#4 ← phi( printf_uchar/(byte) printf_uchar::uvalue#5 ) + (number~) printf_uchar::$0 ← (number) 0 + to:printf_uchar::@3 +printf_uchar::@3: scope:[printf_uchar] from printf_uchar::@1 printf_uchar::@2 + (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) + (number~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) + *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (number~) printf_uchar::$2 + (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 + (byte*) uctoa::buffer#5 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) uctoa::radix#0 ← (byte) printf_uchar::format_radix#2 + call uctoa + to:printf_uchar::@4 +printf_uchar::@4: scope:[printf_uchar] from printf_uchar::@3 + (byte) printf_uchar::format_radix#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_radix#2 ) + (byte) printf_uchar::format_upper_case#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_upper_case#3 ) + (byte) printf_uchar::format_zero_padding#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_zero_padding#3 ) + (byte) printf_uchar::format_sign_always#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_sign_always#4 ) + (byte) printf_uchar::format_justify_left#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_justify_left#3 ) + (byte) printf_uchar::format_min_length#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_min_length#3 ) + (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#2 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#2 ← (byte) printf_uchar::format_min_length#2 + (byte) printf_number_buffer::format_justify_left#2 ← (byte) printf_uchar::format_justify_left#2 + (byte) printf_number_buffer::format_sign_always#2 ← (byte) printf_uchar::format_sign_always#3 + (byte) printf_number_buffer::format_zero_padding#2 ← (byte) printf_uchar::format_zero_padding#2 + (byte) printf_number_buffer::format_upper_case#2 ← (byte) printf_uchar::format_upper_case#2 + (byte) printf_number_buffer::format_radix#2 ← (byte) printf_uchar::format_radix#3 + call printf_number_buffer + to:printf_uchar::@5 +printf_uchar::@5: scope:[printf_uchar] from printf_uchar::@4 + to:printf_uchar::@return +printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@5 + 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::@4 printf_uint::@4 printf_ulong::@4 + (byte) printf_number_buffer::format_upper_case#12 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_upper_case#2 printf_uint::@4/(byte) printf_number_buffer::format_upper_case#1 printf_ulong::@4/(byte) printf_number_buffer::format_upper_case#0 ) + (byte) printf_number_buffer::buffer_sign#9 ← phi( printf_uchar::@4/(byte) printf_number_buffer::buffer_sign#2 printf_uint::@4/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@4/(byte) printf_number_buffer::buffer_sign#0 ) + (byte*) printf_number_buffer::buffer_digits#6 ← phi( printf_uchar::@4/(byte*) printf_number_buffer::buffer_digits#2 printf_uint::@4/(byte*) printf_number_buffer::buffer_digits#1 printf_ulong::@4/(byte*) printf_number_buffer::buffer_digits#0 ) + (byte) printf_number_buffer::format_zero_padding#6 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_zero_padding#2 printf_uint::@4/(byte) printf_number_buffer::format_zero_padding#1 printf_ulong::@4/(byte) printf_number_buffer::format_zero_padding#0 ) + (byte) printf_number_buffer::format_justify_left#5 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_justify_left#2 printf_uint::@4/(byte) printf_number_buffer::format_justify_left#1 printf_ulong::@4/(byte) printf_number_buffer::format_justify_left#0 ) + (byte) printf_number_buffer::format_min_length#3 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_min_length#2 printf_uint::@4/(byte) printf_number_buffer::format_min_length#1 printf_ulong::@4/(byte) printf_number_buffer::format_min_length#0 ) + (signed byte) printf_number_buffer::padding#0 ← (signed byte) 0 + (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#3 + (bool~) printf_number_buffer::$0 ← ! (bool~) printf_number_buffer::$26 + if((bool~) printf_number_buffer::$0) goto printf_number_buffer::@1 + to:printf_number_buffer::@6 +printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@14 + (byte*) printf_number_buffer::buffer_digits#14 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#6 printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#17 printf_number_buffer::@14/(byte*) printf_number_buffer::buffer_digits#18 ) + (byte) printf_number_buffer::format_upper_case#9 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#12 printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#13 printf_number_buffer::@14/(byte) printf_number_buffer::format_upper_case#14 ) + (byte) printf_number_buffer::buffer_sign#7 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#9 printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#10 printf_number_buffer::@14/(byte) printf_number_buffer::buffer_sign#11 ) + (signed byte) printf_number_buffer::padding#3 ← phi( printf_number_buffer/(signed byte) printf_number_buffer::padding#0 printf_number_buffer::@13/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@14/(signed byte) printf_number_buffer::padding#2 ) + (byte) printf_number_buffer::format_zero_padding#3 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#6 printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#7 printf_number_buffer::@14/(byte) printf_number_buffer::format_zero_padding#8 ) + (byte) printf_number_buffer::format_justify_left#3 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#5 printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#6 printf_number_buffer::@14/(byte) printf_number_buffer::format_justify_left#7 ) + (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#3 + (bool~) printf_number_buffer::$1 ← ! (bool~) printf_number_buffer::$27 + (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#3 + (bool~) printf_number_buffer::$2 ← ! (bool~) printf_number_buffer::$28 + (bool~) printf_number_buffer::$3 ← (bool~) printf_number_buffer::$1 && (bool~) printf_number_buffer::$2 + (bool~) printf_number_buffer::$4 ← (bool~) printf_number_buffer::$3 && (signed byte) printf_number_buffer::padding#3 + (bool~) printf_number_buffer::$5 ← ! (bool~) printf_number_buffer::$4 + if((bool~) printf_number_buffer::$5) goto printf_number_buffer::@2 + to:printf_number_buffer::@8 +printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer + (byte) printf_number_buffer::format_upper_case#18 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#12 ) + (byte) printf_number_buffer::format_zero_padding#18 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#6 ) + (byte) printf_number_buffer::format_justify_left#13 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#5 ) + (byte) printf_number_buffer::format_min_length#7 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_min_length#3 ) + (byte) printf_number_buffer::buffer_sign#6 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#9 ) + (byte*) printf_number_buffer::buffer_digits#3 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#6 ) + (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#3 + call strlen + (word) strlen::return#2 ← (word) strlen::return#1 + to:printf_number_buffer::@15 +printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@6 + (byte*) printf_number_buffer::buffer_digits#20 ← phi( printf_number_buffer::@6/(byte*) printf_number_buffer::buffer_digits#3 ) + (byte) printf_number_buffer::format_upper_case#16 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_upper_case#18 ) + (byte) printf_number_buffer::format_zero_padding#12 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_zero_padding#18 ) + (byte) printf_number_buffer::format_justify_left#9 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_justify_left#13 ) + (byte) printf_number_buffer::format_min_length#5 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_min_length#7 ) + (byte) printf_number_buffer::buffer_sign#3 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::buffer_sign#6 ) + (word) strlen::return#4 ← phi( printf_number_buffer::@6/(word) strlen::return#2 ) + (word~) printf_number_buffer::$19 ← (word) strlen::return#4 + (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 + (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 + (bool~) printf_number_buffer::$20 ← ! (bool~) printf_number_buffer::$29 + if((bool~) printf_number_buffer::$20) goto printf_number_buffer::@13 + to:printf_number_buffer::@7 +printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@15 printf_number_buffer::@7 + (byte*) printf_number_buffer::buffer_digits#17 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#20 printf_number_buffer::@7/(byte*) printf_number_buffer::buffer_digits#21 ) + (byte) printf_number_buffer::format_upper_case#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#16 printf_number_buffer::@7/(byte) printf_number_buffer::format_upper_case#17 ) + (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#3 printf_number_buffer::@7/(byte) printf_number_buffer::buffer_sign#13 ) + (byte) printf_number_buffer::format_zero_padding#7 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#12 printf_number_buffer::@7/(byte) printf_number_buffer::format_zero_padding#13 ) + (byte) printf_number_buffer::format_justify_left#6 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#9 printf_number_buffer::@7/(byte) printf_number_buffer::format_justify_left#10 ) + (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@15/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 ) + (byte) printf_number_buffer::format_min_length#4 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#5 printf_number_buffer::@7/(byte) printf_number_buffer::format_min_length#6 ) + (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#4 + (signed byte~) printf_number_buffer::$21 ← (signed byte~) printf_number_buffer::$25 - (signed byte) printf_number_buffer::len#2 + (signed byte) printf_number_buffer::padding#1 ← (signed byte~) printf_number_buffer::$21 + (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (number) 0 + (bool~) printf_number_buffer::$23 ← ! (bool~) printf_number_buffer::$22 + if((bool~) printf_number_buffer::$23) goto printf_number_buffer::@1 + to:printf_number_buffer::@14 +printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@15 + (byte*) printf_number_buffer::buffer_digits#21 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#20 ) + (byte) printf_number_buffer::format_upper_case#17 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#16 ) + (byte) printf_number_buffer::buffer_sign#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#3 ) + (byte) printf_number_buffer::format_zero_padding#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#12 ) + (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#9 ) + (byte) printf_number_buffer::format_min_length#6 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#5 ) + (signed byte) printf_number_buffer::len#3 ← phi( printf_number_buffer::@15/(signed byte) printf_number_buffer::len#0 ) + (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#3 + to:printf_number_buffer::@13 +printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@13 + (byte*) printf_number_buffer::buffer_digits#18 ← phi( printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#17 ) + (byte) printf_number_buffer::format_upper_case#14 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#13 ) + (byte) printf_number_buffer::buffer_sign#11 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#10 ) + (byte) printf_number_buffer::format_zero_padding#8 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#7 ) + (byte) printf_number_buffer::format_justify_left#7 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#6 ) + (signed byte) printf_number_buffer::padding#2 ← (number) 0 + to:printf_number_buffer::@1 +printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 + (byte) printf_number_buffer::format_justify_left#18 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#3 printf_number_buffer::@16/(byte) printf_number_buffer::format_justify_left#20 ) + (byte*) printf_number_buffer::buffer_digits#12 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#14 printf_number_buffer::@16/(byte*) printf_number_buffer::buffer_digits#15 ) + (byte) printf_number_buffer::format_upper_case#7 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#9 printf_number_buffer::@16/(byte) printf_number_buffer::format_upper_case#10 ) + (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer::@1/(signed byte) printf_number_buffer::padding#3 printf_number_buffer::@16/(signed byte) printf_number_buffer::padding#12 ) + (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#3 printf_number_buffer::@16/(byte) printf_number_buffer::format_zero_padding#14 ) + (byte) printf_number_buffer::buffer_sign#4 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#7 printf_number_buffer::@16/(byte) printf_number_buffer::buffer_sign#8 ) + (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#4 + (bool~) printf_number_buffer::$7 ← ! (bool~) printf_number_buffer::$30 + if((bool~) printf_number_buffer::$7) goto printf_number_buffer::@3 + to:printf_number_buffer::@9 +printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@1 + (byte) printf_number_buffer::format_justify_left#22 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#3 ) + (byte*) printf_number_buffer::buffer_digits#19 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#14 ) + (byte) printf_number_buffer::format_upper_case#15 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#9 ) + (byte) printf_number_buffer::format_zero_padding#19 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#3 ) + (byte) printf_number_buffer::buffer_sign#12 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#7 ) + (signed byte) printf_number_buffer::padding#4 ← phi( printf_number_buffer::@1/(signed byte) printf_number_buffer::padding#3 ) + (byte) printf_padding::pad#0 ← (byte) ' ' + (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#4 + call printf_padding + to:printf_number_buffer::@16 +printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@8 + (byte) printf_number_buffer::format_justify_left#20 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_justify_left#22 ) + (byte*) printf_number_buffer::buffer_digits#15 ← phi( printf_number_buffer::@8/(byte*) printf_number_buffer::buffer_digits#19 ) + (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_upper_case#15 ) + (signed byte) printf_number_buffer::padding#12 ← phi( printf_number_buffer::@8/(signed byte) printf_number_buffer::padding#4 ) + (byte) printf_number_buffer::format_zero_padding#14 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_zero_padding#19 ) + (byte) printf_number_buffer::buffer_sign#8 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::buffer_sign#12 ) + to:printf_number_buffer::@2 +printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@17 printf_number_buffer::@2 + (byte) printf_number_buffer::format_justify_left#15 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_justify_left#17 printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#18 ) + (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_number_buffer::@17/(byte*) printf_number_buffer::buffer_digits#11 printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#12 ) + (byte) printf_number_buffer::format_upper_case#5 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_upper_case#6 printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#7 ) + (signed byte) printf_number_buffer::padding#5 ← phi( printf_number_buffer::@17/(signed byte) printf_number_buffer::padding#9 printf_number_buffer::@2/(signed byte) printf_number_buffer::padding#10 ) + (byte) printf_number_buffer::format_zero_padding#4 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_zero_padding#9 printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#10 ) + (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#4 && (signed byte) printf_number_buffer::padding#5 + (bool~) printf_number_buffer::$10 ← ! (bool~) printf_number_buffer::$9 + if((bool~) printf_number_buffer::$10) goto printf_number_buffer::@4 + to:printf_number_buffer::@10 +printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2 + (byte) printf_number_buffer::format_justify_left#21 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#18 ) + (byte*) printf_number_buffer::buffer_digits#16 ← phi( printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#12 ) + (byte) printf_number_buffer::format_upper_case#11 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#7 ) + (signed byte) printf_number_buffer::padding#13 ← phi( printf_number_buffer::@2/(signed byte) printf_number_buffer::padding#10 ) + (byte) printf_number_buffer::format_zero_padding#15 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#10 ) + (byte) printf_number_buffer::buffer_sign#5 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::buffer_sign#4 ) + (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#5 + call printf_char + to:printf_number_buffer::@17 +printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@9 + (byte) printf_number_buffer::format_justify_left#17 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_justify_left#21 ) + (byte*) printf_number_buffer::buffer_digits#11 ← phi( printf_number_buffer::@9/(byte*) printf_number_buffer::buffer_digits#16 ) + (byte) printf_number_buffer::format_upper_case#6 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_upper_case#11 ) + (signed byte) printf_number_buffer::padding#9 ← phi( printf_number_buffer::@9/(signed byte) printf_number_buffer::padding#13 ) + (byte) printf_number_buffer::format_zero_padding#9 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_zero_padding#15 ) + to:printf_number_buffer::@3 +printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@18 printf_number_buffer::@3 + (signed byte) printf_number_buffer::padding#15 ← phi( printf_number_buffer::@18/(signed byte) printf_number_buffer::padding#16 printf_number_buffer::@3/(signed byte) printf_number_buffer::padding#5 ) + (byte) printf_number_buffer::format_justify_left#12 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_justify_left#14 printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#15 ) + (byte) printf_number_buffer::format_zero_padding#17 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_zero_padding#20 printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#4 ) + (byte*) printf_number_buffer::buffer_digits#8 ← phi( printf_number_buffer::@18/(byte*) printf_number_buffer::buffer_digits#9 printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#10 ) + (byte) printf_number_buffer::format_upper_case#3 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_upper_case#4 printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#5 ) + (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#3 + (bool~) printf_number_buffer::$12 ← ! (bool~) printf_number_buffer::$31 + if((bool~) printf_number_buffer::$12) goto printf_number_buffer::@5 + to:printf_number_buffer::@11 +printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@3 + (byte) printf_number_buffer::format_justify_left#19 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#15 ) + (byte) printf_number_buffer::format_zero_padding#22 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#4 ) + (byte*) printf_number_buffer::buffer_digits#13 ← phi( printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#10 ) + (byte) printf_number_buffer::format_upper_case#8 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#5 ) + (signed byte) printf_number_buffer::padding#6 ← phi( printf_number_buffer::@3/(signed byte) printf_number_buffer::padding#5 ) + (byte) printf_padding::pad#1 ← (byte) '0' + (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#6 + call printf_padding + to:printf_number_buffer::@18 +printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@10 + (signed byte) printf_number_buffer::padding#16 ← phi( printf_number_buffer::@10/(signed byte) printf_number_buffer::padding#6 ) + (byte) printf_number_buffer::format_justify_left#14 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_justify_left#19 ) + (byte) printf_number_buffer::format_zero_padding#20 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_zero_padding#22 ) + (byte*) printf_number_buffer::buffer_digits#9 ← phi( printf_number_buffer::@10/(byte*) printf_number_buffer::buffer_digits#13 ) + (byte) printf_number_buffer::format_upper_case#4 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_upper_case#8 ) + to:printf_number_buffer::@4 +printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@20 printf_number_buffer::@4 + (signed byte) printf_number_buffer::padding#11 ← phi( printf_number_buffer::@20/(signed byte) printf_number_buffer::padding#14 printf_number_buffer::@4/(signed byte) printf_number_buffer::padding#15 ) + (byte) printf_number_buffer::format_justify_left#8 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_justify_left#11 printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#12 ) + (byte) printf_number_buffer::format_zero_padding#11 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_zero_padding#16 printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#17 ) + (byte*) printf_number_buffer::buffer_digits#4 ← phi( printf_number_buffer::@20/(byte*) printf_number_buffer::buffer_digits#7 printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#8 ) + (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#4 + call printf_str + to:printf_number_buffer::@19 +printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@5 + (signed byte) printf_number_buffer::padding#7 ← phi( printf_number_buffer::@5/(signed byte) printf_number_buffer::padding#11 ) + (byte) printf_number_buffer::format_justify_left#4 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_justify_left#8 ) + (byte) printf_number_buffer::format_zero_padding#5 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_zero_padding#11 ) + (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#5 + (bool~) printf_number_buffer::$14 ← ! (bool~) printf_number_buffer::$32 + (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#4 && (bool~) printf_number_buffer::$14 + (bool~) printf_number_buffer::$16 ← (bool~) printf_number_buffer::$15 && (signed byte) printf_number_buffer::padding#7 + (bool~) printf_number_buffer::$17 ← ! (bool~) printf_number_buffer::$16 + if((bool~) printf_number_buffer::$17) goto printf_number_buffer::@return + to:printf_number_buffer::@12 +printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4 + (signed byte) printf_number_buffer::padding#17 ← phi( printf_number_buffer::@4/(signed byte) printf_number_buffer::padding#15 ) + (byte) printf_number_buffer::format_justify_left#16 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#12 ) + (byte) printf_number_buffer::format_zero_padding#21 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#17 ) + (byte*) printf_number_buffer::buffer_digits#5 ← phi( printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#8 ) + (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#5 + call strupr + (byte*) strupr::return#2 ← (byte*) strupr::return#1 + to:printf_number_buffer::@20 +printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@11 + (signed byte) printf_number_buffer::padding#14 ← phi( printf_number_buffer::@11/(signed byte) printf_number_buffer::padding#17 ) + (byte) printf_number_buffer::format_justify_left#11 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_justify_left#16 ) + (byte) printf_number_buffer::format_zero_padding#16 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_zero_padding#21 ) + (byte*) printf_number_buffer::buffer_digits#7 ← phi( printf_number_buffer::@11/(byte*) printf_number_buffer::buffer_digits#5 ) + to:printf_number_buffer::@5 +printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19 + (signed byte) printf_number_buffer::padding#8 ← phi( printf_number_buffer::@19/(signed byte) printf_number_buffer::padding#7 ) + (byte) printf_padding::pad#2 ← (byte) ' ' + (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#8 + call printf_padding + to:printf_number_buffer::@21 +printf_number_buffer::@21: scope:[printf_number_buffer] from printf_number_buffer::@12 + to:printf_number_buffer::@return +printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@19 printf_number_buffer::@21 + return + to:@return +@2: scope:[] from @1 + (dword) count ← (dword) 0 + to:@3 + +(void()) main() +main: scope:[main] from @3 + call printf_cls + to:main::@1 +main::@1: scope:[main] from main + (byte*) printf_str::str#2 ← (const byte*) main::str + call printf_str + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) printf_str::str#3 ← (const byte*) main::str1 + call printf_str + to:main::@3 +main::@3: scope:[main] from main::@2 + (word) printf_uint::uvalue#0 ← (number) 8 + (byte) printf_uint::format_min_length#0 ← (byte) 0 + (byte) printf_uint::format_justify_left#0 ← (byte) 0 + (byte) printf_uint::format_sign_always#0 ← (byte) 0 + (byte) printf_uint::format_zero_padding#0 ← (byte) 0 + (byte) printf_uint::format_upper_case#0 ← (byte) 0 + (byte) printf_uint::format_radix#0 ← (const byte) DECIMAL + call printf_uint + to:main::@4 +main::@4: scope:[main] from main::@3 + stackpush(byte) ← (number) 1 + callexecute queen + sideeffect stackpullbytes((number) 1) + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return + +__stackcall (void()) queen((byte) queen::row) +queen: scope:[queen] from + (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) + (byte) queen::r ← (byte) queen::row#0 + (byte) queen::column ← (byte) 1 + to:queen::@1 +queen::@1: scope:[queen] from queen queen::@3 + (bool~) queen::$0 ← (byte) queen::column <= (number) 8 + if((bool~) queen::$0) goto queen::@2 + to:queen::@return +queen::@2: scope:[queen] from queen::@1 + (byte) legal::row#0 ← (byte) queen::r + (byte) legal::column#0 ← (byte) queen::column + call legal + (byte) legal::return#0 ← (byte) legal::return#4 + to:queen::@7 +queen::@7: scope:[queen] from queen::@2 + (byte) legal::return#5 ← phi( queen::@2/(byte) legal::return#0 ) + (byte~) queen::$1 ← (byte) legal::return#5 + (bool~) queen::$7 ← (number) 0 != (byte~) queen::$1 + (bool~) queen::$2 ← ! (bool~) queen::$7 + if((bool~) queen::$2) goto queen::@3 + to:queen::@5 +queen::@3: scope:[queen] from queen::@6 queen::@7 queen::@8 + (byte) queen::column ← ++ (byte) queen::column + to:queen::@1 +queen::@5: scope:[queen] from queen::@7 + *((const byte*) board + (byte) queen::r) ← (byte) queen::column + (bool~) queen::$3 ← (byte) queen::r == (number) 8 + if((bool~) queen::$3) goto queen::@4 + to:queen::@6 +queen::@4: scope:[queen] from queen::@5 + call print + to:queen::@8 +queen::@8: scope:[queen] from queen::@4 + to:queen::@3 +queen::@6: scope:[queen] from queen::@5 + asm { ldacolumn pha ldar pha } + (number~) queen::$4 ← (byte) queen::r + (number) 1 + stackpush(byte) ← (number~) queen::$4 + callexecute queen + sideeffect stackpullbytes((number) 1) + asm { pla star pla stacolumn } + to:queen::@3 +queen::@return: scope:[queen] from queen::@1 + return + to:@return + +(byte()) legal((byte) legal::row , (byte) legal::column) +legal: scope:[legal] from queen::@2 + (byte) legal::column#4 ← phi( queen::@2/(byte) legal::column#0 ) + (byte) legal::row#3 ← phi( queen::@2/(byte) legal::row#0 ) + (byte) legal::i#0 ← (byte) 1 + to:legal::@1 +legal::@1: scope:[legal] from legal legal::@5 + (byte) legal::column#3 ← phi( legal/(byte) legal::column#4 legal::@5/(byte) legal::column#5 ) + (byte) legal::i#2 ← phi( legal/(byte) legal::i#0 legal::@5/(byte) legal::i#1 ) + (byte) legal::row#1 ← phi( legal/(byte) legal::row#3 legal::@5/(byte) legal::row#4 ) + (number~) legal::$0 ← (byte) legal::row#1 - (number) 1 + (bool~) legal::$1 ← (byte) legal::i#2 <= (number~) legal::$0 + if((bool~) legal::$1) goto legal::@2 + to:legal::@3 +legal::@2: scope:[legal] from legal::@1 + (byte) legal::row#6 ← phi( legal::@1/(byte) legal::row#1 ) + (byte) legal::column#1 ← phi( legal::@1/(byte) legal::column#3 ) + (byte) legal::i#3 ← phi( legal::@1/(byte) legal::i#2 ) + (bool~) legal::$2 ← *((const byte*) board + (byte) legal::i#3) == (byte) legal::column#1 + if((bool~) legal::$2) goto legal::@4 + to:legal::@6 +legal::@3: scope:[legal] from legal::@1 + (byte) legal::return#1 ← (number) 1 + to:legal::@return +legal::@4: scope:[legal] from legal::@2 + (byte) legal::return#2 ← (number) 0 + to:legal::@return +legal::@6: scope:[legal] from legal::@2 + (byte) legal::row#5 ← phi( legal::@2/(byte) legal::row#6 ) + (byte) legal::column#2 ← phi( legal::@2/(byte) legal::column#1 ) + (byte) legal::i#4 ← phi( legal::@2/(byte) legal::i#3 ) + (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#4) + (byte) diff::b#0 ← (byte) legal::column#2 + call diff + (byte) diff::return#0 ← (byte) diff::return#4 + to:legal::@8 +legal::@8: scope:[legal] from legal::@6 + (byte) legal::column#7 ← phi( legal::@6/(byte) legal::column#2 ) + (byte) legal::row#2 ← phi( legal::@6/(byte) legal::row#5 ) + (byte) legal::i#5 ← phi( legal::@6/(byte) legal::i#4 ) + (byte) diff::return#5 ← phi( legal::@6/(byte) diff::return#0 ) + (byte~) legal::$3 ← (byte) diff::return#5 + (byte) diff::a#1 ← (byte) legal::i#5 + (byte) diff::b#1 ← (byte) legal::row#2 + call diff + (byte) diff::return#1 ← (byte) diff::return#4 + to:legal::@9 +legal::@9: scope:[legal] from legal::@8 + (byte) legal::column#6 ← phi( legal::@8/(byte) legal::column#7 ) + (byte) legal::row#7 ← phi( legal::@8/(byte) legal::row#2 ) + (byte) legal::i#7 ← phi( legal::@8/(byte) legal::i#5 ) + (byte) diff::return#6 ← phi( legal::@8/(byte) diff::return#1 ) + (byte~) legal::$4 ← (byte) diff::return#6 + (bool~) legal::$5 ← (byte~) legal::$3 == (byte~) legal::$4 + (bool~) legal::$6 ← ! (bool~) legal::$5 + if((bool~) legal::$6) goto legal::@5 + to:legal::@7 +legal::@7: scope:[legal] from legal::@9 + (byte) legal::return#3 ← (number) 0 + to:legal::@return +legal::@return: scope:[legal] from legal::@3 legal::@4 legal::@7 + (byte) legal::return#6 ← phi( legal::@3/(byte) legal::return#1 legal::@4/(byte) legal::return#2 legal::@7/(byte) legal::return#3 ) + (byte) legal::return#4 ← (byte) legal::return#6 + return + to:@return +legal::@5: scope:[legal] from legal::@9 + (byte) legal::column#5 ← phi( legal::@9/(byte) legal::column#6 ) + (byte) legal::row#4 ← phi( legal::@9/(byte) legal::row#7 ) + (byte) legal::i#6 ← phi( legal::@9/(byte) legal::i#7 ) + (byte) legal::i#1 ← ++ (byte) legal::i#6 + to:legal::@1 + +(byte()) diff((byte) diff::a , (byte) diff::b) +diff: scope:[diff] from legal::@6 legal::@8 + (byte) diff::b#2 ← phi( legal::@6/(byte) diff::b#0 legal::@8/(byte) diff::b#1 ) + (byte) diff::a#2 ← phi( legal::@6/(byte) diff::a#0 legal::@8/(byte) diff::a#1 ) + (bool~) diff::$0 ← (byte) diff::a#2 < (byte) diff::b#2 + if((bool~) diff::$0) goto diff::@1 + to:diff::@2 +diff::@1: scope:[diff] from diff + (byte) diff::a#3 ← phi( diff/(byte) diff::a#2 ) + (byte) diff::b#3 ← phi( diff/(byte) diff::b#2 ) + (byte~) diff::$2 ← (byte) diff::b#3 - (byte) diff::a#3 + (byte) diff::return#2 ← (byte~) diff::$2 + to:diff::@return +diff::@2: scope:[diff] from diff + (byte) diff::b#4 ← phi( diff/(byte) diff::b#2 ) + (byte) diff::a#4 ← phi( diff/(byte) diff::a#2 ) + (byte~) diff::$1 ← (byte) diff::a#4 - (byte) diff::b#4 + (byte) diff::return#3 ← (byte~) diff::$1 + to:diff::@return +diff::@return: scope:[diff] from diff::@1 diff::@2 + (byte) diff::return#7 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 ) + (byte) diff::return#4 ← (byte) diff::return#7 + return + to:@return + +(void()) print() +print: scope:[print] from queen::@4 + (dword) count ← ++ (dword) count + (byte*) printf_str::str#4 ← (const byte*) print::str + call printf_str + to:print::@12 +print::@12: scope:[print] from print + (dword) printf_ulong::uvalue#0 ← (dword) count + (byte) printf_ulong::format_min_length#0 ← (byte) 0 + (byte) printf_ulong::format_justify_left#0 ← (byte) 0 + (byte) printf_ulong::format_sign_always#0 ← (byte) 0 + (byte) printf_ulong::format_zero_padding#0 ← (byte) 0 + (byte) printf_ulong::format_upper_case#0 ← (byte) 0 + (byte) printf_ulong::format_radix#0 ← (const byte) DECIMAL + call printf_ulong + to:print::@13 +print::@13: scope:[print] from print::@12 + (byte*) printf_str::str#5 ← (const byte*) print::str1 + call printf_str + to:print::@14 +print::@14: scope:[print] from print::@13 + (byte) print::i#0 ← (byte) 1 + to:print::@1 +print::@1: scope:[print] from print::@14 print::@15 + (byte) print::i#2 ← phi( print::@14/(byte) print::i#0 print::@15/(byte) print::i#1 ) + (bool~) print::$1 ← (byte) print::i#2 <= (number) 8 + if((bool~) print::$1) goto print::@2 + to:print::@3 +print::@2: scope:[print] from print::@1 + (byte) print::i#3 ← phi( print::@1/(byte) print::i#2 ) + (byte) printf_uchar::uvalue#0 ← (byte) print::i#3 + (byte) printf_uchar::format_min_length#0 ← (byte) 0 + (byte) printf_uchar::format_justify_left#0 ← (byte) 0 + (byte) printf_uchar::format_sign_always#0 ← (byte) 0 + (byte) printf_uchar::format_zero_padding#0 ← (byte) 0 + (byte) printf_uchar::format_upper_case#0 ← (byte) 0 + (byte) printf_uchar::format_radix#0 ← (const byte) HEXADECIMAL + call printf_uchar + to:print::@15 +print::@15: scope:[print] from print::@2 + (byte) print::i#4 ← phi( print::@2/(byte) print::i#3 ) + (byte) print::i#1 ← ++ (byte) print::i#4 + to:print::@1 +print::@3: scope:[print] from print::@1 + (byte) print::i1#0 ← (byte) 1 + to:print::@4 +print::@4: scope:[print] from print::@3 print::@8 + (byte) print::i1#2 ← phi( print::@3/(byte) print::i1#0 print::@8/(byte) print::i1#1 ) + (bool~) print::$3 ← (byte) print::i1#2 <= (number) 8 + if((bool~) print::$3) goto print::@5 + to:print::@return +print::@5: scope:[print] from print::@4 + (byte) print::i1#6 ← phi( print::@4/(byte) print::i1#2 ) + (byte*) printf_str::str#6 ← (const byte*) print::str2 + call printf_str + to:print::@16 +print::@16: scope:[print] from print::@5 + (byte) print::i1#3 ← phi( print::@5/(byte) print::i1#6 ) + (byte) printf_uchar::uvalue#1 ← (byte) print::i1#3 + (byte) printf_uchar::format_min_length#1 ← (byte) 0 + (byte) printf_uchar::format_justify_left#1 ← (byte) 0 + (byte) printf_uchar::format_sign_always#1 ← (byte) 0 + (byte) printf_uchar::format_zero_padding#1 ← (byte) 0 + (byte) printf_uchar::format_upper_case#1 ← (byte) 0 + (byte) printf_uchar::format_radix#1 ← (const byte) HEXADECIMAL + call printf_uchar + to:print::@17 +print::@17: scope:[print] from print::@16 + (byte) print::i1#9 ← phi( print::@16/(byte) print::i1#3 ) + (byte) print::j#0 ← (byte) 1 + to:print::@6 +print::@6: scope:[print] from print::@10 print::@17 + (byte) print::i1#7 ← phi( print::@10/(byte) print::i1#8 print::@17/(byte) print::i1#9 ) + (byte) print::j#2 ← phi( print::@10/(byte) print::j#1 print::@17/(byte) print::j#0 ) + (bool~) print::$5 ← (byte) print::j#2 <= (number) 8 + if((bool~) print::$5) goto print::@7 + to:print::@8 +print::@7: scope:[print] from print::@6 + (byte) print::j#3 ← phi( print::@6/(byte) print::j#2 ) + (byte) print::i1#4 ← phi( print::@6/(byte) print::i1#7 ) + (bool~) print::$6 ← *((const byte*) board + (byte) print::i1#4) == (byte) print::j#3 + if((bool~) print::$6) goto print::@9 + to:print::@11 +print::@8: scope:[print] from print::@6 + (byte) print::i1#5 ← phi( print::@6/(byte) print::i1#7 ) + (byte) print::i1#1 ← ++ (byte) print::i1#5 + to:print::@4 +print::@9: scope:[print] from print::@7 + (byte) print::i1#12 ← phi( print::@7/(byte) print::i1#4 ) + (byte) print::j#7 ← phi( print::@7/(byte) print::j#3 ) + (byte*) printf_str::str#7 ← (const byte*) print::str3 + call printf_str + to:print::@18 +print::@18: scope:[print] from print::@9 + (byte) print::i1#10 ← phi( print::@9/(byte) print::i1#12 ) + (byte) print::j#5 ← phi( print::@9/(byte) print::j#7 ) + to:print::@10 +print::@11: scope:[print] from print::@7 + (byte) print::i1#13 ← phi( print::@7/(byte) print::i1#4 ) + (byte) print::j#8 ← phi( print::@7/(byte) print::j#3 ) + (byte*) printf_str::str#8 ← (const byte*) print::str4 + call printf_str + to:print::@19 +print::@19: scope:[print] from print::@11 + (byte) print::i1#11 ← phi( print::@11/(byte) print::i1#13 ) + (byte) print::j#6 ← phi( print::@11/(byte) print::j#8 ) + to:print::@10 +print::@10: scope:[print] from print::@18 print::@19 + (byte) print::i1#8 ← phi( print::@18/(byte) print::i1#10 print::@19/(byte) print::i1#11 ) + (byte) print::j#4 ← phi( print::@18/(byte) print::j#5 print::@19/(byte) print::j#6 ) + (byte) print::j#1 ← ++ (byte) print::j#4 + to:print::@6 +print::@return: scope:[print] from print::@4 + return + to:@return +@3: scope:[] from @2 + call main + to:@4 +@4: scope:[] from @3 + to:@end +@end: scope:[] from @4 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @3 +(label) @4 +(label) @begin +(label) @end +(const byte) BINARY = (number) 2 +(const byte) DECIMAL = (number) $a +(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z +(const byte) HEXADECIMAL = (number) $10 +(const byte) OCTAL = (number) 8 +(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1 +(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN = (byte) 0 +(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_BINARY_VALUES[] = { (word) $8000, (word) $4000, (word) $2000, (word) $1000, (word) $800, (word) $400, (word) $200, (word) $100, (word) $80, (word) $40, (word) $20, (word) $10, (word) 8, (word) 4, (word) 2 } +(const byte*) RADIX_BINARY_VALUES_CHAR[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2 } +(const dword*) RADIX_BINARY_VALUES_LONG[] = { (dword) $80000000, (dword) $40000000, (dword) $20000000, (dword) $10000000, (dword) $8000000, (dword) $4000000, (dword) $2000000, (dword) $1000000, (dword) $800000, (dword) $400000, (dword) $200000, (dword) $100000, (dword) $80000, (dword) $40000, (dword) $20000, (dword) $10000, (dword) $8000, (dword) $4000, (dword) $2000, (dword) $1000, (dword) $800, (dword) $400, (dword) $200, (dword) $100, (dword) $80, (dword) $40, (dword) $20, (dword) $10, (dword) 8, (dword) 4, (dword) 2 } +(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 word*) RADIX_HEXADECIMAL_VALUES[] = { (word) $1000, (word) $100, (word) $10 } +(const byte*) RADIX_HEXADECIMAL_VALUES_CHAR[] = { (byte) $10 } +(const dword*) RADIX_HEXADECIMAL_VALUES_LONG[] = { (dword) $10000000, (dword) $1000000, (dword) $100000, (dword) $10000, (dword) $1000, (dword) $100, (dword) $10 } +(const word*) RADIX_OCTAL_VALUES[] = { (word) $8000, (word) $1000, (word) $200, (word) $40, (word) 8 } +(const byte*) RADIX_OCTAL_VALUES_CHAR[] = { (byte) $40, (byte) 8 } +(const dword*) RADIX_OCTAL_VALUES_LONG[] = { (dword) $40000000, (dword) $8000000, (dword) $1000000, (dword) $200000, (dword) $40000, (dword) $8000, (dword) $1000, (dword) $200, (dword) $40, (dword) 8 } +(const byte) SIZEOF_DWORD = (byte) 4 +(const byte) SIZEOF_WORD = (byte) 2 +(const word) STACK_BASE = (word) $103 +(const byte*) board[(number) $14] = { fill( $14, 0) } +(dword) count loadstore +(byte()) diff((byte) diff::a , (byte) diff::b) +(bool~) diff::$0 +(byte~) diff::$1 +(byte~) diff::$2 +(label) diff::@1 +(label) diff::@2 +(label) diff::@return +(byte) diff::a +(byte) diff::a#0 +(byte) diff::a#1 +(byte) diff::a#2 +(byte) diff::a#3 +(byte) diff::a#4 +(byte) diff::b +(byte) diff::b#0 +(byte) diff::b#1 +(byte) diff::b#2 +(byte) diff::b#3 +(byte) diff::b#4 +(byte) diff::return +(byte) diff::return#0 +(byte) diff::return#1 +(byte) diff::return#2 +(byte) diff::return#3 +(byte) diff::return#4 +(byte) diff::return#5 +(byte) diff::return#6 +(byte) diff::return#7 +(byte()) legal((byte) legal::row , (byte) legal::column) +(number~) legal::$0 +(bool~) legal::$1 +(bool~) legal::$2 +(byte~) legal::$3 +(byte~) legal::$4 +(bool~) legal::$5 +(bool~) legal::$6 +(label) legal::@1 +(label) legal::@2 +(label) legal::@3 +(label) legal::@4 +(label) legal::@5 +(label) legal::@6 +(label) legal::@7 +(label) legal::@8 +(label) legal::@9 +(label) legal::@return +(byte) legal::column +(byte) legal::column#0 +(byte) legal::column#1 +(byte) legal::column#2 +(byte) legal::column#3 +(byte) legal::column#4 +(byte) legal::column#5 +(byte) legal::column#6 +(byte) legal::column#7 +(byte) legal::i +(byte) legal::i#0 +(byte) legal::i#1 +(byte) legal::i#2 +(byte) legal::i#3 +(byte) legal::i#4 +(byte) legal::i#5 +(byte) legal::i#6 +(byte) legal::i#7 +(byte) legal::return +(byte) legal::return#0 +(byte) legal::return#1 +(byte) legal::return#2 +(byte) legal::return#3 +(byte) legal::return#4 +(byte) legal::return#5 +(byte) legal::return#6 +(byte) legal::row +(byte) legal::row#0 +(byte) legal::row#1 +(byte) legal::row#2 +(byte) legal::row#3 +(byte) legal::row#4 +(byte) legal::row#5 +(byte) legal::row#6 +(byte) legal::row#7 +(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) +(byte*~) memcpy::$0 +(bool~) memcpy::$1 +(byte*~) memcpy::$2 +(label) memcpy::@1 +(label) memcpy::@2 +(label) memcpy::@3 +(label) memcpy::@return +(void*) memcpy::destination +(void*) memcpy::destination#0 +(void*) memcpy::destination#1 +(void*) memcpy::destination#2 +(void*) memcpy::destination#3 +(void*) memcpy::destination#4 +(byte*) memcpy::dst +(byte*) memcpy::dst#0 +(byte*) memcpy::dst#1 +(byte*) memcpy::dst#2 +(byte*) memcpy::dst#3 +(word) memcpy::num +(word) memcpy::num#0 +(word) memcpy::num#1 +(void*) memcpy::return +(void*) memcpy::return#0 +(void*) memcpy::return#1 +(void*) memcpy::return#2 +(void*) memcpy::return#3 +(void*) memcpy::source +(void*) memcpy::source#0 +(void*) memcpy::source#1 +(byte*) memcpy::src +(byte*) memcpy::src#0 +(byte*) memcpy::src#1 +(byte*) memcpy::src#2 +(byte*) memcpy::src#3 +(byte*) memcpy::src_end +(byte*) memcpy::src_end#0 +(byte*) memcpy::src_end#1 +(byte*) memcpy::src_end#2 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(bool~) memset::$0 +(bool~) memset::$1 +(byte*~) memset::$2 +(bool~) memset::$3 +(byte*~) memset::$4 +(label) memset::@1 +(label) memset::@2 +(label) memset::@3 +(label) memset::@4 +(label) memset::@return +(byte) memset::c +(byte) memset::c#0 +(byte) memset::c#1 +(byte) memset::c#2 +(byte) memset::c#3 +(byte) memset::c#4 +(byte) memset::c#5 +(byte*) memset::dst +(byte*) memset::dst#0 +(byte*) memset::dst#1 +(byte*) memset::dst#2 +(byte*) memset::dst#3 +(byte*) memset::end +(byte*) memset::end#0 +(byte*) memset::end#1 +(byte*) memset::end#2 +(word) memset::num +(word) memset::num#0 +(word) memset::num#1 +(word) memset::num#2 +(word) memset::num#3 +(void*) memset::return +(void*) memset::return#0 +(void*) memset::return#1 +(void*) memset::return#2 +(void*) memset::return#3 +(void*) memset::return#4 +(void*) memset::str +(void*) memset::str#0 +(void*) memset::str#1 +(void*) memset::str#2 +(void*) memset::str#3 +(void*) memset::str#4 +(void*) memset::str#5 +(void*) memset::str#6 +(void()) print() +(bool~) print::$1 +(bool~) print::$3 +(bool~) print::$5 +(bool~) print::$6 +(label) print::@1 +(label) print::@10 +(label) print::@11 +(label) print::@12 +(label) print::@13 +(label) print::@14 +(label) print::@15 +(label) print::@16 +(label) print::@17 +(label) print::@18 +(label) print::@19 +(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#0 +(byte) print::i#1 +(byte) print::i#2 +(byte) print::i#3 +(byte) print::i#4 +(byte) print::i1 +(byte) print::i1#0 +(byte) print::i1#1 +(byte) print::i1#10 +(byte) print::i1#11 +(byte) print::i1#12 +(byte) print::i1#13 +(byte) print::i1#2 +(byte) print::i1#3 +(byte) print::i1#4 +(byte) print::i1#5 +(byte) print::i1#6 +(byte) print::i1#7 +(byte) print::i1#8 +(byte) print::i1#9 +(byte) print::j +(byte) print::j#0 +(byte) print::j#1 +(byte) print::j#2 +(byte) print::j#3 +(byte) print::j#4 +(byte) print::j#5 +(byte) print::j#6 +(byte) print::j#7 +(byte) print::j#8 +(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 = {} +(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) } +(byte) printf_buffer_number::sign +(void()) printf_char((byte) printf_char::ch) +(bool~) printf_char::$0 +(bool~) printf_char::$1 +(label) printf_char::@1 +(label) printf_char::@2 +(label) printf_char::@return +(byte) printf_char::ch +(byte) printf_char::ch#0 +(byte) printf_char::ch#1 +(byte) printf_char::ch#2 +(byte) printf_char::ch#3 +(void()) printf_cls() +(label) printf_cls::@1 +(label) printf_cls::@return +(byte*) printf_cursor_ptr loadstore +(byte) printf_cursor_x loadstore +(byte) printf_cursor_y loadstore +(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 +(byte*~) printf_ln::$1 +(label) printf_ln::@1 +(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) +(bool~) printf_number_buffer::$0 +(bool~) printf_number_buffer::$1 +(bool~) printf_number_buffer::$10 +(bool~) printf_number_buffer::$12 +(bool~) printf_number_buffer::$14 +(bool~) printf_number_buffer::$15 +(bool~) printf_number_buffer::$16 +(bool~) printf_number_buffer::$17 +(word~) printf_number_buffer::$19 +(bool~) printf_number_buffer::$2 +(bool~) printf_number_buffer::$20 +(signed byte~) printf_number_buffer::$21 +(bool~) printf_number_buffer::$22 +(bool~) printf_number_buffer::$23 +(signed byte~) printf_number_buffer::$25 +(bool~) printf_number_buffer::$26 +(bool~) printf_number_buffer::$27 +(bool~) printf_number_buffer::$28 +(bool~) printf_number_buffer::$29 +(bool~) printf_number_buffer::$3 +(bool~) printf_number_buffer::$30 +(bool~) printf_number_buffer::$31 +(bool~) printf_number_buffer::$32 +(bool~) printf_number_buffer::$4 +(bool~) printf_number_buffer::$5 +(bool~) printf_number_buffer::$7 +(bool~) printf_number_buffer::$9 +(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#0 +(byte*) printf_number_buffer::buffer_digits#1 +(byte*) printf_number_buffer::buffer_digits#10 +(byte*) printf_number_buffer::buffer_digits#11 +(byte*) printf_number_buffer::buffer_digits#12 +(byte*) printf_number_buffer::buffer_digits#13 +(byte*) printf_number_buffer::buffer_digits#14 +(byte*) printf_number_buffer::buffer_digits#15 +(byte*) printf_number_buffer::buffer_digits#16 +(byte*) printf_number_buffer::buffer_digits#17 +(byte*) printf_number_buffer::buffer_digits#18 +(byte*) printf_number_buffer::buffer_digits#19 +(byte*) printf_number_buffer::buffer_digits#2 +(byte*) printf_number_buffer::buffer_digits#20 +(byte*) printf_number_buffer::buffer_digits#21 +(byte*) printf_number_buffer::buffer_digits#3 +(byte*) printf_number_buffer::buffer_digits#4 +(byte*) printf_number_buffer::buffer_digits#5 +(byte*) printf_number_buffer::buffer_digits#6 +(byte*) printf_number_buffer::buffer_digits#7 +(byte*) printf_number_buffer::buffer_digits#8 +(byte*) printf_number_buffer::buffer_digits#9 +(byte) printf_number_buffer::buffer_sign +(byte) printf_number_buffer::buffer_sign#0 +(byte) printf_number_buffer::buffer_sign#1 +(byte) printf_number_buffer::buffer_sign#10 +(byte) printf_number_buffer::buffer_sign#11 +(byte) printf_number_buffer::buffer_sign#12 +(byte) printf_number_buffer::buffer_sign#13 +(byte) printf_number_buffer::buffer_sign#2 +(byte) printf_number_buffer::buffer_sign#3 +(byte) printf_number_buffer::buffer_sign#4 +(byte) printf_number_buffer::buffer_sign#5 +(byte) printf_number_buffer::buffer_sign#6 +(byte) printf_number_buffer::buffer_sign#7 +(byte) printf_number_buffer::buffer_sign#8 +(byte) printf_number_buffer::buffer_sign#9 +(struct printf_format_number) printf_number_buffer::format +(byte) printf_number_buffer::format_justify_left +(byte) printf_number_buffer::format_justify_left#0 +(byte) printf_number_buffer::format_justify_left#1 +(byte) printf_number_buffer::format_justify_left#10 +(byte) printf_number_buffer::format_justify_left#11 +(byte) printf_number_buffer::format_justify_left#12 +(byte) printf_number_buffer::format_justify_left#13 +(byte) printf_number_buffer::format_justify_left#14 +(byte) printf_number_buffer::format_justify_left#15 +(byte) printf_number_buffer::format_justify_left#16 +(byte) printf_number_buffer::format_justify_left#17 +(byte) printf_number_buffer::format_justify_left#18 +(byte) printf_number_buffer::format_justify_left#19 +(byte) printf_number_buffer::format_justify_left#2 +(byte) printf_number_buffer::format_justify_left#20 +(byte) printf_number_buffer::format_justify_left#21 +(byte) printf_number_buffer::format_justify_left#22 +(byte) printf_number_buffer::format_justify_left#3 +(byte) printf_number_buffer::format_justify_left#4 +(byte) printf_number_buffer::format_justify_left#5 +(byte) printf_number_buffer::format_justify_left#6 +(byte) printf_number_buffer::format_justify_left#7 +(byte) printf_number_buffer::format_justify_left#8 +(byte) printf_number_buffer::format_justify_left#9 +(byte) printf_number_buffer::format_min_length +(byte) printf_number_buffer::format_min_length#0 +(byte) printf_number_buffer::format_min_length#1 +(byte) printf_number_buffer::format_min_length#2 +(byte) printf_number_buffer::format_min_length#3 +(byte) printf_number_buffer::format_min_length#4 +(byte) printf_number_buffer::format_min_length#5 +(byte) printf_number_buffer::format_min_length#6 +(byte) printf_number_buffer::format_min_length#7 +(byte) printf_number_buffer::format_radix +(byte) printf_number_buffer::format_radix#0 +(byte) printf_number_buffer::format_radix#1 +(byte) printf_number_buffer::format_radix#2 +(byte) printf_number_buffer::format_sign_always +(byte) printf_number_buffer::format_sign_always#0 +(byte) printf_number_buffer::format_sign_always#1 +(byte) printf_number_buffer::format_sign_always#2 +(byte) printf_number_buffer::format_upper_case +(byte) printf_number_buffer::format_upper_case#0 +(byte) printf_number_buffer::format_upper_case#1 +(byte) printf_number_buffer::format_upper_case#10 +(byte) printf_number_buffer::format_upper_case#11 +(byte) printf_number_buffer::format_upper_case#12 +(byte) printf_number_buffer::format_upper_case#13 +(byte) printf_number_buffer::format_upper_case#14 +(byte) printf_number_buffer::format_upper_case#15 +(byte) printf_number_buffer::format_upper_case#16 +(byte) printf_number_buffer::format_upper_case#17 +(byte) printf_number_buffer::format_upper_case#18 +(byte) printf_number_buffer::format_upper_case#2 +(byte) printf_number_buffer::format_upper_case#3 +(byte) printf_number_buffer::format_upper_case#4 +(byte) printf_number_buffer::format_upper_case#5 +(byte) printf_number_buffer::format_upper_case#6 +(byte) printf_number_buffer::format_upper_case#7 +(byte) printf_number_buffer::format_upper_case#8 +(byte) printf_number_buffer::format_upper_case#9 +(byte) printf_number_buffer::format_zero_padding +(byte) printf_number_buffer::format_zero_padding#0 +(byte) printf_number_buffer::format_zero_padding#1 +(byte) printf_number_buffer::format_zero_padding#10 +(byte) printf_number_buffer::format_zero_padding#11 +(byte) printf_number_buffer::format_zero_padding#12 +(byte) printf_number_buffer::format_zero_padding#13 +(byte) printf_number_buffer::format_zero_padding#14 +(byte) printf_number_buffer::format_zero_padding#15 +(byte) printf_number_buffer::format_zero_padding#16 +(byte) printf_number_buffer::format_zero_padding#17 +(byte) printf_number_buffer::format_zero_padding#18 +(byte) printf_number_buffer::format_zero_padding#19 +(byte) printf_number_buffer::format_zero_padding#2 +(byte) printf_number_buffer::format_zero_padding#20 +(byte) printf_number_buffer::format_zero_padding#21 +(byte) printf_number_buffer::format_zero_padding#22 +(byte) printf_number_buffer::format_zero_padding#3 +(byte) printf_number_buffer::format_zero_padding#4 +(byte) printf_number_buffer::format_zero_padding#5 +(byte) printf_number_buffer::format_zero_padding#6 +(byte) printf_number_buffer::format_zero_padding#7 +(byte) printf_number_buffer::format_zero_padding#8 +(byte) printf_number_buffer::format_zero_padding#9 +(signed byte) printf_number_buffer::len +(signed byte) printf_number_buffer::len#0 +(signed byte) printf_number_buffer::len#1 +(signed byte) printf_number_buffer::len#2 +(signed byte) printf_number_buffer::len#3 +(signed byte) printf_number_buffer::padding +(signed byte) printf_number_buffer::padding#0 +(signed byte) printf_number_buffer::padding#1 +(signed byte) printf_number_buffer::padding#10 +(signed byte) printf_number_buffer::padding#11 +(signed byte) printf_number_buffer::padding#12 +(signed byte) printf_number_buffer::padding#13 +(signed byte) printf_number_buffer::padding#14 +(signed byte) printf_number_buffer::padding#15 +(signed byte) printf_number_buffer::padding#16 +(signed byte) printf_number_buffer::padding#17 +(signed byte) printf_number_buffer::padding#2 +(signed byte) printf_number_buffer::padding#3 +(signed byte) printf_number_buffer::padding#4 +(signed byte) printf_number_buffer::padding#5 +(signed byte) printf_number_buffer::padding#6 +(signed byte) printf_number_buffer::padding#7 +(signed byte) printf_number_buffer::padding#8 +(signed byte) printf_number_buffer::padding#9 +(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length) +(bool~) printf_padding::$0 +(label) printf_padding::@1 +(label) printf_padding::@2 +(label) printf_padding::@3 +(label) printf_padding::@return +(byte) printf_padding::i +(byte) printf_padding::i#0 +(byte) printf_padding::i#1 +(byte) printf_padding::i#2 +(byte) printf_padding::i#3 +(byte) printf_padding::i#4 +(byte) printf_padding::length +(byte) printf_padding::length#0 +(byte) printf_padding::length#1 +(byte) printf_padding::length#2 +(byte) printf_padding::length#3 +(byte) printf_padding::length#4 +(byte) printf_padding::length#5 +(byte) printf_padding::length#6 +(byte) printf_padding::pad +(byte) printf_padding::pad#0 +(byte) printf_padding::pad#1 +(byte) printf_padding::pad#2 +(byte) printf_padding::pad#3 +(byte) printf_padding::pad#4 +(byte) printf_padding::pad#5 +(byte) printf_padding::pad#6 +(void()) printf_scroll() +(bool~) printf_scroll::$0 +(bool~) printf_scroll::$1 +(byte*~) printf_scroll::$4 +(label) printf_scroll::@1 +(label) printf_scroll::@2 +(label) printf_scroll::@3 +(label) printf_scroll::@return +(void()) printf_str((byte*) printf_str::str) +(bool~) printf_str::$0 +(bool~) printf_str::$1 +(bool~) printf_str::$2 +(label) printf_str::@1 +(label) printf_str::@2 +(label) printf_str::@3 +(label) printf_str::@4 +(label) printf_str::@5 +(label) printf_str::@6 +(label) printf_str::@7 +(label) printf_str::@return +(byte) printf_str::ch +(byte) printf_str::ch#0 +(byte) printf_str::ch#1 +(byte) printf_str::ch#2 +(byte*) printf_str::str +(byte*) printf_str::str#0 +(byte*) printf_str::str#1 +(byte*) printf_str::str#10 +(byte*) printf_str::str#11 +(byte*) printf_str::str#12 +(byte*) printf_str::str#13 +(byte*) printf_str::str#14 +(byte*) printf_str::str#15 +(byte*) printf_str::str#16 +(byte*) printf_str::str#2 +(byte*) printf_str::str#3 +(byte*) printf_str::str#4 +(byte*) printf_str::str#5 +(byte*) printf_str::str#6 +(byte*) printf_str::str#7 +(byte*) printf_str::str#8 +(byte*) printf_str::str#9 +(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) +(number~) printf_uchar::$0 +(byte~) printf_uchar::$1 +(number~) printf_uchar::$2 +(bool~) printf_uchar::$5 +(label) printf_uchar::@1 +(label) printf_uchar::@2 +(label) printf_uchar::@3 +(label) printf_uchar::@4 +(label) printf_uchar::@5 +(label) printf_uchar::@return +(struct printf_format_number) printf_uchar::format +(byte) printf_uchar::format_justify_left +(byte) printf_uchar::format_justify_left#0 +(byte) printf_uchar::format_justify_left#1 +(byte) printf_uchar::format_justify_left#2 +(byte) printf_uchar::format_justify_left#3 +(byte) printf_uchar::format_justify_left#4 +(byte) printf_uchar::format_justify_left#5 +(byte) printf_uchar::format_justify_left#6 +(byte) printf_uchar::format_min_length +(byte) printf_uchar::format_min_length#0 +(byte) printf_uchar::format_min_length#1 +(byte) printf_uchar::format_min_length#2 +(byte) printf_uchar::format_min_length#3 +(byte) printf_uchar::format_min_length#4 +(byte) printf_uchar::format_min_length#5 +(byte) printf_uchar::format_min_length#6 +(byte) printf_uchar::format_radix +(byte) printf_uchar::format_radix#0 +(byte) printf_uchar::format_radix#1 +(byte) printf_uchar::format_radix#2 +(byte) printf_uchar::format_radix#3 +(byte) printf_uchar::format_radix#4 +(byte) printf_uchar::format_radix#5 +(byte) printf_uchar::format_radix#6 +(byte) printf_uchar::format_sign_always +(byte) printf_uchar::format_sign_always#0 +(byte) printf_uchar::format_sign_always#1 +(byte) printf_uchar::format_sign_always#2 +(byte) printf_uchar::format_sign_always#3 +(byte) printf_uchar::format_sign_always#4 +(byte) printf_uchar::format_sign_always#5 +(byte) printf_uchar::format_sign_always#6 +(byte) printf_uchar::format_upper_case +(byte) printf_uchar::format_upper_case#0 +(byte) printf_uchar::format_upper_case#1 +(byte) printf_uchar::format_upper_case#2 +(byte) printf_uchar::format_upper_case#3 +(byte) printf_uchar::format_upper_case#4 +(byte) printf_uchar::format_upper_case#5 +(byte) printf_uchar::format_upper_case#6 +(byte) printf_uchar::format_zero_padding +(byte) printf_uchar::format_zero_padding#0 +(byte) printf_uchar::format_zero_padding#1 +(byte) printf_uchar::format_zero_padding#2 +(byte) printf_uchar::format_zero_padding#3 +(byte) printf_uchar::format_zero_padding#4 +(byte) printf_uchar::format_zero_padding#5 +(byte) printf_uchar::format_zero_padding#6 +(byte) printf_uchar::uvalue +(byte) printf_uchar::uvalue#0 +(byte) printf_uchar::uvalue#1 +(byte) printf_uchar::uvalue#2 +(byte) printf_uchar::uvalue#3 +(byte) printf_uchar::uvalue#4 +(byte) printf_uchar::uvalue#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) +(number~) printf_uint::$0 +(byte~) printf_uint::$1 +(number~) printf_uint::$2 +(bool~) printf_uint::$5 +(label) printf_uint::@1 +(label) printf_uint::@2 +(label) printf_uint::@3 +(label) printf_uint::@4 +(label) printf_uint::@5 +(label) printf_uint::@return +(struct printf_format_number) printf_uint::format +(byte) printf_uint::format_justify_left +(byte) printf_uint::format_justify_left#0 +(byte) printf_uint::format_justify_left#1 +(byte) printf_uint::format_justify_left#2 +(byte) printf_uint::format_justify_left#3 +(byte) printf_uint::format_justify_left#4 +(byte) printf_uint::format_justify_left#5 +(byte) printf_uint::format_min_length +(byte) printf_uint::format_min_length#0 +(byte) printf_uint::format_min_length#1 +(byte) printf_uint::format_min_length#2 +(byte) printf_uint::format_min_length#3 +(byte) printf_uint::format_min_length#4 +(byte) printf_uint::format_min_length#5 +(byte) printf_uint::format_radix +(byte) printf_uint::format_radix#0 +(byte) printf_uint::format_radix#1 +(byte) printf_uint::format_radix#2 +(byte) printf_uint::format_radix#3 +(byte) printf_uint::format_radix#4 +(byte) printf_uint::format_radix#5 +(byte) printf_uint::format_sign_always +(byte) printf_uint::format_sign_always#0 +(byte) printf_uint::format_sign_always#1 +(byte) printf_uint::format_sign_always#2 +(byte) printf_uint::format_sign_always#3 +(byte) printf_uint::format_sign_always#4 +(byte) printf_uint::format_sign_always#5 +(byte) printf_uint::format_upper_case +(byte) printf_uint::format_upper_case#0 +(byte) printf_uint::format_upper_case#1 +(byte) printf_uint::format_upper_case#2 +(byte) printf_uint::format_upper_case#3 +(byte) printf_uint::format_upper_case#4 +(byte) printf_uint::format_upper_case#5 +(byte) printf_uint::format_zero_padding +(byte) printf_uint::format_zero_padding#0 +(byte) printf_uint::format_zero_padding#1 +(byte) printf_uint::format_zero_padding#2 +(byte) printf_uint::format_zero_padding#3 +(byte) printf_uint::format_zero_padding#4 +(byte) printf_uint::format_zero_padding#5 +(word) printf_uint::uvalue +(word) printf_uint::uvalue#0 +(word) printf_uint::uvalue#1 +(word) printf_uint::uvalue#2 +(word) printf_uint::uvalue#3 +(word) printf_uint::uvalue#4 +(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) +(number~) printf_ulong::$0 +(byte~) printf_ulong::$1 +(number~) printf_ulong::$2 +(bool~) printf_ulong::$5 +(label) printf_ulong::@1 +(label) printf_ulong::@2 +(label) printf_ulong::@3 +(label) printf_ulong::@4 +(label) printf_ulong::@5 +(label) printf_ulong::@return +(struct printf_format_number) printf_ulong::format +(byte) printf_ulong::format_justify_left +(byte) printf_ulong::format_justify_left#0 +(byte) printf_ulong::format_justify_left#1 +(byte) printf_ulong::format_justify_left#2 +(byte) printf_ulong::format_justify_left#3 +(byte) printf_ulong::format_justify_left#4 +(byte) printf_ulong::format_justify_left#5 +(byte) printf_ulong::format_min_length +(byte) printf_ulong::format_min_length#0 +(byte) printf_ulong::format_min_length#1 +(byte) printf_ulong::format_min_length#2 +(byte) printf_ulong::format_min_length#3 +(byte) printf_ulong::format_min_length#4 +(byte) printf_ulong::format_min_length#5 +(byte) printf_ulong::format_radix +(byte) printf_ulong::format_radix#0 +(byte) printf_ulong::format_radix#1 +(byte) printf_ulong::format_radix#2 +(byte) printf_ulong::format_radix#3 +(byte) printf_ulong::format_radix#4 +(byte) printf_ulong::format_radix#5 +(byte) printf_ulong::format_sign_always +(byte) printf_ulong::format_sign_always#0 +(byte) printf_ulong::format_sign_always#1 +(byte) printf_ulong::format_sign_always#2 +(byte) printf_ulong::format_sign_always#3 +(byte) printf_ulong::format_sign_always#4 +(byte) printf_ulong::format_sign_always#5 +(byte) printf_ulong::format_upper_case +(byte) printf_ulong::format_upper_case#0 +(byte) printf_ulong::format_upper_case#1 +(byte) printf_ulong::format_upper_case#2 +(byte) printf_ulong::format_upper_case#3 +(byte) printf_ulong::format_upper_case#4 +(byte) printf_ulong::format_upper_case#5 +(byte) printf_ulong::format_zero_padding +(byte) printf_ulong::format_zero_padding#0 +(byte) printf_ulong::format_zero_padding#1 +(byte) printf_ulong::format_zero_padding#2 +(byte) printf_ulong::format_zero_padding#3 +(byte) printf_ulong::format_zero_padding#4 +(byte) printf_ulong::format_zero_padding#5 +(dword) printf_ulong::uvalue +(dword) printf_ulong::uvalue#0 +(dword) printf_ulong::uvalue#1 +(dword) printf_ulong::uvalue#2 +(dword) printf_ulong::uvalue#3 +(dword) printf_ulong::uvalue#4 +__stackcall (void()) queen((byte) queen::row) +(bool~) queen::$0 +(byte~) queen::$1 +(bool~) queen::$2 +(bool~) queen::$3 +(number~) queen::$4 +(bool~) queen::$7 +(label) queen::@1 +(label) queen::@2 +(label) queen::@3 +(label) queen::@4 +(label) queen::@5 +(label) queen::@6 +(label) queen::@7 +(label) queen::@8 +(label) queen::@return +(const byte) queen::OFFSET_STACK_ROW = (byte) 0 +(byte) queen::column loadstore +(byte) queen::r loadstore +(byte) queen::row +(byte) queen::row#0 +(word()) strlen((byte*) strlen::str) +(bool~) strlen::$0 +(label) strlen::@1 +(label) strlen::@2 +(label) strlen::@3 +(label) strlen::@return +(word) strlen::len +(word) strlen::len#0 +(word) strlen::len#1 +(word) strlen::len#2 +(word) strlen::len#3 +(word) strlen::len#4 +(word) strlen::return +(word) strlen::return#0 +(word) strlen::return#1 +(word) strlen::return#2 +(word) strlen::return#3 +(word) strlen::return#4 +(byte*) strlen::str +(byte*) strlen::str#0 +(byte*) strlen::str#1 +(byte*) strlen::str#2 +(byte*) strlen::str#3 +(byte*) strlen::str#4 +(byte*()) strupr((byte*) strupr::str) +(byte~) strupr::$0 +(bool~) strupr::$1 +(label) strupr::@1 +(label) strupr::@2 +(label) strupr::@3 +(label) strupr::@4 +(label) strupr::@return +(byte*) strupr::return +(byte*) strupr::return#0 +(byte*) strupr::return#1 +(byte*) strupr::return#2 +(byte*) strupr::return#3 +(byte*) strupr::src +(byte*) strupr::src#0 +(byte*) strupr::src#1 +(byte*) strupr::src#2 +(byte*) strupr::src#3 +(byte*) strupr::src#4 +(byte*) strupr::str +(byte*) strupr::str#0 +(byte*) strupr::str#1 +(byte*) strupr::str#2 +(byte*) strupr::str#3 +(byte*) strupr::str#4 +(byte*) strupr::str#5 +(byte()) toupper((byte) toupper::ch) +(bool~) toupper::$0 +(bool~) toupper::$1 +(bool~) toupper::$2 +(byte~) toupper::$3 +(label) toupper::@1 +(label) toupper::@2 +(label) toupper::@return +(byte) toupper::ch +(byte) toupper::ch#0 +(byte) toupper::ch#1 +(byte) toupper::ch#2 +(byte) toupper::ch#3 +(byte) toupper::return +(byte) toupper::return#0 +(byte) toupper::return#1 +(byte) toupper::return#2 +(byte) toupper::return#3 +(byte) toupper::return#4 +(byte) toupper::return#5 +(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix) +(bool~) uctoa::$0 +(bool~) uctoa::$1 +(byte~) uctoa::$10 +(bool~) uctoa::$2 +(bool~) uctoa::$3 +(number~) uctoa::$4 +(bool~) uctoa::$5 +(bool~) uctoa::$6 +(bool~) uctoa::$7 +(bool~) uctoa::$8 +(byte~) uctoa::$9 +(label) uctoa::@1 +(label) uctoa::@10 +(label) uctoa::@11 +(label) uctoa::@12 +(label) uctoa::@13 +(label) uctoa::@14 +(label) uctoa::@15 +(label) uctoa::@2 +(label) uctoa::@3 +(label) uctoa::@4 +(label) uctoa::@5 +(label) uctoa::@6 +(label) uctoa::@7 +(label) uctoa::@8 +(label) uctoa::@9 +(label) uctoa::@return +(byte*) uctoa::buffer +(byte*) uctoa::buffer#0 +(byte*) uctoa::buffer#1 +(byte*) uctoa::buffer#10 +(byte*) uctoa::buffer#11 +(byte*) uctoa::buffer#12 +(byte*) uctoa::buffer#13 +(byte*) uctoa::buffer#14 +(byte*) uctoa::buffer#15 +(byte*) uctoa::buffer#16 +(byte*) uctoa::buffer#17 +(byte*) uctoa::buffer#18 +(byte*) uctoa::buffer#19 +(byte*) uctoa::buffer#2 +(byte*) uctoa::buffer#20 +(byte*) uctoa::buffer#21 +(byte*) uctoa::buffer#3 +(byte*) uctoa::buffer#4 +(byte*) uctoa::buffer#5 +(byte*) uctoa::buffer#6 +(byte*) uctoa::buffer#7 +(byte*) uctoa::buffer#8 +(byte*) uctoa::buffer#9 +(byte) uctoa::digit +(byte) uctoa::digit#0 +(byte) uctoa::digit#1 +(byte) uctoa::digit#2 +(byte) uctoa::digit#3 +(byte) uctoa::digit#4 +(byte) uctoa::digit#5 +(byte) uctoa::digit#6 +(byte) uctoa::digit_value +(byte) uctoa::digit_value#0 +(byte) uctoa::digit_value#1 +(byte*) uctoa::digit_values +(byte*) uctoa::digit_values#0 +(byte*) uctoa::digit_values#1 +(byte*) uctoa::digit_values#10 +(byte*) uctoa::digit_values#2 +(byte*) uctoa::digit_values#3 +(byte*) uctoa::digit_values#4 +(byte*) uctoa::digit_values#5 +(byte*) uctoa::digit_values#6 +(byte*) uctoa::digit_values#7 +(byte*) uctoa::digit_values#8 +(byte*) uctoa::digit_values#9 +(byte) uctoa::max_digits +(byte) uctoa::max_digits#0 +(byte) uctoa::max_digits#1 +(byte) uctoa::max_digits#10 +(byte) uctoa::max_digits#2 +(byte) uctoa::max_digits#3 +(byte) uctoa::max_digits#4 +(byte) uctoa::max_digits#5 +(byte) uctoa::max_digits#6 +(byte) uctoa::max_digits#7 +(byte) uctoa::max_digits#8 +(byte) uctoa::max_digits#9 +(byte) uctoa::radix +(byte) uctoa::radix#0 +(byte) uctoa::radix#1 +(byte) uctoa::radix#2 +(byte) uctoa::radix#3 +(byte) uctoa::radix#4 +(byte) uctoa::started +(byte) uctoa::started#0 +(byte) uctoa::started#1 +(byte) uctoa::started#2 +(byte) uctoa::started#3 +(byte) uctoa::started#4 +(byte) uctoa::value +(byte) uctoa::value#0 +(byte) uctoa::value#1 +(byte) uctoa::value#10 +(byte) uctoa::value#11 +(byte) uctoa::value#12 +(byte) uctoa::value#13 +(byte) uctoa::value#14 +(byte) uctoa::value#15 +(byte) uctoa::value#2 +(byte) uctoa::value#3 +(byte) uctoa::value#4 +(byte) uctoa::value#5 +(byte) uctoa::value#6 +(byte) uctoa::value#7 +(byte) uctoa::value#8 +(byte) uctoa::value#9 +(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub) +(bool~) uctoa_append::$0 +(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 +(byte*) uctoa_append::buffer#1 +(byte*) uctoa_append::buffer#2 +(byte*) uctoa_append::buffer#3 +(byte*) uctoa_append::buffer#4 +(byte) uctoa_append::digit +(byte) uctoa_append::digit#0 +(byte) uctoa_append::digit#1 +(byte) uctoa_append::digit#2 +(byte) uctoa_append::digit#3 +(byte) uctoa_append::digit#4 +(byte) uctoa_append::return +(byte) uctoa_append::return#0 +(byte) uctoa_append::return#1 +(byte) uctoa_append::return#2 +(byte) uctoa_append::return#3 +(byte) uctoa_append::return#4 +(byte) uctoa_append::sub +(byte) uctoa_append::sub#0 +(byte) uctoa_append::sub#1 +(byte) uctoa_append::sub#2 +(byte) uctoa_append::sub#3 +(byte) uctoa_append::value +(byte) uctoa_append::value#0 +(byte) uctoa_append::value#1 +(byte) uctoa_append::value#2 +(byte) uctoa_append::value#3 +(byte) uctoa_append::value#4 +(byte) uctoa_append::value#5 +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +(bool~) ultoa::$0 +(bool~) ultoa::$1 +(byte~) ultoa::$10 +(byte~) ultoa::$11 +(bool~) ultoa::$2 +(bool~) ultoa::$3 +(number~) ultoa::$4 +(bool~) ultoa::$5 +(bool~) ultoa::$6 +(bool~) ultoa::$7 +(bool~) ultoa::$8 +(dword~) ultoa::$9 +(label) ultoa::@1 +(label) ultoa::@10 +(label) ultoa::@11 +(label) ultoa::@12 +(label) ultoa::@13 +(label) ultoa::@14 +(label) ultoa::@15 +(label) ultoa::@2 +(label) ultoa::@3 +(label) ultoa::@4 +(label) ultoa::@5 +(label) ultoa::@6 +(label) ultoa::@7 +(label) ultoa::@8 +(label) ultoa::@9 +(label) ultoa::@return +(byte*) ultoa::buffer +(byte*) ultoa::buffer#0 +(byte*) ultoa::buffer#1 +(byte*) ultoa::buffer#10 +(byte*) ultoa::buffer#11 +(byte*) ultoa::buffer#12 +(byte*) ultoa::buffer#13 +(byte*) ultoa::buffer#14 +(byte*) ultoa::buffer#15 +(byte*) ultoa::buffer#16 +(byte*) ultoa::buffer#17 +(byte*) ultoa::buffer#18 +(byte*) ultoa::buffer#19 +(byte*) ultoa::buffer#2 +(byte*) ultoa::buffer#20 +(byte*) ultoa::buffer#21 +(byte*) ultoa::buffer#3 +(byte*) ultoa::buffer#4 +(byte*) ultoa::buffer#5 +(byte*) ultoa::buffer#6 +(byte*) ultoa::buffer#7 +(byte*) ultoa::buffer#8 +(byte*) ultoa::buffer#9 +(byte) ultoa::digit +(byte) ultoa::digit#0 +(byte) ultoa::digit#1 +(byte) ultoa::digit#2 +(byte) ultoa::digit#3 +(byte) ultoa::digit#4 +(byte) ultoa::digit#5 +(byte) ultoa::digit#6 +(dword) ultoa::digit_value +(dword) ultoa::digit_value#0 +(dword) ultoa::digit_value#1 +(dword*) ultoa::digit_values +(dword*) ultoa::digit_values#0 +(dword*) ultoa::digit_values#1 +(dword*) ultoa::digit_values#10 +(dword*) ultoa::digit_values#2 +(dword*) ultoa::digit_values#3 +(dword*) ultoa::digit_values#4 +(dword*) ultoa::digit_values#5 +(dword*) ultoa::digit_values#6 +(dword*) ultoa::digit_values#7 +(dword*) ultoa::digit_values#8 +(dword*) ultoa::digit_values#9 +(byte) ultoa::max_digits +(byte) ultoa::max_digits#0 +(byte) ultoa::max_digits#1 +(byte) ultoa::max_digits#10 +(byte) ultoa::max_digits#2 +(byte) ultoa::max_digits#3 +(byte) ultoa::max_digits#4 +(byte) ultoa::max_digits#5 +(byte) ultoa::max_digits#6 +(byte) ultoa::max_digits#7 +(byte) ultoa::max_digits#8 +(byte) ultoa::max_digits#9 +(byte) ultoa::radix +(byte) ultoa::radix#0 +(byte) ultoa::radix#1 +(byte) ultoa::radix#2 +(byte) ultoa::radix#3 +(byte) ultoa::radix#4 +(byte) ultoa::started +(byte) ultoa::started#0 +(byte) ultoa::started#1 +(byte) ultoa::started#2 +(byte) ultoa::started#3 +(byte) ultoa::started#4 +(dword) ultoa::value +(dword) ultoa::value#0 +(dword) ultoa::value#1 +(dword) ultoa::value#10 +(dword) ultoa::value#11 +(dword) ultoa::value#12 +(dword) ultoa::value#13 +(dword) ultoa::value#14 +(dword) ultoa::value#15 +(dword) ultoa::value#2 +(dword) ultoa::value#3 +(dword) ultoa::value#4 +(dword) ultoa::value#5 +(dword) ultoa::value#6 +(dword) ultoa::value#7 +(dword) ultoa::value#8 +(dword) ultoa::value#9 +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +(bool~) ultoa_append::$0 +(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 +(byte*) ultoa_append::buffer#1 +(byte*) ultoa_append::buffer#2 +(byte*) ultoa_append::buffer#3 +(byte*) ultoa_append::buffer#4 +(byte) ultoa_append::digit +(byte) ultoa_append::digit#0 +(byte) ultoa_append::digit#1 +(byte) ultoa_append::digit#2 +(byte) ultoa_append::digit#3 +(byte) ultoa_append::digit#4 +(dword) ultoa_append::return +(dword) ultoa_append::return#0 +(dword) ultoa_append::return#1 +(dword) ultoa_append::return#2 +(dword) ultoa_append::return#3 +(dword) ultoa_append::return#4 +(dword) ultoa_append::sub +(dword) ultoa_append::sub#0 +(dword) ultoa_append::sub#1 +(dword) ultoa_append::sub#2 +(dword) ultoa_append::sub#3 +(dword) ultoa_append::value +(dword) ultoa_append::value#0 +(dword) ultoa_append::value#1 +(dword) ultoa_append::value#2 +(dword) ultoa_append::value#3 +(dword) ultoa_append::value#4 +(dword) ultoa_append::value#5 +(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) +(bool~) utoa::$0 +(bool~) utoa::$1 +(byte~) utoa::$10 +(byte~) utoa::$11 +(bool~) utoa::$2 +(bool~) utoa::$3 +(number~) utoa::$4 +(bool~) utoa::$5 +(bool~) utoa::$6 +(bool~) utoa::$7 +(bool~) utoa::$8 +(word~) utoa::$9 +(label) utoa::@1 +(label) utoa::@10 +(label) utoa::@11 +(label) utoa::@12 +(label) utoa::@13 +(label) utoa::@14 +(label) utoa::@15 +(label) utoa::@2 +(label) utoa::@3 +(label) utoa::@4 +(label) utoa::@5 +(label) utoa::@6 +(label) utoa::@7 +(label) utoa::@8 +(label) utoa::@9 +(label) utoa::@return +(byte*) utoa::buffer +(byte*) utoa::buffer#0 +(byte*) utoa::buffer#1 +(byte*) utoa::buffer#10 +(byte*) utoa::buffer#11 +(byte*) utoa::buffer#12 +(byte*) utoa::buffer#13 +(byte*) utoa::buffer#14 +(byte*) utoa::buffer#15 +(byte*) utoa::buffer#16 +(byte*) utoa::buffer#17 +(byte*) utoa::buffer#18 +(byte*) utoa::buffer#19 +(byte*) utoa::buffer#2 +(byte*) utoa::buffer#20 +(byte*) utoa::buffer#21 +(byte*) utoa::buffer#3 +(byte*) utoa::buffer#4 +(byte*) utoa::buffer#5 +(byte*) utoa::buffer#6 +(byte*) utoa::buffer#7 +(byte*) utoa::buffer#8 +(byte*) utoa::buffer#9 +(byte) utoa::digit +(byte) utoa::digit#0 +(byte) utoa::digit#1 +(byte) utoa::digit#2 +(byte) utoa::digit#3 +(byte) utoa::digit#4 +(byte) utoa::digit#5 +(byte) utoa::digit#6 +(word) utoa::digit_value +(word) utoa::digit_value#0 +(word) utoa::digit_value#1 +(word*) utoa::digit_values +(word*) utoa::digit_values#0 +(word*) utoa::digit_values#1 +(word*) utoa::digit_values#10 +(word*) utoa::digit_values#2 +(word*) utoa::digit_values#3 +(word*) utoa::digit_values#4 +(word*) utoa::digit_values#5 +(word*) utoa::digit_values#6 +(word*) utoa::digit_values#7 +(word*) utoa::digit_values#8 +(word*) utoa::digit_values#9 +(byte) utoa::max_digits +(byte) utoa::max_digits#0 +(byte) utoa::max_digits#1 +(byte) utoa::max_digits#10 +(byte) utoa::max_digits#2 +(byte) utoa::max_digits#3 +(byte) utoa::max_digits#4 +(byte) utoa::max_digits#5 +(byte) utoa::max_digits#6 +(byte) utoa::max_digits#7 +(byte) utoa::max_digits#8 +(byte) utoa::max_digits#9 +(byte) utoa::radix +(byte) utoa::radix#0 +(byte) utoa::radix#1 +(byte) utoa::radix#2 +(byte) utoa::radix#3 +(byte) utoa::radix#4 +(byte) utoa::started +(byte) utoa::started#0 +(byte) utoa::started#1 +(byte) utoa::started#2 +(byte) utoa::started#3 +(byte) utoa::started#4 +(word) utoa::value +(word) utoa::value#0 +(word) utoa::value#1 +(word) utoa::value#10 +(word) utoa::value#11 +(word) utoa::value#12 +(word) utoa::value#13 +(word) utoa::value#14 +(word) utoa::value#15 +(word) utoa::value#2 +(word) utoa::value#3 +(word) utoa::value#4 +(word) utoa::value#5 +(word) utoa::value#6 +(word) utoa::value#7 +(word) utoa::value#8 +(word) utoa::value#9 +(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) +(bool~) utoa_append::$0 +(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 +(byte*) utoa_append::buffer#1 +(byte*) utoa_append::buffer#2 +(byte*) utoa_append::buffer#3 +(byte*) utoa_append::buffer#4 +(byte) utoa_append::digit +(byte) utoa_append::digit#0 +(byte) utoa_append::digit#1 +(byte) utoa_append::digit#2 +(byte) utoa_append::digit#3 +(byte) utoa_append::digit#4 +(word) utoa_append::return +(word) utoa_append::return#0 +(word) utoa_append::return#1 +(word) utoa_append::return#2 +(word) utoa_append::return#3 +(word) utoa_append::return#4 +(word) utoa_append::sub +(word) utoa_append::sub#0 +(word) utoa_append::sub#1 +(word) utoa_append::sub#2 +(word) utoa_append::sub#3 +(word) utoa_append::value +(word) utoa_append::value#0 +(word) utoa_append::value#1 +(word) utoa_append::value#2 +(word) utoa_append::value#3 +(word) utoa_append::value#4 +(word) utoa_append::value#5 + +Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) strupr::$1 ← (number) 0 != *((byte*) strupr::src#2) +Adding number conversion cast (unumber) 0 in (bool~) strlen::$0 ← (number) 0 != *((byte*) strlen::str#2) +Adding number conversion cast (unumber) 3 in (byte) uctoa::max_digits#1 ← (number) 3 +Adding number conversion cast (unumber) 2 in (byte) uctoa::max_digits#2 ← (number) 2 +Adding number conversion cast (unumber) 3 in (byte) uctoa::max_digits#3 ← (number) 3 +Adding number conversion cast (unumber) 8 in (byte) uctoa::max_digits#4 ← (number) 8 +Adding number conversion cast (unumber) 0 in *((byte*) uctoa::buffer#2) ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) uctoa::$4 ← (byte) uctoa::max_digits#5 - (number) 1 +Adding number conversion cast (unumber) uctoa::$4 in (number~) uctoa::$4 ← (byte) uctoa::max_digits#5 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((byte*) uctoa::buffer#3) ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) uctoa::started#1 ← (number) 1 +Adding number conversion cast (unumber) 5 in (byte) utoa::max_digits#1 ← (number) 5 +Adding number conversion cast (unumber) 4 in (byte) utoa::max_digits#2 ← (number) 4 +Adding number conversion cast (unumber) 6 in (byte) utoa::max_digits#3 ← (number) 6 +Adding number conversion cast (unumber) $10 in (byte) utoa::max_digits#4 ← (number) $10 +Adding number conversion cast (unumber) 0 in *((byte*) utoa::buffer#2) ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) utoa::$4 ← (byte) utoa::max_digits#5 - (number) 1 +Adding number conversion cast (unumber) utoa::$4 in (number~) utoa::$4 ← (byte) utoa::max_digits#5 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((byte*) utoa::buffer#3) ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) utoa::started#1 ← (number) 1 +Adding number conversion cast (unumber) $a in (byte) ultoa::max_digits#1 ← (number) $a +Adding number conversion cast (unumber) 8 in (byte) ultoa::max_digits#2 ← (number) 8 +Adding number conversion cast (unumber) $b in (byte) ultoa::max_digits#3 ← (number) $b +Adding number conversion cast (unumber) $20 in (byte) ultoa::max_digits#4 ← (number) $20 +Adding number conversion cast (unumber) 0 in *((byte*) ultoa::buffer#2) ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (number) 1 +Adding number conversion cast (unumber) ultoa::$4 in (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((byte*) ultoa::buffer#3) ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) ultoa::started#1 ← (number) 1 +Adding number conversion cast (unumber) $28*$19 in (word) memset::num#0 ← (number) $28*(number) $19 +Adding number conversion cast (unumber) 0 in (byte) printf_cursor_x ← (number) 0 +Adding number conversion cast (unumber) 0 in (byte) printf_cursor_y ← (number) 0 +Adding number conversion cast (unumber) $28 in (bool~) printf_char::$0 ← (byte) printf_cursor_x == (number) $28 +Adding number conversion cast (unumber) 0 in (byte) printf_cursor_x ← (number) 0 +Adding number conversion cast (unumber) $28 in (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (number) $28 +Adding number conversion cast (unumber) 0 in (byte) printf_cursor_x ← (number) 0 +Adding number conversion cast (unumber) $19 in (bool~) printf_scroll::$0 ← (byte) printf_cursor_y == (number) $19 +Adding number conversion cast (unumber) $28*$19-$28 in (word) memcpy::num#0 ← (number) $28*(number) $19-(number) $28 +Adding number conversion cast (unumber) $28 in (word) memset::num#1 ← (number) $28 +Adding number conversion cast (unumber) $28 in (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (number) $28 +Adding number conversion cast (unumber) 0 in (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) printf_ulong::$5 ← (number) 0 != (byte) printf_ulong::format_sign_always#1 +Adding number conversion cast (unumber) printf_ulong::$2 in (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (number~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) +Adding number conversion cast (unumber) printf_ulong::$0 in (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (unumber~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) +Adding number conversion cast (unumber) 0 in (bool~) printf_uint::$5 ← (number) 0 != (byte) printf_uint::format_sign_always#1 +Adding number conversion cast (unumber) printf_uint::$2 in (byte) printf_uint::format_upper_case#2 ← phi( printf_uint::@1/(byte) printf_uint::format_upper_case#3 printf_uint::@2/(byte) printf_uint::format_upper_case#4 ) + (byte) printf_uint::format_zero_padding#2 ← phi( printf_uint::@1/(byte) printf_uint::format_zero_padding#3 printf_uint::@2/(byte) printf_uint::format_zero_padding#4 ) + (byte) printf_uint::format_sign_always#3 ← phi( printf_uint::@1/(byte) printf_uint::format_sign_always#4 printf_uint::@2/(byte) printf_uint::format_sign_always#5 ) + (byte) printf_uint::format_justify_left#2 ← phi( printf_uint::@1/(byte) printf_uint::format_justify_left#3 printf_uint::@2/(byte) printf_uint::format_justify_left#4 ) + (byte) printf_uint::format_min_length#2 ← phi( printf_uint::@1/(byte) printf_uint::format_min_length#3 printf_uint::@2/(byte) printf_uint::format_min_length#4 ) + (byte) printf_uint::format_radix#1 ← phi( printf_uint::@1/(byte) printf_uint::format_radix#3 printf_uint::@2/(byte) printf_uint::format_radix#4 ) + (word) printf_uint::uvalue#1 ← phi( printf_uint::@1/(word) printf_uint::uvalue#2 printf_uint::@2/(word) printf_uint::uvalue#3 ) + (number~) printf_uint::$2 ← phi( printf_uint::@1/(byte~) printf_uint::$1 printf_uint::@2/(number~) printf_uint::$0 ) +Adding number conversion cast (unumber) printf_uint::$0 in (byte) printf_uint::format_upper_case#2 ← phi( printf_uint::@1/(byte) printf_uint::format_upper_case#3 printf_uint::@2/(byte) printf_uint::format_upper_case#4 ) + (byte) printf_uint::format_zero_padding#2 ← phi( printf_uint::@1/(byte) printf_uint::format_zero_padding#3 printf_uint::@2/(byte) printf_uint::format_zero_padding#4 ) + (byte) printf_uint::format_sign_always#3 ← phi( printf_uint::@1/(byte) printf_uint::format_sign_always#4 printf_uint::@2/(byte) printf_uint::format_sign_always#5 ) + (byte) printf_uint::format_justify_left#2 ← phi( printf_uint::@1/(byte) printf_uint::format_justify_left#3 printf_uint::@2/(byte) printf_uint::format_justify_left#4 ) + (byte) printf_uint::format_min_length#2 ← phi( printf_uint::@1/(byte) printf_uint::format_min_length#3 printf_uint::@2/(byte) printf_uint::format_min_length#4 ) + (byte) printf_uint::format_radix#1 ← phi( printf_uint::@1/(byte) printf_uint::format_radix#3 printf_uint::@2/(byte) printf_uint::format_radix#4 ) + (word) printf_uint::uvalue#1 ← phi( printf_uint::@1/(word) printf_uint::uvalue#2 printf_uint::@2/(word) printf_uint::uvalue#3 ) + (unumber~) printf_uint::$2 ← phi( printf_uint::@1/(byte~) printf_uint::$1 printf_uint::@2/(number~) printf_uint::$0 ) +Adding number conversion cast (unumber) 0 in (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#2 +Adding number conversion cast (unumber) printf_uchar::$2 in (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) + (number~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) +Adding number conversion cast (unumber) printf_uchar::$0 in (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) + (unumber~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 +Adding number conversion cast (snumber) 0 in (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (number) 0 +Adding number conversion cast (snumber) 0 in (signed byte) printf_number_buffer::padding#2 ← (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#4 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#5 +Adding number conversion cast (unumber) 8 in (word) printf_uint::uvalue#0 ← (number) 8 +Adding number conversion cast (unumber) 1 in stackpush(byte) ← (number) 1 +Adding number conversion cast (unumber) 8 in (bool~) queen::$0 ← (byte) queen::column <= (number) 8 +Adding number conversion cast (unumber) 0 in (bool~) queen::$7 ← (number) 0 != (byte~) queen::$1 +Adding number conversion cast (unumber) 8 in (bool~) queen::$3 ← (byte) queen::r == (number) 8 +Adding number conversion cast (unumber) 1 in (number~) queen::$4 ← (byte) queen::r + (number) 1 +Adding number conversion cast (unumber) queen::$4 in (number~) queen::$4 ← (byte) queen::r + (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (number~) legal::$0 ← (byte) legal::row#1 - (number) 1 +Adding number conversion cast (unumber) legal::$0 in (number~) legal::$0 ← (byte) legal::row#1 - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (byte) legal::return#1 ← (number) 1 +Adding number conversion cast (unumber) 0 in (byte) legal::return#2 ← (number) 0 +Adding number conversion cast (unumber) 0 in (byte) legal::return#3 ← (number) 0 +Adding number conversion cast (unumber) 8 in (bool~) print::$1 ← (byte) print::i#2 <= (number) 8 +Adding number conversion cast (unumber) 8 in (bool~) print::$3 ← (byte) print::i1#2 <= (number) 8 +Adding number conversion cast (unumber) 8 in (bool~) print::$5 ← (byte) print::j#2 <= (number) 8 +Successful SSA optimization PassNAddNumberTypeConversions +Adding number conversion cast (unumber) 0 in (unumber~) printf_ulong::$0 ← (number) 0 +Adding number conversion cast (unumber) 0 in (unumber~) printf_uint::$0 ← (number) 0 +Adding number conversion cast (unumber) 0 in (unumber~) printf_uchar::$0 ← (number) 0 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte*) memcpy::src#0 ← (byte*)(void*) memcpy::source#1 +Inlining cast (byte*) memcpy::dst#0 ← (byte*)(void*) memcpy::destination#1 +Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 +Inlining cast (byte) uctoa::max_digits#1 ← (unumber)(number) 3 +Inlining cast (byte) uctoa::max_digits#2 ← (unumber)(number) 2 +Inlining cast (byte) uctoa::max_digits#3 ← (unumber)(number) 3 +Inlining cast (byte) uctoa::max_digits#4 ← (unumber)(number) 8 +Inlining cast *((byte*) uctoa::buffer#2) ← (unumber)(number) 0 +Inlining cast *((byte*) uctoa::buffer#3) ← (unumber)(number) 0 +Inlining cast (byte) uctoa::started#1 ← (unumber)(number) 1 +Inlining cast (byte) utoa::max_digits#1 ← (unumber)(number) 5 +Inlining cast (byte) utoa::max_digits#2 ← (unumber)(number) 4 +Inlining cast (byte) utoa::max_digits#3 ← (unumber)(number) 6 +Inlining cast (byte) utoa::max_digits#4 ← (unumber)(number) $10 +Inlining cast *((byte*) utoa::buffer#2) ← (unumber)(number) 0 +Inlining cast *((byte*) utoa::buffer#3) ← (unumber)(number) 0 +Inlining cast (byte) utoa::started#1 ← (unumber)(number) 1 +Inlining cast (byte) ultoa::max_digits#1 ← (unumber)(number) $a +Inlining cast (byte) ultoa::max_digits#2 ← (unumber)(number) 8 +Inlining cast (byte) ultoa::max_digits#3 ← (unumber)(number) $b +Inlining cast (byte) ultoa::max_digits#4 ← (unumber)(number) $20 +Inlining cast *((byte*) ultoa::buffer#2) ← (unumber)(number) 0 +Inlining cast *((byte*) ultoa::buffer#3) ← (unumber)(number) 0 +Inlining cast (byte) ultoa::started#1 ← (unumber)(number) 1 +Inlining cast (word) memset::num#0 ← (unumber)(number) $28*(number) $19 +Inlining cast (byte*) printf_cursor_ptr ← (byte*)(number) $400 +Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 +Inlining cast (byte) printf_cursor_y ← (unumber)(number) 0 +Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 +Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 +Inlining cast (word) memcpy::num#0 ← (unumber)(number) $28*(number) $19-(number) $28 +Inlining cast (word) memset::num#1 ← (unumber)(number) $28 +Inlining cast (unumber~) printf_ulong::$0 ← (unumber)(number) 0 +Inlining cast (unumber~) printf_uint::$0 ← (unumber)(number) 0 +Inlining cast (unumber~) printf_uchar::$0 ← (unumber)(number) 0 +Inlining cast (signed byte) printf_number_buffer::padding#2 ← (snumber)(number) 0 +Inlining cast (word) printf_uint::uvalue#0 ← (unumber)(number) 8 +Inlining cast stackpush(byte) ← (unumber)(number) 1 +Inlining cast (byte) legal::return#1 ← (unumber)(number) 1 +Inlining cast (byte) legal::return#2 ← (unumber)(number) 0 +Inlining cast (byte) legal::return#3 ← (unumber)(number) 0 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 3 +Simplifying constant integer cast 2 +Simplifying constant integer cast 3 +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast (byte) uctoa::value#3 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 5 +Simplifying constant integer cast 4 +Simplifying constant integer cast 6 +Simplifying constant integer cast $10 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $a +Simplifying constant integer cast 8 +Simplifying constant integer cast $b +Simplifying constant integer cast $20 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (void*) 1024 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast 0 +Simplifying constant integer cast $28 +Simplifying constant integer cast 0 +Simplifying constant integer cast $19 +Simplifying constant pointer cast (void*) 1024 +Simplifying constant integer cast $28 +Simplifying constant integer cast $28 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 1 +Simplifying constant integer cast 8 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Simplifying constant integer cast 8 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 5 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 6 +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) $b +Finalized unsigned number type (byte) $20 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $28 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $28 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $19 +Finalized unsigned number type (byte) $28 +Finalized unsigned number type (byte) $28 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 8 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inferred type updated to byte in (unumber~) uctoa::$4 ← (byte) uctoa::max_digits#5 - (byte) 1 +Inferred type updated to byte in (unumber~) utoa::$4 ← (byte) utoa::max_digits#5 - (byte) 1 +Inferred type updated to byte in (unumber~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (byte) 1 +Inferred type updated to byte in (unumber~) printf_ulong::$0 ← (byte) 0 +Inferred type updated to byte for (unumber~) printf_ulong::$2 +Inferred type updated to byte in (unumber~) printf_uint::$0 ← (byte) 0 +Inferred type updated to byte for (unumber~) printf_uint::$2 +Inferred type updated to byte in (unumber~) printf_uchar::$0 ← (byte) 0 +Inferred type updated to byte for (unumber~) printf_uchar::$2 +Inferred type updated to byte in (unumber~) queen::$4 ← (byte) queen::r + (byte) 1 +Inferred type updated to byte in (unumber~) legal::$0 ← (byte) legal::row#1 - (byte) 1 +Inversing boolean not [33] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [32] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 +Inversing boolean not [341] (bool~) printf_char::$1 ← (byte) printf_cursor_x != (byte) $28 from [340] (bool~) printf_char::$0 ← (byte) printf_cursor_x == (byte) $28 +Inversing boolean not [355] (bool~) printf_scroll::$1 ← (byte) printf_cursor_y != (byte) $19 from [354] (bool~) printf_scroll::$0 ← (byte) printf_cursor_y == (byte) $19 +Inversing boolean not [389] (bool~) printf_str::$1 ← (byte) printf_str::ch#0 != (byte) 0 from [388] (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (byte) 0 +Inversing boolean not [477] (bool~) printf_number_buffer::$0 ← (byte) 0 == (byte) printf_number_buffer::format_min_length#3 from [476] (bool~) printf_number_buffer::$26 ← (byte) 0 != (byte) printf_number_buffer::format_min_length#3 +Inversing boolean not [481] (bool~) printf_number_buffer::$1 ← (byte) 0 == (byte) printf_number_buffer::format_justify_left#3 from [480] (bool~) printf_number_buffer::$27 ← (byte) 0 != (byte) printf_number_buffer::format_justify_left#3 +Inversing boolean not [483] (bool~) printf_number_buffer::$2 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#3 from [482] (bool~) printf_number_buffer::$28 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#3 +Inversing boolean not [496] (bool~) printf_number_buffer::$20 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#3 from [495] (bool~) printf_number_buffer::$29 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#3 +Inversing boolean not [503] (bool~) printf_number_buffer::$23 ← (signed byte) printf_number_buffer::padding#1 >= (signed byte) 0 from [502] (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (signed byte) 0 +Inversing boolean not [511] (bool~) printf_number_buffer::$7 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#4 from [510] (bool~) printf_number_buffer::$30 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#4 +Inversing boolean not [528] (bool~) printf_number_buffer::$12 ← (byte) 0 == (byte) printf_number_buffer::format_upper_case#3 from [527] (bool~) printf_number_buffer::$31 ← (byte) 0 != (byte) printf_number_buffer::format_upper_case#3 +Inversing boolean not [540] (bool~) printf_number_buffer::$14 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#5 from [539] (bool~) printf_number_buffer::$32 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#5 +Inversing boolean not [585] (bool~) queen::$2 ← (byte) 0 == (byte~) queen::$1 from [584] (bool~) queen::$7 ← (byte) 0 != (byte~) queen::$1 +Inversing boolean not [624] (bool~) legal::$6 ← (byte~) legal::$3 != (byte~) legal::$4 from [623] (bool~) legal::$5 ← (byte~) legal::$3 == (byte~) legal::$4 +Successful SSA optimization Pass2UnaryNotSimplification +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Alias toupper::ch#1 = toupper::ch#2 toupper::ch#3 toupper::return#1 +Alias toupper::return#0 = toupper::$3 +Alias toupper::return#2 = toupper::return#4 +Alias memcpy::src_end#0 = memcpy::$0 +Alias memcpy::src#2 = memcpy::src#3 +Alias memcpy::dst#2 = memcpy::dst#3 +Alias memcpy::src_end#1 = memcpy::src_end#2 +Alias memcpy::destination#2 = memcpy::destination#4 memcpy::destination#3 memcpy::return#0 memcpy::return#3 memcpy::return#1 +Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 +Alias memset::str#3 = memset::str#4 +Alias memset::num#2 = memset::num#3 +Alias memset::c#4 = memset::c#5 +Alias memset::end#0 = memset::$2 +Alias memset::c#2 = memset::c#3 +Alias memset::dst#2 = memset::dst#3 +Alias memset::end#1 = memset::end#2 +Alias memset::str#5 = memset::str#6 +Alias strupr::src#0 = strupr::str#1 +Alias strupr::src#2 = strupr::src#3 strupr::src#4 +Alias strupr::str#2 = strupr::str#5 strupr::str#3 strupr::str#4 strupr::return#0 strupr::return#3 strupr::return#1 +Alias toupper::return#3 = toupper::return#5 +Alias strlen::len#2 = strlen::len#4 strlen::len#3 strlen::return#0 strlen::return#3 strlen::return#1 +Alias strlen::str#2 = strlen::str#3 +Alias uctoa::value#10 = uctoa::value#8 uctoa::value#12 uctoa::value#13 uctoa::value#9 uctoa::value#14 uctoa::value#15 uctoa::value#11 +Alias uctoa::buffer#10 = uctoa::buffer#17 uctoa::buffer#21 uctoa::buffer#16 uctoa::buffer#18 uctoa::buffer#13 uctoa::buffer#19 uctoa::buffer#20 uctoa::buffer#6 +Alias uctoa::radix#1 = uctoa::radix#2 uctoa::radix#3 uctoa::radix#4 +Alias uctoa::digit_values#10 = uctoa::digit_values#5 uctoa::digit_values#6 uctoa::digit_values#9 +Alias uctoa::digit#2 = uctoa::digit#3 uctoa::digit#6 uctoa::digit#5 +Alias uctoa::value#2 = uctoa::value#5 uctoa::value#3 uctoa::$10 uctoa::value#4 +Alias uctoa::started#2 = uctoa::started#3 +Alias uctoa::buffer#11 = uctoa::buffer#12 uctoa::buffer#7 uctoa::buffer#8 uctoa::buffer#9 +Alias uctoa::max_digits#10 = uctoa::max_digits#8 uctoa::max_digits#5 uctoa::max_digits#9 +Alias uctoa::digit_value#0 = uctoa::digit_value#1 +Alias uctoa_append::return#0 = uctoa_append::return#3 +Alias uctoa::value#0 = uctoa::$9 +Alias uctoa_append::digit#2 = uctoa_append::digit#4 uctoa_append::digit#3 +Alias uctoa_append::value#2 = uctoa_append::value#3 uctoa_append::value#4 uctoa_append::return#1 uctoa_append::return#4 uctoa_append::return#2 +Alias uctoa_append::sub#1 = uctoa_append::sub#2 +Alias uctoa_append::buffer#1 = uctoa_append::buffer#4 uctoa_append::buffer#2 +Alias utoa::value#10 = utoa::value#8 utoa::value#12 utoa::value#13 utoa::value#9 utoa::value#14 utoa::value#15 utoa::value#11 +Alias utoa::buffer#10 = utoa::buffer#17 utoa::buffer#21 utoa::buffer#16 utoa::buffer#18 utoa::buffer#13 utoa::buffer#19 utoa::buffer#20 utoa::buffer#6 +Alias utoa::radix#1 = utoa::radix#2 utoa::radix#3 utoa::radix#4 +Alias utoa::digit#2 = utoa::digit#3 utoa::digit#6 utoa::digit#5 +Alias utoa::digit_values#10 = utoa::digit_values#5 utoa::digit_values#6 utoa::digit_values#9 +Alias utoa::value#2 = utoa::value#5 utoa::value#3 utoa::value#4 +Alias utoa::started#2 = utoa::started#3 +Alias utoa::buffer#11 = utoa::buffer#12 utoa::buffer#7 utoa::buffer#8 utoa::buffer#9 +Alias utoa::max_digits#10 = utoa::max_digits#8 utoa::max_digits#5 utoa::max_digits#9 +Alias utoa::digit_value#0 = utoa::digit_value#1 +Alias utoa_append::return#0 = utoa_append::return#3 +Alias utoa::value#0 = utoa::$9 +Alias utoa_append::digit#2 = utoa_append::digit#4 utoa_append::digit#3 +Alias utoa_append::value#2 = utoa_append::value#3 utoa_append::value#4 utoa_append::return#1 utoa_append::return#4 utoa_append::return#2 +Alias utoa_append::sub#1 = utoa_append::sub#2 +Alias utoa_append::buffer#1 = utoa_append::buffer#4 utoa_append::buffer#2 +Alias ultoa::value#10 = ultoa::value#8 ultoa::value#12 ultoa::value#13 ultoa::value#9 ultoa::value#14 ultoa::value#15 ultoa::value#11 +Alias ultoa::buffer#10 = ultoa::buffer#17 ultoa::buffer#21 ultoa::buffer#16 ultoa::buffer#18 ultoa::buffer#13 ultoa::buffer#19 ultoa::buffer#20 ultoa::buffer#6 +Alias ultoa::radix#1 = ultoa::radix#2 ultoa::radix#3 ultoa::radix#4 +Alias ultoa::digit#2 = ultoa::digit#3 ultoa::digit#6 ultoa::digit#5 +Alias ultoa::digit_values#10 = ultoa::digit_values#5 ultoa::digit_values#6 ultoa::digit_values#9 +Alias ultoa::value#2 = ultoa::value#5 ultoa::value#3 ultoa::value#4 +Alias ultoa::started#2 = ultoa::started#3 +Alias ultoa::buffer#11 = ultoa::buffer#12 ultoa::buffer#7 ultoa::buffer#8 ultoa::buffer#9 +Alias ultoa::max_digits#10 = ultoa::max_digits#8 ultoa::max_digits#5 ultoa::max_digits#9 +Alias ultoa::digit_value#0 = ultoa::digit_value#1 +Alias ultoa_append::return#0 = ultoa_append::return#3 +Alias ultoa::value#0 = ultoa::$9 +Alias ultoa_append::digit#2 = ultoa_append::digit#4 ultoa_append::digit#3 +Alias ultoa_append::value#2 = ultoa_append::value#3 ultoa_append::value#4 ultoa_append::return#1 ultoa_append::return#4 ultoa_append::return#2 +Alias ultoa_append::sub#1 = ultoa_append::sub#2 +Alias ultoa_append::buffer#1 = ultoa_append::buffer#4 ultoa_append::buffer#2 +Alias printf_padding::pad#3 = printf_padding::pad#4 printf_padding::pad#6 +Alias printf_padding::i#2 = printf_padding::i#4 printf_padding::i#3 +Alias printf_padding::length#3 = printf_padding::length#6 printf_padding::length#5 +Alias printf_str::str#10 = printf_str::str#9 +Alias printf_str::ch#0 = printf_str::ch#1 printf_str::ch#2 +Alias printf_str::str#0 = printf_str::str#16 printf_str::str#14 printf_str::str#12 printf_str::str#15 printf_str::str#13 +Alias printf_ulong::uvalue#2 = printf_ulong::uvalue#4 printf_ulong::uvalue#3 +Alias printf_ulong::format_radix#3 = printf_ulong::format_radix#5 printf_ulong::format_radix#4 +Alias printf_ulong::format_min_length#3 = printf_ulong::format_min_length#5 printf_ulong::format_min_length#4 +Alias printf_ulong::format_justify_left#3 = printf_ulong::format_justify_left#5 printf_ulong::format_justify_left#4 +Alias printf_ulong::format_sign_always#1 = printf_ulong::format_sign_always#4 printf_ulong::format_sign_always#5 +Alias printf_ulong::format_zero_padding#3 = printf_ulong::format_zero_padding#5 printf_ulong::format_zero_padding#4 +Alias printf_ulong::format_upper_case#3 = printf_ulong::format_upper_case#5 printf_ulong::format_upper_case#4 +Alias printf_ulong::format_min_length#1 = printf_ulong::format_min_length#2 +Alias printf_ulong::format_justify_left#1 = printf_ulong::format_justify_left#2 +Alias printf_ulong::format_sign_always#2 = printf_ulong::format_sign_always#3 +Alias printf_ulong::format_zero_padding#1 = printf_ulong::format_zero_padding#2 +Alias printf_ulong::format_upper_case#1 = printf_ulong::format_upper_case#2 +Alias printf_ulong::format_radix#1 = printf_ulong::format_radix#2 +Alias printf_uint::uvalue#2 = printf_uint::uvalue#4 printf_uint::uvalue#3 +Alias printf_uint::format_radix#3 = printf_uint::format_radix#5 printf_uint::format_radix#4 +Alias printf_uint::format_min_length#3 = printf_uint::format_min_length#5 printf_uint::format_min_length#4 +Alias printf_uint::format_justify_left#3 = printf_uint::format_justify_left#5 printf_uint::format_justify_left#4 +Alias printf_uint::format_sign_always#1 = printf_uint::format_sign_always#4 printf_uint::format_sign_always#5 +Alias printf_uint::format_zero_padding#3 = printf_uint::format_zero_padding#5 printf_uint::format_zero_padding#4 +Alias printf_uint::format_upper_case#3 = printf_uint::format_upper_case#5 printf_uint::format_upper_case#4 +Alias printf_uint::format_min_length#1 = printf_uint::format_min_length#2 +Alias printf_uint::format_justify_left#1 = printf_uint::format_justify_left#2 +Alias printf_uint::format_sign_always#2 = printf_uint::format_sign_always#3 +Alias printf_uint::format_zero_padding#1 = printf_uint::format_zero_padding#2 +Alias printf_uint::format_upper_case#1 = printf_uint::format_upper_case#2 +Alias printf_uint::format_radix#1 = printf_uint::format_radix#2 +Alias printf_uchar::uvalue#3 = printf_uchar::uvalue#5 printf_uchar::uvalue#4 +Alias printf_uchar::format_radix#4 = printf_uchar::format_radix#6 printf_uchar::format_radix#5 +Alias printf_uchar::format_min_length#4 = printf_uchar::format_min_length#6 printf_uchar::format_min_length#5 +Alias printf_uchar::format_justify_left#4 = printf_uchar::format_justify_left#6 printf_uchar::format_justify_left#5 +Alias printf_uchar::format_sign_always#2 = printf_uchar::format_sign_always#5 printf_uchar::format_sign_always#6 +Alias printf_uchar::format_zero_padding#4 = printf_uchar::format_zero_padding#6 printf_uchar::format_zero_padding#5 +Alias printf_uchar::format_upper_case#4 = printf_uchar::format_upper_case#6 printf_uchar::format_upper_case#5 +Alias printf_uchar::format_min_length#2 = printf_uchar::format_min_length#3 +Alias printf_uchar::format_justify_left#2 = printf_uchar::format_justify_left#3 +Alias printf_uchar::format_sign_always#3 = printf_uchar::format_sign_always#4 +Alias printf_uchar::format_zero_padding#2 = printf_uchar::format_zero_padding#3 +Alias printf_uchar::format_upper_case#2 = printf_uchar::format_upper_case#3 +Alias printf_uchar::format_radix#2 = printf_uchar::format_radix#3 +Alias printf_number_buffer::buffer_digits#20 = printf_number_buffer::buffer_digits#3 printf_number_buffer::buffer_digits#6 printf_number_buffer::buffer_digits#21 +Alias printf_number_buffer::buffer_sign#13 = printf_number_buffer::buffer_sign#6 printf_number_buffer::buffer_sign#9 printf_number_buffer::buffer_sign#3 +Alias printf_number_buffer::format_min_length#3 = printf_number_buffer::format_min_length#7 printf_number_buffer::format_min_length#5 printf_number_buffer::format_min_length#6 +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#13 printf_number_buffer::format_justify_left#5 printf_number_buffer::format_justify_left#9 +Alias printf_number_buffer::format_zero_padding#12 = printf_number_buffer::format_zero_padding#18 printf_number_buffer::format_zero_padding#6 printf_number_buffer::format_zero_padding#13 +Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#18 printf_number_buffer::format_upper_case#16 printf_number_buffer::format_upper_case#17 +Alias strlen::return#2 = strlen::return#4 +Alias printf_number_buffer::padding#1 = printf_number_buffer::$21 +Alias printf_number_buffer::len#0 = printf_number_buffer::len#3 +Alias printf_number_buffer::format_justify_left#6 = printf_number_buffer::format_justify_left#7 +Alias printf_number_buffer::format_zero_padding#7 = printf_number_buffer::format_zero_padding#8 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#11 +Alias printf_number_buffer::format_upper_case#13 = printf_number_buffer::format_upper_case#14 +Alias printf_number_buffer::buffer_digits#17 = printf_number_buffer::buffer_digits#18 +Alias printf_number_buffer::padding#12 = printf_number_buffer::padding#4 printf_number_buffer::padding#3 +Alias printf_number_buffer::buffer_sign#12 = printf_number_buffer::buffer_sign#7 printf_number_buffer::buffer_sign#8 +Alias printf_number_buffer::format_zero_padding#14 = printf_number_buffer::format_zero_padding#19 printf_number_buffer::format_zero_padding#3 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#15 printf_number_buffer::format_upper_case#9 +Alias printf_number_buffer::buffer_digits#14 = printf_number_buffer::buffer_digits#19 printf_number_buffer::buffer_digits#15 +Alias printf_number_buffer::format_justify_left#20 = printf_number_buffer::format_justify_left#22 printf_number_buffer::format_justify_left#3 +Alias printf_number_buffer::buffer_sign#4 = printf_number_buffer::buffer_sign#5 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#15 printf_number_buffer::format_zero_padding#9 +Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#13 printf_number_buffer::padding#9 +Alias printf_number_buffer::format_upper_case#11 = printf_number_buffer::format_upper_case#7 printf_number_buffer::format_upper_case#6 +Alias printf_number_buffer::buffer_digits#11 = printf_number_buffer::buffer_digits#16 printf_number_buffer::buffer_digits#12 +Alias printf_number_buffer::format_justify_left#17 = printf_number_buffer::format_justify_left#21 printf_number_buffer::format_justify_left#18 +Alias printf_number_buffer::padding#16 = printf_number_buffer::padding#6 printf_number_buffer::padding#5 +Alias printf_number_buffer::format_upper_case#4 = printf_number_buffer::format_upper_case#8 printf_number_buffer::format_upper_case#5 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#13 printf_number_buffer::buffer_digits#9 +Alias printf_number_buffer::format_zero_padding#20 = printf_number_buffer::format_zero_padding#22 printf_number_buffer::format_zero_padding#4 +Alias printf_number_buffer::format_justify_left#14 = printf_number_buffer::format_justify_left#19 printf_number_buffer::format_justify_left#15 +Alias printf_number_buffer::format_zero_padding#11 = printf_number_buffer::format_zero_padding#5 +Alias printf_number_buffer::format_justify_left#4 = printf_number_buffer::format_justify_left#8 +Alias printf_number_buffer::padding#11 = printf_number_buffer::padding#7 printf_number_buffer::padding#8 +Alias printf_number_buffer::buffer_digits#5 = printf_number_buffer::buffer_digits#8 printf_number_buffer::buffer_digits#7 +Alias printf_number_buffer::format_zero_padding#16 = printf_number_buffer::format_zero_padding#21 printf_number_buffer::format_zero_padding#17 +Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#16 printf_number_buffer::format_justify_left#12 +Alias printf_number_buffer::padding#14 = printf_number_buffer::padding#17 printf_number_buffer::padding#15 +Alias legal::return#0 = legal::return#5 +Alias legal::i#2 = legal::i#3 legal::i#4 legal::i#5 legal::i#7 legal::i#6 +Alias legal::column#1 = legal::column#3 legal::column#2 legal::column#7 legal::column#6 legal::column#5 +Alias legal::row#1 = legal::row#6 legal::row#5 legal::row#2 legal::row#7 legal::row#4 +Alias diff::return#0 = diff::return#5 +Alias diff::return#1 = diff::return#6 +Alias legal::return#4 = legal::return#6 +Alias diff::b#2 = diff::b#3 diff::b#4 +Alias diff::a#2 = diff::a#3 diff::a#4 +Alias diff::return#2 = diff::$2 +Alias diff::return#3 = diff::$1 +Alias diff::return#4 = diff::return#7 +Alias print::i#2 = print::i#3 print::i#4 +Alias print::i1#2 = print::i1#6 print::i1#3 print::i1#9 +Alias print::i1#10 = print::i1#4 print::i1#7 print::i1#5 print::i1#12 print::i1#13 print::i1#11 +Alias print::j#2 = print::j#3 print::j#7 print::j#5 print::j#8 print::j#6 +Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Alias uctoa::value#10 = uctoa::value#7 +Alias uctoa::buffer#10 = uctoa::buffer#15 +Alias uctoa::digit#2 = uctoa::digit#4 +Alias uctoa::max_digits#10 = uctoa::max_digits#6 +Alias uctoa::digit_values#10 = uctoa::digit_values#7 +Alias utoa::value#10 = utoa::value#7 +Alias utoa::buffer#10 = utoa::buffer#15 +Alias utoa::digit#2 = utoa::digit#4 +Alias utoa::max_digits#10 = utoa::max_digits#6 +Alias utoa::digit_values#10 = utoa::digit_values#7 +Alias ultoa::value#10 = ultoa::value#7 +Alias ultoa::buffer#10 = ultoa::buffer#15 +Alias ultoa::digit#2 = ultoa::digit#4 +Alias ultoa::max_digits#10 = ultoa::max_digits#6 +Alias ultoa::digit_values#10 = ultoa::digit_values#7 +Alias printf_ulong::uvalue#1 = printf_ulong::uvalue#2 +Alias printf_ulong::format_radix#1 = printf_ulong::format_radix#3 +Alias printf_ulong::format_min_length#1 = printf_ulong::format_min_length#3 +Alias printf_ulong::format_justify_left#1 = printf_ulong::format_justify_left#3 +Alias printf_ulong::format_sign_always#1 = printf_ulong::format_sign_always#2 +Alias printf_ulong::format_zero_padding#1 = printf_ulong::format_zero_padding#3 +Alias printf_ulong::format_upper_case#1 = printf_ulong::format_upper_case#3 +Alias printf_uint::uvalue#1 = printf_uint::uvalue#2 +Alias printf_uint::format_radix#1 = printf_uint::format_radix#3 +Alias printf_uint::format_min_length#1 = printf_uint::format_min_length#3 +Alias printf_uint::format_justify_left#1 = printf_uint::format_justify_left#3 +Alias printf_uint::format_sign_always#1 = printf_uint::format_sign_always#2 +Alias printf_uint::format_zero_padding#1 = printf_uint::format_zero_padding#3 +Alias printf_uint::format_upper_case#1 = printf_uint::format_upper_case#3 +Alias printf_uchar::uvalue#2 = printf_uchar::uvalue#3 +Alias printf_uchar::format_radix#2 = printf_uchar::format_radix#4 +Alias printf_uchar::format_min_length#2 = printf_uchar::format_min_length#4 +Alias printf_uchar::format_justify_left#2 = printf_uchar::format_justify_left#4 +Alias printf_uchar::format_sign_always#2 = printf_uchar::format_sign_always#3 +Alias printf_uchar::format_zero_padding#2 = printf_uchar::format_zero_padding#4 +Alias printf_uchar::format_upper_case#2 = printf_uchar::format_upper_case#4 +Alias printf_number_buffer::format_min_length#3 = printf_number_buffer::format_min_length#4 +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#6 +Alias printf_number_buffer::format_zero_padding#12 = printf_number_buffer::format_zero_padding#7 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#13 +Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#13 +Alias printf_number_buffer::buffer_digits#17 = printf_number_buffer::buffer_digits#20 +Alias printf_number_buffer::buffer_sign#12 = printf_number_buffer::buffer_sign#4 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#14 printf_number_buffer::format_zero_padding#20 printf_number_buffer::format_zero_padding#16 printf_number_buffer::format_zero_padding#11 +Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#12 printf_number_buffer::padding#16 printf_number_buffer::padding#14 printf_number_buffer::padding#11 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#11 printf_number_buffer::format_upper_case#4 printf_number_buffer::format_upper_case#3 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#11 printf_number_buffer::buffer_digits#14 printf_number_buffer::buffer_digits#5 printf_number_buffer::buffer_digits#4 +Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#17 printf_number_buffer::format_justify_left#20 printf_number_buffer::format_justify_left#14 printf_number_buffer::format_justify_left#4 +Alias print::j#2 = print::j#4 +Alias print::i1#10 = print::i1#8 +Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#11 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#12 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#12 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#12 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#17 +Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Identical Phi Values (byte) toupper::ch#1 (byte) toupper::ch#0 +Identical Phi Values (void*) memcpy::source#1 (void*) memcpy::source#0 +Identical Phi Values (void*) memcpy::destination#1 (void*) memcpy::destination#0 +Identical Phi Values (word) memcpy::num#1 (word) memcpy::num#0 +Identical Phi Values (byte*) memcpy::src_end#1 (byte*) memcpy::src_end#0 +Identical Phi Values (void*) memcpy::destination#2 (void*) memcpy::destination#1 +Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 +Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 +Identical Phi Values (byte) memset::c#2 (byte) memset::c#4 +Identical Phi Values (byte*) strupr::src#0 (byte*) strupr::str#0 +Identical Phi Values (byte*) strupr::str#2 (byte*) strupr::src#0 +Identical Phi Values (byte*) strlen::str#4 (byte*) strlen::str#1 +Identical Phi Values (byte) uctoa::radix#1 (byte) uctoa::radix#0 +Identical Phi Values (byte) uctoa::value#10 (byte) uctoa::value#1 +Identical Phi Values (byte*) uctoa::buffer#10 (byte*) uctoa::buffer#5 +Identical Phi Values (byte) uctoa::max_digits#10 (byte) uctoa::max_digits#7 +Identical Phi Values (byte*) uctoa::digit_values#10 (byte*) uctoa::digit_values#8 +Identical Phi Values (byte) uctoa_append::value#5 (byte) uctoa_append::value#0 +Identical Phi Values (byte) uctoa_append::sub#3 (byte) uctoa_append::sub#0 +Identical Phi Values (byte*) uctoa_append::buffer#3 (byte*) uctoa_append::buffer#0 +Identical Phi Values (byte) uctoa_append::sub#1 (byte) uctoa_append::sub#3 +Identical Phi Values (byte*) uctoa_append::buffer#1 (byte*) uctoa_append::buffer#3 +Identical Phi Values (byte) utoa::radix#1 (byte) utoa::radix#0 +Identical Phi Values (word) utoa::value#10 (word) utoa::value#1 +Identical Phi Values (byte*) utoa::buffer#10 (byte*) utoa::buffer#5 +Identical Phi Values (byte) utoa::max_digits#10 (byte) utoa::max_digits#7 +Identical Phi Values (word*) utoa::digit_values#10 (word*) utoa::digit_values#8 +Identical Phi Values (word) utoa_append::value#5 (word) utoa_append::value#0 +Identical Phi Values (word) utoa_append::sub#3 (word) utoa_append::sub#0 +Identical Phi Values (byte*) utoa_append::buffer#3 (byte*) utoa_append::buffer#0 +Identical Phi Values (word) utoa_append::sub#1 (word) utoa_append::sub#3 +Identical Phi Values (byte*) utoa_append::buffer#1 (byte*) utoa_append::buffer#3 +Identical Phi Values (byte) ultoa::radix#1 (byte) ultoa::radix#0 +Identical Phi Values (dword) ultoa::value#10 (dword) ultoa::value#1 +Identical Phi Values (byte*) ultoa::buffer#10 (byte*) ultoa::buffer#5 +Identical Phi Values (byte) ultoa::max_digits#10 (byte) ultoa::max_digits#7 +Identical Phi Values (dword*) ultoa::digit_values#10 (dword*) ultoa::digit_values#8 +Identical Phi Values (dword) ultoa_append::value#5 (dword) ultoa_append::value#0 +Identical Phi Values (dword) ultoa_append::sub#3 (dword) ultoa_append::sub#0 +Identical Phi Values (byte*) ultoa_append::buffer#3 (byte*) ultoa_append::buffer#0 +Identical Phi Values (dword) ultoa_append::sub#1 (dword) ultoa_append::sub#3 +Identical Phi Values (byte*) ultoa_append::buffer#1 (byte*) ultoa_append::buffer#3 +Identical Phi Values (byte) printf_padding::length#3 (byte) printf_padding::length#4 +Identical Phi Values (byte) printf_padding::pad#3 (byte) printf_padding::pad#5 +Identical Phi Values (byte) printf_ulong::format_sign_always#1 (byte) printf_ulong::format_sign_always#0 +Identical Phi Values (dword) printf_ulong::uvalue#1 (dword) printf_ulong::uvalue#0 +Identical Phi Values (byte) printf_ulong::format_radix#1 (byte) printf_ulong::format_radix#0 +Identical Phi Values (byte) printf_ulong::format_min_length#1 (byte) printf_ulong::format_min_length#0 +Identical Phi Values (byte) printf_ulong::format_justify_left#1 (byte) printf_ulong::format_justify_left#0 +Identical Phi Values (byte) printf_ulong::format_zero_padding#1 (byte) printf_ulong::format_zero_padding#0 +Identical Phi Values (byte) printf_ulong::format_upper_case#1 (byte) printf_ulong::format_upper_case#0 +Identical Phi Values (byte) printf_uint::format_sign_always#1 (byte) printf_uint::format_sign_always#0 +Identical Phi Values (word) printf_uint::uvalue#1 (word) printf_uint::uvalue#0 +Identical Phi Values (byte) printf_uint::format_radix#1 (byte) printf_uint::format_radix#0 +Identical Phi Values (byte) printf_uint::format_min_length#1 (byte) printf_uint::format_min_length#0 +Identical Phi Values (byte) printf_uint::format_justify_left#1 (byte) printf_uint::format_justify_left#0 +Identical Phi Values (byte) printf_uint::format_zero_padding#1 (byte) printf_uint::format_zero_padding#0 +Identical Phi Values (byte) printf_uint::format_upper_case#1 (byte) printf_uint::format_upper_case#0 +Identical Phi Values (byte) legal::row#3 (byte) legal::row#0 +Identical Phi Values (byte) legal::column#4 (byte) legal::column#0 +Identical Phi Values (byte) legal::row#1 (byte) legal::row#3 +Identical Phi Values (byte) legal::column#1 (byte) legal::column#4 +Identical Phi Values (byte) print::i1#10 (byte) print::i1#2 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (void*) memset::return#0 (void*) memset::str#3 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) memcpy::$1 [15] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 +Simple Condition (bool~) memset::$1 [22] if((word) memset::num#2<=(byte) 0) goto memset::@1 +Simple Condition (bool~) memset::$3 [29] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@4 +Simple Condition (bool~) strupr::$1 [36] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 +Simple Condition (bool~) strlen::$0 [48] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 +Simple Condition (bool~) uctoa::$0 [56] if((byte) uctoa::radix#0==(const byte) DECIMAL) goto uctoa::@1 +Simple Condition (bool~) uctoa::$1 [60] if((byte) uctoa::radix#0==(const byte) HEXADECIMAL) goto uctoa::@2 +Simple Condition (bool~) uctoa::$2 [64] if((byte) uctoa::radix#0==(const byte) OCTAL) goto uctoa::@3 +Simple Condition (bool~) uctoa::$3 [68] if((byte) uctoa::radix#0==(const byte) BINARY) goto uctoa::@4 +Simple Condition (bool~) uctoa::$5 [85] if((byte) uctoa::digit#2<(byte~) uctoa::$4) goto uctoa::@11 +Simple Condition (bool~) uctoa_append::$0 [108] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 +Simple Condition (bool~) utoa::$0 [117] if((byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 +Simple Condition (bool~) utoa::$1 [121] if((byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 +Simple Condition (bool~) utoa::$2 [125] if((byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 +Simple Condition (bool~) utoa::$3 [129] if((byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 +Simple Condition (bool~) utoa::$5 [146] if((byte) utoa::digit#2<(byte~) utoa::$4) goto utoa::@11 +Simple Condition (bool~) utoa_append::$0 [171] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 +Simple Condition (bool~) ultoa::$0 [180] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +Simple Condition (bool~) ultoa::$1 [184] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +Simple Condition (bool~) ultoa::$2 [188] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +Simple Condition (bool~) ultoa::$3 [192] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +Simple Condition (bool~) ultoa::$5 [209] if((byte) ultoa::digit#2<(byte~) ultoa::$4) goto ultoa::@11 +Simple Condition (bool~) ultoa_append::$0 [234] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 +Simple Condition (bool~) printf_char::$1 [256] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return +Simple Condition (bool~) printf_scroll::$1 [269] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return +Simple Condition (bool~) printf_padding::$0 [288] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 +Simple Condition (bool~) printf_str::$1 [299] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 +Simple Condition (bool~) printf_str::$2 [301] if((byte) printf_str::ch#0==(byte) ' +') goto printf_str::@4 +Simple Condition (bool~) printf_ulong::$5 [308] if((byte) 0!=(byte) printf_ulong::format_sign_always#0) goto printf_ulong::@1 +Simple Condition (bool~) printf_uint::$5 [329] if((byte) 0!=(byte) printf_uint::format_sign_always#0) goto printf_uint::@1 +Simple Condition (bool~) printf_uchar::$5 [350] if((byte) 0!=(byte) printf_uchar::format_sign_always#2) goto printf_uchar::@1 +Simple Condition (bool~) printf_number_buffer::$0 [372] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 +Simple Condition (bool~) printf_number_buffer::$20 [386] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 +Simple Condition (bool~) printf_number_buffer::$23 [391] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@1 +Simple Condition (bool~) printf_number_buffer::$7 [395] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 +Simple Condition (bool~) printf_number_buffer::$12 [405] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 +Simple Condition (bool~) queen::$0 [445] if((byte) queen::column<=(byte) 8) goto queen::@2 +Simple Condition (bool~) queen::$2 [452] if((byte) 0==(byte~) queen::$1) goto queen::@3 +Simple Condition (bool~) queen::$3 [456] if((byte) queen::r==(byte) 8) goto queen::@4 +Simple Condition (bool~) legal::$1 [470] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 +Simple Condition (bool~) legal::$2 [472] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@4 +Simple Condition (bool~) legal::$6 [486] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@5 +Simple Condition (bool~) diff::$0 [493] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 +Simple Condition (bool~) print::$1 [514] if((byte) print::i#2<=(byte) 8) goto print::@2 +Simple Condition (bool~) print::$3 [527] if((byte) print::i1#2<=(byte) 8) goto print::@5 +Simple Condition (bool~) print::$5 [541] if((byte) print::j#2<=(byte) 8) goto print::@7 +Simple Condition (bool~) print::$6 [543] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@9 +Successful SSA optimization Pass2ConditionalJumpSimplification +Rewriting && if()-condition to two if()s [3] (bool~) toupper::$2 ← (bool~) toupper::$0 && (bool~) toupper::$1 +Rewriting ! if()-condition to reversed if() [89] (bool~) uctoa::$8 ← ! (bool~) uctoa::$7 +Rewriting || if()-condition to two if()s [88] (bool~) uctoa::$7 ← (byte) uctoa::started#2 || (bool~) uctoa::$6 +Rewriting ! if()-condition to reversed if() [151] (bool~) utoa::$8 ← ! (bool~) utoa::$7 +Rewriting || if()-condition to two if()s [150] (bool~) utoa::$7 ← (byte) utoa::started#2 || (bool~) utoa::$6 +Rewriting ! if()-condition to reversed if() [214] (bool~) ultoa::$8 ← ! (bool~) ultoa::$7 +Rewriting || if()-condition to two if()s [213] (bool~) ultoa::$7 ← (byte) ultoa::started#2 || (bool~) ultoa::$6 +Rewriting ! if()-condition to reversed if() [378] (bool~) printf_number_buffer::$5 ← ! (bool~) printf_number_buffer::$4 +Rewriting && if()-condition to two if()s [377] (bool~) printf_number_buffer::$4 ← (bool~) printf_number_buffer::$3 && (signed byte) printf_number_buffer::padding#10 +Rewriting && if()-condition to two if()s [376] (bool~) printf_number_buffer::$3 ← (bool~) printf_number_buffer::$1 && (bool~) printf_number_buffer::$2 +Rewriting ! if()-condition to reversed if() [400] (bool~) printf_number_buffer::$10 ← ! (bool~) printf_number_buffer::$9 +Rewriting && if()-condition to two if()s [399] (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#10 && (signed byte) printf_number_buffer::padding#10 +Rewriting ! if()-condition to reversed if() [414] (bool~) printf_number_buffer::$17 ← ! (bool~) printf_number_buffer::$16 +Rewriting && if()-condition to two if()s [413] (bool~) printf_number_buffer::$16 ← (bool~) printf_number_buffer::$15 && (signed byte) printf_number_buffer::padding#10 +Rewriting && if()-condition to two if()s [412] (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#10 && (bool~) printf_number_buffer::$14 +Successful SSA optimization Pass2ConditionalAndOrRewriting +Warning! Adding boolean cast to non-boolean condition (byte) uctoa::started#2 +Warning! Adding boolean cast to non-boolean condition (byte) utoa::started#2 +Warning! Adding boolean cast to non-boolean condition (byte) ultoa::started#2 +Warning! Adding boolean cast to non-boolean condition (byte) printf_number_buffer::format_zero_padding#10 +Warning! Adding boolean cast to non-boolean condition (byte) printf_number_buffer::format_justify_left#10 +Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 +Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 +Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 +Constant right-side identified [244] (word) memset::num#0 ← (unumber)(number) $28*(number) $19 +Constant right-side identified [272] (word) memcpy::num#0 ← (unumber)(number) $28*(number) $19-(number) $28 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const word) strlen::len#0 = 0 +Constant (const byte) uctoa::max_digits#0 = 0 +Constant (const byte*) uctoa::digit_values#0 = (byte*) 0 +Constant (const byte) uctoa::max_digits#1 = 3 +Constant (const byte*) uctoa::digit_values#1 = RADIX_DECIMAL_VALUES_CHAR +Constant (const byte) uctoa::max_digits#2 = 2 +Constant (const byte*) uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR +Constant (const byte) uctoa::max_digits#3 = 3 +Constant (const byte*) uctoa::digit_values#3 = RADIX_OCTAL_VALUES_CHAR +Constant (const byte) uctoa::max_digits#4 = 8 +Constant (const byte*) uctoa::digit_values#4 = RADIX_BINARY_VALUES_CHAR +Constant (const byte) uctoa::started#0 = 0 +Constant (const byte) uctoa::digit#0 = 0 +Constant (const byte) uctoa::started#1 = 1 +Constant (const byte) uctoa_append::digit#0 = 0 +Constant (const byte) utoa::max_digits#0 = 0 +Constant (const word*) utoa::digit_values#0 = (word*) 0 +Constant (const byte) utoa::max_digits#1 = 5 +Constant (const word*) utoa::digit_values#1 = RADIX_DECIMAL_VALUES +Constant (const byte) utoa::max_digits#2 = 4 +Constant (const word*) utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES +Constant (const byte) utoa::max_digits#3 = 6 +Constant (const word*) utoa::digit_values#3 = RADIX_OCTAL_VALUES +Constant (const byte) utoa::max_digits#4 = $10 +Constant (const word*) utoa::digit_values#4 = RADIX_BINARY_VALUES +Constant (const byte) utoa::started#0 = 0 +Constant (const byte) utoa::digit#0 = 0 +Constant (const byte) utoa::started#1 = 1 +Constant (const byte) utoa_append::digit#0 = 0 +Constant (const byte) ultoa::max_digits#0 = 0 +Constant (const dword*) ultoa::digit_values#0 = (dword*) 0 +Constant (const byte) ultoa::max_digits#1 = $a +Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#2 = 8 +Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#3 = $b +Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#4 = $20 +Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG +Constant (const byte) ultoa::started#0 = 0 +Constant (const byte) ultoa::digit#0 = 0 +Constant (const byte) ultoa::started#1 = 1 +Constant (const byte) ultoa_append::digit#0 = 0 +Constant (const void*) memset::str#0 = (void*) 1024 +Constant (const byte) memset::c#0 = ' ' +Constant (const word) memset::num#0 = (unumber)$28*$19 +Constant (const void*) memcpy::destination#0 = (void*) 1024 +Constant (const void*) memcpy::source#0 = (void*)$400+$28 +Constant (const word) memcpy::num#0 = (unumber)$28*$19-$28 +Constant (const void*) memset::str#1 = (void*)$400+$28*$19-$28 +Constant (const byte) memset::c#1 = ' ' +Constant (const word) memset::num#1 = $28 +Constant (const byte) printf_padding::i#0 = 0 +Constant (const byte) printf_ulong::$1 = '+' +Constant (const byte) printf_ulong::$0 = 0 +Constant (const byte*) ultoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#0 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte) printf_uint::$1 = '+' +Constant (const byte) printf_uint::$0 = 0 +Constant (const byte*) utoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#1 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte) printf_uchar::$1 = '+' +Constant (const byte) printf_uchar::$0 = 0 +Constant (const byte*) uctoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#2 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const signed byte) printf_number_buffer::padding#0 = 0 +Constant (const signed byte) printf_number_buffer::padding#2 = 0 +Constant (const byte) printf_padding::pad#0 = ' ' +Constant (const byte) printf_padding::pad#1 = '0' +Constant (const byte) printf_padding::pad#2 = ' ' +Constant (const byte*) printf_str::str#2 = main::str +Constant (const byte*) printf_str::str#3 = main::str1 +Constant (const word) printf_uint::uvalue#0 = 8 +Constant (const byte) printf_uint::format_min_length#0 = 0 +Constant (const byte) printf_uint::format_justify_left#0 = 0 +Constant (const byte) printf_uint::format_sign_always#0 = 0 +Constant (const byte) printf_uint::format_zero_padding#0 = 0 +Constant (const byte) printf_uint::format_upper_case#0 = 0 +Constant (const byte) printf_uint::format_radix#0 = DECIMAL +Constant (const byte) legal::i#0 = 1 +Constant (const byte) legal::return#1 = 1 +Constant (const byte) legal::return#2 = 0 +Constant (const byte) legal::return#3 = 0 +Constant (const byte*) printf_str::str#4 = print::str +Constant (const byte) printf_ulong::format_min_length#0 = 0 +Constant (const byte) printf_ulong::format_justify_left#0 = 0 +Constant (const byte) printf_ulong::format_sign_always#0 = 0 +Constant (const byte) printf_ulong::format_zero_padding#0 = 0 +Constant (const byte) printf_ulong::format_upper_case#0 = 0 +Constant (const byte) printf_ulong::format_radix#0 = DECIMAL +Constant (const byte*) printf_str::str#5 = print::str1 +Constant (const byte) print::i#0 = 1 +Constant (const byte) printf_uchar::format_min_length#0 = 0 +Constant (const byte) printf_uchar::format_justify_left#0 = 0 +Constant (const byte) printf_uchar::format_sign_always#0 = 0 +Constant (const byte) printf_uchar::format_zero_padding#0 = 0 +Constant (const byte) printf_uchar::format_upper_case#0 = 0 +Constant (const byte) printf_uchar::format_radix#0 = HEXADECIMAL +Constant (const byte) print::i1#0 = 1 +Constant (const byte*) printf_str::str#6 = print::str2 +Constant (const byte) printf_uchar::format_min_length#1 = 0 +Constant (const byte) printf_uchar::format_justify_left#1 = 0 +Constant (const byte) printf_uchar::format_sign_always#1 = 0 +Constant (const byte) printf_uchar::format_zero_padding#1 = 0 +Constant (const byte) printf_uchar::format_upper_case#1 = 0 +Constant (const byte) printf_uchar::format_radix#1 = HEXADECIMAL +Constant (const byte) print::j#0 = 1 +Constant (const byte*) printf_str::str#7 = print::str3 +Constant (const byte*) printf_str::str#8 = print::str4 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) memcpy::src#0 = (byte*)memcpy::source#0 +Constant (const byte*) memcpy::dst#0 = (byte*)memcpy::destination#0 +Constant (const byte*) memcpy::$2 = (byte*)memcpy::source#0 +Constant (const void*) memcpy::return#2 = memcpy::destination#0 +Constant (const byte) ultoa::radix#0 = printf_ulong::format_radix#0 +Constant (const byte) printf_number_buffer::format_min_length#0 = printf_ulong::format_min_length#0 +Constant (const byte) printf_number_buffer::format_justify_left#0 = printf_ulong::format_justify_left#0 +Constant (const byte) printf_number_buffer::format_sign_always#0 = printf_ulong::format_sign_always#0 +Constant (const byte) printf_number_buffer::format_zero_padding#0 = printf_ulong::format_zero_padding#0 +Constant (const byte) printf_number_buffer::format_upper_case#0 = printf_ulong::format_upper_case#0 +Constant (const byte) printf_number_buffer::format_radix#0 = printf_ulong::format_radix#0 +Constant (const word) utoa::value#1 = printf_uint::uvalue#0 +Constant (const byte) utoa::radix#0 = printf_uint::format_radix#0 +Constant (const byte) printf_number_buffer::format_min_length#1 = printf_uint::format_min_length#0 +Constant (const byte) printf_number_buffer::format_justify_left#1 = printf_uint::format_justify_left#0 +Constant (const byte) printf_number_buffer::format_sign_always#1 = printf_uint::format_sign_always#0 +Constant (const byte) printf_number_buffer::format_zero_padding#1 = printf_uint::format_zero_padding#0 +Constant (const byte) printf_number_buffer::format_upper_case#1 = printf_uint::format_upper_case#0 +Constant (const byte) printf_number_buffer::format_radix#1 = printf_uint::format_radix#0 +Successful SSA optimization Pass2ConstantIdentification +if() condition always true - replacing block destination [117] if((const byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 +if() condition always false - eliminating [121] if((const byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 +if() condition always false - eliminating [125] if((const byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 +if() condition always false - eliminating [129] if((const byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 +if() condition always true - replacing block destination [180] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +if() condition always false - eliminating [184] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +if() condition always false - eliminating [188] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +if() condition always false - eliminating [192] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +if() condition always true - replacing block destination [295] if(true) goto printf_str::@2 +if() condition always false - eliminating [308] if((byte) 0!=(const byte) printf_ulong::format_sign_always#0) goto printf_ulong::@1 +if() condition always false - eliminating [329] if((byte) 0!=(const byte) printf_uint::format_sign_always#0) goto printf_uint::@1 +Successful SSA optimization Pass2ConstantIfs +Rewriting conditional comparison [445] if((byte) queen::column<=(byte) 8) goto queen::@2 +Rewriting conditional comparison [514] if((byte) print::i#2<=(byte) 8) goto print::@2 +Rewriting conditional comparison [527] if((byte) print::i1#2<=(byte) 8) goto print::@5 +Rewriting conditional comparison [541] if((byte) print::j#2<=(byte) 8) goto print::@7 +Simplifying expression containing zero (byte*)&printf_buffer in [312] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_ulong::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [317] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Simplifying expression containing zero (byte*)&printf_buffer in [333] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uint::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [338] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Simplifying expression containing zero (byte*)&printf_buffer in [354] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uchar::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [359] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Successful SSA optimization PassNSimplifyExpressionWithZero +Eliminating unused variable (void*) memset::return#2 and assignment [151] (void*) memset::return#2 ← (void*) memset::str#3 +Eliminating unused variable (void*) memset::return#3 and assignment [175] (void*) memset::return#3 ← (void*) memset::str#3 +Eliminating unused variable (byte) printf_number_buffer::format_sign_always#2 and assignment [220] (byte) printf_number_buffer::format_sign_always#2 ← (byte) printf_uchar::format_sign_always#2 +Eliminating unused variable (byte) printf_number_buffer::format_radix#2 and assignment [223] (byte) printf_number_buffer::format_radix#2 ← (byte) printf_uchar::format_radix#2 +Eliminating unused variable (byte*) strupr::return#2 and assignment [260] (byte*) strupr::return#2 ← (byte*) strupr::str#0 +Eliminating unused constant (const void*) memcpy::return#2 +Eliminating unused constant (const byte) uctoa::max_digits#0 +Eliminating unused constant (const byte*) uctoa::digit_values#0 +Eliminating unused constant (const byte) utoa::max_digits#0 +Eliminating unused constant (const word*) utoa::digit_values#0 +Eliminating unused constant (const byte) utoa::radix#0 +Eliminating unused constant (const byte) ultoa::max_digits#0 +Eliminating unused constant (const dword*) ultoa::digit_values#0 +Eliminating unused constant (const byte) ultoa::radix#0 +Eliminating unused constant (const byte) printf_number_buffer::format_sign_always#0 +Eliminating unused constant (const byte) printf_number_buffer::format_radix#0 +Eliminating unused constant (const byte) printf_number_buffer::format_sign_always#1 +Eliminating unused constant (const byte) printf_number_buffer::format_radix#1 +Eliminating unused constant (const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN +Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const byte) printf_ulong::format_sign_always#0 +Eliminating unused constant (const byte) printf_ulong::format_radix#0 +Eliminating unused constant (const byte) printf_uint::format_sign_always#0 +Eliminating unused constant (const byte) printf_uint::format_radix#0 +Successful SSA optimization PassNEliminateUnusedVars +Eliminating variable (byte*) utoa::buffer#0 from unused block utoa::@9 +Eliminating variable (byte*) utoa::buffer#1 from unused block utoa::@9 +Eliminating variable (byte*) utoa::buffer#2 from unused block utoa::@9 +Eliminating variable (byte*) ultoa::buffer#0 from unused block ultoa::@9 +Eliminating variable (byte*) ultoa::buffer#1 from unused block ultoa::@9 +Eliminating variable (byte*) ultoa::buffer#2 from unused block ultoa::@9 +Removing unused block utoa::@6 +Removing PHI-reference to removed block (utoa::@2) in block utoa::@5 +Removing PHI-reference to removed block (utoa::@2) in block utoa::@5 +Removing unused block utoa::@2 +Removing unused block utoa::@7 +Removing PHI-reference to removed block (utoa::@3) in block utoa::@5 +Removing PHI-reference to removed block (utoa::@3) in block utoa::@5 +Removing unused block utoa::@3 +Removing unused block utoa::@8 +Removing PHI-reference to removed block (utoa::@4) in block utoa::@5 +Removing PHI-reference to removed block (utoa::@4) in block utoa::@5 +Removing unused block utoa::@4 +Removing unused block utoa::@9 +Removing unused block ultoa::@6 +Removing PHI-reference to removed block (ultoa::@2) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@2) in block ultoa::@5 +Removing unused block ultoa::@2 +Removing unused block ultoa::@7 +Removing PHI-reference to removed block (ultoa::@3) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@3) in block ultoa::@5 +Removing unused block ultoa::@3 +Removing unused block ultoa::@8 +Removing PHI-reference to removed block (ultoa::@4) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@4) in block ultoa::@5 +Removing unused block ultoa::@4 +Removing unused block ultoa::@9 +Removing PHI-reference to removed block (printf_ulong::@1) in block printf_ulong::@3 +Removing unused block printf_ulong::@1 +Removing PHI-reference to removed block (printf_uint::@1) in block printf_uint::@3 +Removing unused block printf_uint::@1 +Successful SSA optimization Pass2EliminateUnusedBlocks +Adding number conversion cast (unumber) 0 in (bool~) uctoa::$11 ← (number) 0 != (byte) uctoa::started#2 +Adding number conversion cast (unumber) 0 in (bool~) utoa::$12 ← (number) 0 != (byte) utoa::started#2 +Adding number conversion cast (unumber) 0 in (bool~) ultoa::$12 ← (number) 0 != (byte) ultoa::started#2 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$33 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#10 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$34 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#10 +Adding number conversion cast (unumber) 8+1 in if((byte) queen::column<(byte) 8+(number) 1) goto queen::@2 +Adding number conversion cast (unumber) 1 in if((byte) queen::column<(unumber)(byte) 8+(number) 1) goto queen::@2 +Adding number conversion cast (unumber) 8+1 in if((byte) print::i#2<(byte) 8+(number) 1) goto print::@2 +Adding number conversion cast (unumber) 1 in if((byte) print::i#2<(unumber)(byte) 8+(number) 1) goto print::@2 +Adding number conversion cast (unumber) 8+1 in if((byte) print::i1#2<(byte) 8+(number) 1) goto print::@5 +Adding number conversion cast (unumber) 1 in if((byte) print::i1#2<(unumber)(byte) 8+(number) 1) goto print::@5 +Adding number conversion cast (unumber) 8+1 in if((byte) print::j#2<(byte) 8+(number) 1) goto print::@7 +Adding number conversion cast (unumber) 1 in if((byte) print::j#2<(unumber)(byte) 8+(number) 1) goto print::@7 +Adding number conversion cast (snumber) 0 in (bool~) printf_number_buffer::$35 ← (number) 0 != (signed byte) printf_number_buffer::padding#10 +Adding number conversion cast (snumber) 0 in (bool~) printf_number_buffer::$36 ← (number) 0 != (signed byte) printf_number_buffer::padding#10 +Adding number conversion cast (snumber) 0 in (bool~) printf_number_buffer::$37 ← (number) 0 != (signed byte) printf_number_buffer::padding#10 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast (byte) 8+(unumber)(number) 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast (byte) 8+(unumber)(number) 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast (byte) 8+(unumber)(number) 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast (byte) 8+(unumber)(number) 1 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 1 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Finalized signed number type (signed byte) 0 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Identical Phi Values (byte) utoa::max_digits#7 (const byte) utoa::max_digits#1 +Identical Phi Values (word*) utoa::digit_values#8 (const word*) utoa::digit_values#1 +Identical Phi Values (byte) ultoa::max_digits#7 (const byte) ultoa::max_digits#1 +Identical Phi Values (dword*) ultoa::digit_values#8 (const dword*) ultoa::digit_values#1 +Identical Phi Values (byte~) printf_ulong::$2 (const byte) printf_ulong::$0 +Identical Phi Values (byte~) printf_uint::$2 (const byte) printf_uint::$0 +Successful SSA optimization Pass2IdenticalPhiElimination +Simple Condition (bool~) toupper::$0 [2] if((byte) toupper::ch#0>=(byte) 'a') goto toupper::@3 +Simple Condition (bool~) uctoa::$11 [56] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@14 +Simple Condition (bool~) utoa::$12 [84] if((byte) 0!=(byte) utoa::started#2) goto utoa::@14 +Simple Condition (bool~) ultoa::$12 [113] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@14 +Simple Condition (bool~) printf_number_buffer::$1 [213] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@23 +Simple Condition (bool~) printf_number_buffer::$33 [229] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@24 +Simple Condition (bool~) printf_number_buffer::$34 [239] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@26 +Simple Condition (bool~) toupper::$1 [323] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 +Simple Condition (bool~) uctoa::$6 [324] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@14 +Simple Condition (bool~) utoa::$6 [325] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@14 +Simple Condition (bool~) ultoa::$6 [326] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@14 +Simple Condition (bool~) printf_number_buffer::$35 [328] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 +Simple Condition (bool~) printf_number_buffer::$2 [329] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@22 +Simple Condition (bool~) printf_number_buffer::$36 [331] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 +Simple Condition (bool~) printf_number_buffer::$37 [333] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 +Simple Condition (bool~) printf_number_buffer::$14 [334] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@25 +Successful SSA optimization Pass2ConditionalJumpSimplification +Negating conditional jump and destination [2] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@2 +Negating conditional jump and destination [213] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 +Negating conditional jump and destination [229] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 +Negating conditional jump and destination [239] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return +Negating conditional jump and destination [329] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 +Negating conditional jump and destination [334] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return +Successful SSA optimization Pass2ConditionalJumpSequenceImprovement +Constant right-side identified [6] (byte*) memcpy::src_end#0 ← (const byte*) memcpy::$2 + (const word) memcpy::num#0 +Constant right-side identified [42] (byte*) uctoa::buffer#0 ← ++ (const byte*) uctoa::buffer#5 +Constant right-side identified [78] (byte~) utoa::$4 ← (const byte) utoa::max_digits#1 - (byte) 1 +Constant right-side identified [107] (byte~) ultoa::$4 ← (const byte) ultoa::max_digits#1 - (byte) 1 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte*) memcpy::src_end#0 = memcpy::$2+memcpy::num#0 +Constant (const byte*) uctoa::buffer#0 = ++uctoa::buffer#5 +Constant (const byte) utoa::$4 = utoa::max_digits#1-1 +Constant (const byte) ultoa::$4 = ultoa::max_digits#1-1 +Successful SSA optimization Pass2ConstantIdentification +Eliminating unused constant (const byte) utoa::max_digits#2 +Eliminating unused constant (const word*) utoa::digit_values#2 +Eliminating unused constant (const byte) utoa::max_digits#3 +Eliminating unused constant (const word*) utoa::digit_values#3 +Eliminating unused constant (const byte) utoa::max_digits#4 +Eliminating unused constant (const word*) utoa::digit_values#4 +Eliminating unused constant (const byte) ultoa::max_digits#2 +Eliminating unused constant (const dword*) ultoa::digit_values#2 +Eliminating unused constant (const byte) ultoa::max_digits#3 +Eliminating unused constant (const dword*) ultoa::digit_values#3 +Eliminating unused constant (const byte) ultoa::max_digits#4 +Eliminating unused constant (const dword*) ultoa::digit_values#4 +Eliminating unused constant (const byte) printf_ulong::$1 +Eliminating unused constant (const byte) printf_uint::$1 +Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const word*) RADIX_BINARY_VALUES +Eliminating unused constant (const word*) RADIX_OCTAL_VALUES +Eliminating unused constant (const word*) RADIX_HEXADECIMAL_VALUES +Eliminating unused constant (const dword*) RADIX_BINARY_VALUES_LONG +Eliminating unused constant (const dword*) RADIX_OCTAL_VALUES_LONG +Eliminating unused constant (const dword*) RADIX_HEXADECIMAL_VALUES_LONG +Successful SSA optimization PassNEliminateUnusedVars +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Constant right-side identified [40] (byte*) uctoa::buffer#1 ← ++ (const byte*) uctoa::buffer#0 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte*) uctoa::buffer#1 = ++uctoa::buffer#0 +Successful SSA optimization Pass2ConstantIdentification +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Constant right-side identified [41] (byte*) uctoa::buffer#2 ← ++ (const byte*) uctoa::buffer#1 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte*) uctoa::buffer#2 = ++uctoa::buffer#1 +Successful SSA optimization Pass2ConstantIdentification +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Inlining Noop Cast [12] (byte*~) memset::$4 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Inlining Noop Cast [14] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Inlining Noop Cast [201] (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 keeping printf_number_buffer::format_min_length#3 +Successful SSA optimization Pass2NopCastInlining +Rewriting multiplication to use shift [70] (byte~) utoa::$10 ← (byte) utoa::digit#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [95] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 * (const byte) SIZEOF_DWORD +Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte*) memcpy::src#0 +Inlining constant with var siblings (const byte*) memcpy::dst#0 +Inlining constant with var siblings (const void*) memset::str#0 +Inlining constant with var siblings (const byte) memset::c#0 +Inlining constant with var siblings (const word) memset::num#0 +Inlining constant with var siblings (const void*) memset::str#1 +Inlining constant with var siblings (const byte) memset::c#1 +Inlining constant with var siblings (const word) memset::num#1 +Inlining constant with var siblings (const word) strlen::len#0 +Inlining constant with var siblings (const byte) uctoa::max_digits#1 +Inlining constant with var siblings (const byte*) uctoa::digit_values#1 +Inlining constant with var siblings (const byte) uctoa::max_digits#2 +Inlining constant with var siblings (const byte*) uctoa::digit_values#2 +Inlining constant with var siblings (const byte) uctoa::max_digits#3 +Inlining constant with var siblings (const byte*) uctoa::digit_values#3 +Inlining constant with var siblings (const byte) uctoa::max_digits#4 +Inlining constant with var siblings (const byte*) uctoa::digit_values#4 +Inlining constant with var siblings (const byte) uctoa::started#0 +Inlining constant with var siblings (const byte) uctoa::digit#0 +Inlining constant with var siblings (const byte) uctoa::started#1 +Inlining constant with var siblings (const byte*) uctoa::buffer#5 +Inlining constant with var siblings (const byte*) uctoa::buffer#0 +Inlining constant with var siblings (const byte*) uctoa::buffer#1 +Inlining constant with var siblings (const byte*) uctoa::buffer#2 +Inlining constant with var siblings (const byte) uctoa_append::digit#0 +Inlining constant with var siblings (const byte) utoa::started#0 +Inlining constant with var siblings (const byte) utoa::digit#0 +Inlining constant with var siblings (const byte) utoa::started#1 +Inlining constant with var siblings (const byte*) utoa::buffer#5 +Inlining constant with var siblings (const word) utoa::value#1 +Inlining constant with var siblings (const byte) utoa_append::digit#0 +Inlining constant with var siblings (const byte) ultoa::started#0 +Inlining constant with var siblings (const byte) ultoa::digit#0 +Inlining constant with var siblings (const byte) ultoa::started#1 +Inlining constant with var siblings (const byte*) ultoa::buffer#5 +Inlining constant with var siblings (const byte) ultoa_append::digit#0 +Inlining constant with var siblings (const byte) printf_padding::i#0 +Inlining constant with var siblings (const byte) printf_padding::pad#0 +Inlining constant with var siblings (const byte) printf_padding::pad#1 +Inlining constant with var siblings (const byte) printf_padding::pad#2 +Inlining constant with var siblings (const byte*) printf_str::str#2 +Inlining constant with var siblings (const byte*) printf_str::str#3 +Inlining constant with var siblings (const byte*) printf_str::str#4 +Inlining constant with var siblings (const byte*) printf_str::str#5 +Inlining constant with var siblings (const byte*) printf_str::str#6 +Inlining constant with var siblings (const byte*) printf_str::str#7 +Inlining constant with var siblings (const byte*) printf_str::str#8 +Inlining constant with var siblings (const byte) printf_uchar::format_min_length#0 +Inlining constant with var siblings (const byte) printf_uchar::format_justify_left#0 +Inlining constant with var siblings (const byte) printf_uchar::format_sign_always#0 +Inlining constant with var siblings (const byte) printf_uchar::format_zero_padding#0 +Inlining constant with var siblings (const byte) printf_uchar::format_upper_case#0 +Inlining constant with var siblings (const byte) printf_uchar::format_radix#0 +Inlining constant with var siblings (const byte) printf_uchar::format_min_length#1 +Inlining constant with var siblings (const byte) printf_uchar::format_justify_left#1 +Inlining constant with var siblings (const byte) printf_uchar::format_sign_always#1 +Inlining constant with var siblings (const byte) printf_uchar::format_zero_padding#1 +Inlining constant with var siblings (const byte) printf_uchar::format_upper_case#1 +Inlining constant with var siblings (const byte) printf_uchar::format_radix#1 +Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#0 +Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#1 +Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#2 +Inlining constant with var siblings (const signed byte) printf_number_buffer::padding#0 +Inlining constant with var siblings (const signed byte) printf_number_buffer::padding#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#0 +Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#0 +Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#0 +Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#0 +Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#1 +Inlining constant with var siblings (const byte) legal::i#0 +Inlining constant with var siblings (const byte) legal::return#1 +Inlining constant with var siblings (const byte) legal::return#2 +Inlining constant with var siblings (const byte) legal::return#3 +Inlining constant with var siblings (const byte) print::i#0 +Inlining constant with var siblings (const byte) print::i1#0 +Inlining constant with var siblings (const byte) print::j#0 +Constant inlined uctoa_append::digit#0 = (byte) 0 +Constant inlined utoa::digit_values#1 = (const word*) RADIX_DECIMAL_VALUES +Constant inlined printf_number_buffer::format_justify_left#0 = (const byte) printf_ulong::format_justify_left#0 +Constant inlined printf_number_buffer::buffer_digits#0 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::buffer_digits#1 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::buffer_digits#2 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::format_justify_left#1 = (const byte) printf_uint::format_justify_left#0 +Constant inlined printf_uchar::format_justify_left#0 = (byte) 0 +Constant inlined printf_uchar::format_justify_left#1 = (byte) 0 +Constant inlined memset::num#1 = (byte) $28 +Constant inlined memset::num#0 = (word)(number) $28*(number) $19 +Constant inlined strlen::len#0 = (word) 0 +Constant inlined memcpy::$2 = (byte*)(const void*) memcpy::source#0 +Constant inlined utoa::$4 = (const byte) utoa::max_digits#1-(byte) 1 +Constant inlined printf_number_buffer::padding#2 = (signed byte) 0 +Constant inlined uctoa::digit#0 = (byte) 0 +Constant inlined print::j#0 = (byte) 1 +Constant inlined ultoa::started#1 = (byte) 1 +Constant inlined printf_uchar::format_sign_always#1 = (byte) 0 +Constant inlined legal::return#2 = (byte) 0 +Constant inlined utoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined ultoa::digit#0 = (byte) 0 +Constant inlined legal::return#3 = (byte) 0 +Constant inlined printf_uchar::format_sign_always#0 = (byte) 0 +Constant inlined memset::c#0 = (byte) ' ' +Constant inlined printf_uchar::format_min_length#1 = (byte) 0 +Constant inlined legal::return#1 = (byte) 1 +Constant inlined memset::c#1 = (byte) ' ' +Constant inlined printf_uchar::format_min_length#0 = (byte) 0 +Constant inlined printf_uchar::format_upper_case#1 = (byte) 0 +Constant inlined printf_number_buffer::padding#0 = (signed byte) 0 +Constant inlined printf_uchar::format_upper_case#0 = (byte) 0 +Constant inlined utoa_append::digit#0 = (byte) 0 +Constant inlined print::i1#0 = (byte) 1 +Constant inlined uctoa::digit_values#2 = (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR +Constant inlined uctoa::started#0 = (byte) 0 +Constant inlined uctoa::digit_values#1 = (const byte*) RADIX_DECIMAL_VALUES_CHAR +Constant inlined uctoa::started#1 = (byte) 1 +Constant inlined uctoa::digit_values#4 = (const byte*) RADIX_BINARY_VALUES_CHAR +Constant inlined memcpy::dst#0 = (byte*)(const void*) memcpy::destination#0 +Constant inlined uctoa::digit_values#3 = (const byte*) RADIX_OCTAL_VALUES_CHAR +Constant inlined printf_uchar::$0 = (byte) 0 +Constant inlined printf_uchar::$1 = (byte) '+' +Constant inlined memcpy::src#0 = (byte*)(const void*) memcpy::source#0 +Constant inlined uctoa::max_digits#1 = (byte) 3 +Constant inlined ultoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::format_upper_case#1 = (const byte) printf_uint::format_upper_case#0 +Constant inlined ultoa::started#0 = (byte) 0 +Constant inlined legal::i#0 = (byte) 1 +Constant inlined printf_number_buffer::format_upper_case#0 = (const byte) printf_ulong::format_upper_case#0 +Constant inlined utoa::digit#0 = (byte) 0 +Constant inlined printf_number_buffer::format_min_length#0 = (const byte) printf_ulong::format_min_length#0 +Constant inlined uctoa::max_digits#3 = (byte) 3 +Constant inlined printf_number_buffer::format_zero_padding#0 = (const byte) printf_ulong::format_zero_padding#0 +Constant inlined printf_number_buffer::format_min_length#1 = (const byte) printf_uint::format_min_length#0 +Constant inlined uctoa::max_digits#2 = (byte) 2 +Constant inlined uctoa::max_digits#4 = (byte) 8 +Constant inlined uctoa::buffer#1 = ++++(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined memset::str#1 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 +Constant inlined uctoa::buffer#2 = ++++++(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_padding::pad#0 = (byte) ' ' +Constant inlined printf_number_buffer::format_zero_padding#1 = (const byte) printf_uint::format_zero_padding#0 +Constant inlined memset::str#0 = (void*) 1024 +Constant inlined printf_padding::i#0 = (byte) 0 +Constant inlined printf_padding::pad#1 = (byte) '0' +Constant inlined printf_uchar::format_zero_padding#1 = (byte) 0 +Constant inlined uctoa::buffer#0 = ++(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_padding::pad#2 = (byte) ' ' +Constant inlined printf_uchar::format_zero_padding#0 = (byte) 0 +Constant inlined printf_uint::$0 = (byte) 0 +Constant inlined printf_ulong::$0 = (byte) 0 +Constant inlined utoa::started#1 = (byte) 1 +Constant inlined utoa::started#0 = (byte) 0 +Constant inlined print::i#0 = (byte) 1 +Constant inlined ultoa::$4 = (const byte) ultoa::max_digits#1-(byte) 1 +Constant inlined uctoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_str::str#6 = (const byte*) print::str2 +Constant inlined printf_str::str#5 = (const byte*) print::str1 +Constant inlined printf_str::str#8 = (const byte*) print::str4 +Constant inlined printf_str::str#7 = (const byte*) print::str3 +Constant inlined printf_uchar::format_radix#1 = (const byte) HEXADECIMAL +Constant inlined printf_uchar::format_radix#0 = (const byte) HEXADECIMAL +Constant inlined ultoa_append::digit#0 = (byte) 0 +Constant inlined ultoa::digit_values#1 = (const dword*) RADIX_DECIMAL_VALUES_LONG +Constant inlined printf_str::str#2 = (const byte*) main::str +Constant inlined printf_str::str#4 = (const byte*) print::str +Constant inlined utoa::value#1 = (const word) printf_uint::uvalue#0 +Constant inlined printf_str::str#3 = (const byte*) main::str1 +Successful SSA optimization Pass2ConstantInlining +Simplifying constant integer increment ++(byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Simplifying constant integer increment ++(byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Simplifying constant integer increment ++(byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1 +Successful SSA optimization Pass2ConstantSimplification +Simplifying constant integer increment ++(byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1 +Simplifying constant integer increment ++(byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2 +Successful SSA optimization Pass2ConstantSimplification +Adding number conversion cast (unumber) 1 in [39] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+(number) 1) ← (byte) 'r' +Adding number conversion cast (unumber) 2 in [40] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+(number) 2) ← (byte) 'r' +Adding number conversion cast (unumber) 3 in [41] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+(number) 3) ← (byte) 0 +Successful SSA optimization PassNAddNumberTypeConversions +Simplifying constant integer cast 1 +Simplifying constant integer cast 2 +Simplifying constant integer cast 3 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) 3 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Identical Phi Values (byte) printf_uchar::format_sign_always#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_radix#2 (const byte) HEXADECIMAL +Identical Phi Values (byte) printf_uchar::format_min_length#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_justify_left#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_zero_padding#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_upper_case#2 (byte) 0 +Successful SSA optimization Pass2IdenticalPhiElimination +Constant (const byte) uctoa::radix#0 = HEXADECIMAL +Constant (const byte) printf_number_buffer::format_min_length#2 = 0 +Constant (const byte) printf_number_buffer::format_justify_left#2 = 0 +Constant (const byte) printf_number_buffer::format_zero_padding#2 = 0 +Constant (const byte) printf_number_buffer::format_upper_case#2 = 0 +Successful SSA optimization Pass2ConstantIdentification +if() condition always false - eliminating [32] if((const byte) uctoa::radix#0==(const byte) DECIMAL) goto uctoa::@1 +if() condition always true - replacing block destination [33] if((const byte) uctoa::radix#0==(const byte) HEXADECIMAL) goto uctoa::@2 +if() condition always false - eliminating [34] if((const byte) uctoa::radix#0==(const byte) OCTAL) goto uctoa::@3 +if() condition always false - eliminating [35] if((const byte) uctoa::radix#0==(const byte) BINARY) goto uctoa::@4 +if() condition always false - eliminating [175] if((byte) 0!=(byte) 0) goto printf_uchar::@1 +Successful SSA optimization Pass2ConstantIfs +Eliminating unused constant (const byte) BINARY +Eliminating unused constant (const byte) OCTAL +Eliminating unused constant (const byte) DECIMAL +Eliminating unused constant (const byte) uctoa::radix#0 +Eliminating unused constant (const byte) SIZEOF_WORD +Eliminating unused constant (const byte) SIZEOF_DWORD +Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const byte) HEXADECIMAL +Successful SSA optimization PassNEliminateUnusedVars +Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5 +Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5 +Removing unused block uctoa::@1 +Removing unused block uctoa::@7 +Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5 +Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5 +Removing unused block uctoa::@3 +Removing unused block uctoa::@8 +Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5 +Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5 +Removing unused block uctoa::@4 +Removing unused block uctoa::@9 +Removing PHI-reference to removed block (printf_uchar::@1) in block printf_uchar::@3 +Removing unused block printf_uchar::@1 +Successful SSA optimization Pass2EliminateUnusedBlocks +Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#2 +Constant inlined printf_number_buffer::format_zero_padding#2 = (byte) 0 +Constant inlined printf_number_buffer::format_upper_case#2 = (byte) 0 +Constant inlined printf_number_buffer::format_justify_left#2 = (byte) 0 +Constant inlined printf_number_buffer::format_min_length#2 = (byte) 0 +Successful SSA optimization Pass2ConstantInlining +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Identical Phi Values (byte) uctoa::max_digits#7 (byte) 2 +Identical Phi Values (byte*) uctoa::digit_values#8 (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR +Identical Phi Values (byte~) printf_uchar::$2 (byte) 0 +Successful SSA optimization Pass2IdenticalPhiElimination +Constant right-side identified [35] (byte~) uctoa::$4 ← (byte) 2 - (byte) 1 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) uctoa::$4 = 2-1 +Successful SSA optimization Pass2ConstantIdentification +Eliminating unused constant (const byte*) RADIX_BINARY_VALUES_CHAR +Eliminating unused constant (const byte*) RADIX_OCTAL_VALUES_CHAR +Eliminating unused constant (const byte*) RADIX_DECIMAL_VALUES_CHAR +Successful SSA optimization PassNEliminateUnusedVars +Constant inlined uctoa::$4 = (byte) 2-(byte) 1 +Successful SSA optimization Pass2ConstantInlining +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 +Alias candidate removed (volatile)queen::row#0 = queen::r +Added new block during phi lifting uctoa::@17(between uctoa::@16 and uctoa::@13) +Added new block during phi lifting utoa::@17(between utoa::@16 and utoa::@13) +Added new block during phi lifting ultoa::@17(between ultoa::@16 and ultoa::@13) +Added new block during phi lifting printf_number_buffer::@27(between printf_number_buffer::@13 and printf_number_buffer::@1) +Added new block during phi lifting printf_number_buffer::@28(between printf_number_buffer::@15 and printf_number_buffer::@13) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of printf_uint +Adding NOP phi() at start of printf_uint::@2 +Adding NOP phi() at start of printf_uint::@5 +Adding NOP phi() at start of printf_number_buffer::@14 +Adding NOP phi() at start of printf_number_buffer::@17 +Adding NOP phi() at start of printf_number_buffer::@20 +Adding NOP phi() at start of printf_number_buffer::@21 +Adding NOP phi() at start of printf_number_buffer::@18 +Adding NOP phi() at start of printf_number_buffer::@16 +Adding NOP phi() at start of printf_char::@2 +Adding NOP phi() at start of printf_scroll::@1 +Adding NOP phi() at start of printf_scroll::@2 +Adding NOP phi() at start of memset::@1 +Adding NOP phi() at start of memcpy +Adding NOP phi() at start of memcpy::@3 +Adding NOP phi() at start of printf_str::@4 +Adding NOP phi() at start of printf_ln::@1 +Adding NOP phi() at start of strupr::@3 +Adding NOP phi() at start of strlen::@3 +Adding NOP phi() at start of utoa +Adding NOP phi() at start of utoa::@1 +Adding NOP phi() at start of utoa::@5 +Adding NOP phi() at start of printf_cls +Adding NOP phi() at start of queen::@4 +Adding NOP phi() at start of queen::@8 +Adding NOP phi() at start of print::@13 +Adding NOP phi() at start of print::@14 +Adding NOP phi() at start of print::@3 +Adding NOP phi() at start of print::@5 +Adding NOP phi() at start of print::@17 +Adding NOP phi() at start of print::@11 +Adding NOP phi() at start of print::@19 +Adding NOP phi() at start of print::@9 +Adding NOP phi() at start of print::@18 +Adding NOP phi() at start of printf_uchar::@2 +Adding NOP phi() at start of printf_uchar::@5 +Adding NOP phi() at start of uctoa +Adding NOP phi() at start of uctoa::@6 +Adding NOP phi() at start of uctoa::@2 +Adding NOP phi() at start of printf_ulong +Adding NOP phi() at start of printf_ulong::@2 +Adding NOP phi() at start of printf_ulong::@5 +Adding NOP phi() at start of ultoa +Adding NOP phi() at start of ultoa::@1 +Adding NOP phi() at start of legal +Adding NOP phi() at start of legal::@3 +Adding NOP phi() at start of legal::@7 +Adding NOP phi() at start of legal::@4 +CALL GRAPH +Calls in [] to main:6 +Calls in [main] to printf_cls:10 printf_str:12 printf_str:14 printf_uint:16 queen:18 +Calls in [printf_uint] to utoa:24 printf_number_buffer:27 +Calls in [printf_number_buffer] to strlen:33 printf_char:51 strupr:57 printf_str:61 printf_padding:68 printf_padding:72 printf_padding:76 +Calls in [printf_padding] to printf_char:86 +Calls in [printf_char] to printf_scroll:96 +Calls in [printf_scroll] to memcpy:101 memset:103 +Calls in [printf_str] to printf_char:139 printf_ln:142 +Calls in [printf_ln] to printf_scroll:149 +Calls in [strupr] to toupper:158 +Calls in [utoa] to utoa_append:206 +Calls in [printf_cls] to memset:222 +Calls in [queen] to legal:234 queen:243 print:248 +Calls in [print] to printf_str:251 printf_ulong:253 printf_str:255 printf_str:264 printf_uchar:267 printf_str:275 printf_str:280 printf_uchar:284 +Calls in [printf_uchar] to uctoa:291 printf_number_buffer:294 +Calls in [uctoa] to uctoa_append:322 +Calls in [printf_ulong] to ultoa:341 printf_number_buffer:344 +Calls in [ultoa] to ultoa_append:373 +Calls in [legal] to diff:400 diff:407 + +Created 60 initial phi equivalence classes +Coalesced [26] printf_number_buffer::buffer_sign#15 ← printf_number_buffer::buffer_sign#1 +Coalesced [39] printf_number_buffer::len#5 ← printf_number_buffer::len#1 +Coalesced [50] printf_char::ch#4 ← printf_char::ch#2 +Coalesced [60] printf_str::str#17 ← printf_str::str#1 +Coalesced [67] printf_padding::length#8 ← printf_padding::length#2 +Coalesced [71] printf_padding::length#7 ← printf_padding::length#1 +Coalesced [75] printf_padding::length#9 ← printf_padding::length#0 +Coalesced [78] printf_number_buffer::padding#18 ← printf_number_buffer::padding#1 +Coalesced [79] printf_number_buffer::len#4 ← printf_number_buffer::len#0 +Coalesced [85] printf_char::ch#5 ← printf_char::ch#0 +Coalesced [88] printf_padding::i#5 ← printf_padding::i#1 +Coalesced [118] memset::dst#5 ← memset::dst#1 +Coalesced [127] memcpy::src#4 ← memcpy::src#1 +Coalesced [128] memcpy::dst#4 ← memcpy::dst#1 +Coalesced [130] printf_str::str#18 ← printf_str::str#11 +Coalesced [138] printf_char::ch#6 ← printf_char::ch#1 +Coalesced [140] printf_str::str#20 ← printf_str::str#0 +Coalesced (already) [143] printf_str::str#19 ← printf_str::str#0 +Coalesced [152] strupr::src#5 ← strupr::str#0 +Coalesced [163] strupr::src#6 ← strupr::src#1 +Coalesced [166] toupper::return#7 ← toupper::ch#0 +Coalesced [170] toupper::return#6 ← toupper::return#0 +Coalesced [171] strlen::str#5 ← strlen::str#1 +Coalesced [178] strlen::str#6 ← strlen::str#0 +Coalesced [179] strlen::len#5 ← strlen::len#1 +Coalesced [194] utoa::value#17 ← utoa::value#2 +Coalesced [195] utoa::started#6 ← utoa::started#2 +Coalesced [196] utoa::buffer#23 ← utoa::buffer#11 +Coalesced [199] utoa::digit#7 ← utoa::digit#1 +Coalesced (already) [200] utoa::value#16 ← utoa::value#6 +Coalesced (already) [201] utoa::started#5 ← utoa::started#4 +Coalesced (already) [202] utoa::buffer#22 ← utoa::buffer#14 +Coalesced [210] utoa::value#18 ← utoa::value#0 +Coalesced [211] utoa::buffer#24 ← utoa::buffer#4 +Coalesced [212] utoa_append::value#6 ← utoa_append::value#0 +Coalesced [219] utoa_append::value#7 ← utoa_append::value#1 +Coalesced [220] utoa_append::digit#5 ← utoa_append::digit#1 +Coalesced [266] printf_uchar::uvalue#6 ← printf_uchar::uvalue#1 +Coalesced [272] print::i1#14 ← print::i1#1 +Coalesced [278] print::j#9 ← print::j#1 +Coalesced [283] printf_uchar::uvalue#7 ← printf_uchar::uvalue#0 +Coalesced [286] print::i#5 ← print::i#1 +Coalesced [293] printf_number_buffer::buffer_sign#14 ← printf_number_buffer::buffer_sign#2 +Coalesced [300] uctoa::value#17 ← uctoa::value#1 +Coalesced [310] uctoa::value#18 ← uctoa::value#2 +Coalesced [311] uctoa::started#6 ← uctoa::started#2 +Coalesced [312] uctoa::buffer#23 ← uctoa::buffer#11 +Coalesced [315] uctoa::digit#7 ← uctoa::digit#1 +Coalesced (already) [316] uctoa::value#16 ← uctoa::value#6 +Coalesced (already) [317] uctoa::started#5 ← uctoa::started#4 +Coalesced (already) [318] uctoa::buffer#22 ← uctoa::buffer#14 +Coalesced [326] uctoa::value#19 ← uctoa::value#0 +Coalesced [327] uctoa::buffer#24 ← uctoa::buffer#4 +Coalesced [328] uctoa_append::value#6 ← uctoa_append::value#0 +Coalesced [335] uctoa_append::value#7 ← uctoa_append::value#1 +Coalesced [336] uctoa_append::digit#5 ← uctoa_append::digit#1 +Coalesced [343] printf_number_buffer::buffer_sign#16 ← printf_number_buffer::buffer_sign#0 +Coalesced [349] ultoa::value#17 ← ultoa::value#1 +Coalesced [361] ultoa::value#18 ← ultoa::value#2 +Coalesced [362] ultoa::started#6 ← ultoa::started#2 +Coalesced [363] ultoa::buffer#23 ← ultoa::buffer#11 +Coalesced [366] ultoa::digit#7 ← ultoa::digit#1 +Coalesced (already) [367] ultoa::value#16 ← ultoa::value#6 +Coalesced (already) [368] ultoa::started#5 ← ultoa::started#4 +Coalesced (already) [369] ultoa::buffer#22 ← ultoa::buffer#14 +Coalesced [377] ultoa::value#19 ← ultoa::value#0 +Coalesced [378] ultoa::buffer#24 ← ultoa::buffer#4 +Coalesced [379] ultoa_append::value#6 ← ultoa_append::value#0 +Coalesced [386] ultoa_append::value#7 ← ultoa_append::value#1 +Coalesced [387] ultoa_append::digit#5 ← ultoa_append::digit#1 +Coalesced [398] diff::a#5 ← diff::a#0 +Coalesced [399] diff::b#5 ← diff::b#0 +Coalesced [405] diff::a#6 ← diff::a#1 +Coalesced [406] diff::b#6 ← diff::b#1 +Coalesced [413] legal::i#8 ← legal::i#1 +Coalesced [418] diff::return#9 ← diff::return#3 +Coalesced [422] diff::return#8 ← diff::return#2 +Coalesced down to 50 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) printf_uint::@2 +Culled Empty Block (label) printf_uint::@5 +Culled Empty Block (label) printf_number_buffer::@14 +Culled Empty Block (label) printf_number_buffer::@17 +Culled Empty Block (label) printf_number_buffer::@20 +Culled Empty Block (label) printf_number_buffer::@21 +Culled Empty Block (label) printf_number_buffer::@18 +Culled Empty Block (label) printf_number_buffer::@16 +Culled Empty Block (label) printf_number_buffer::@28 +Culled Empty Block (label) printf_char::@2 +Culled Empty Block (label) memset::@1 +Culled Empty Block (label) memcpy::@3 +Culled Empty Block (label) printf_str::@7 +Culled Empty Block (label) printf_str::@6 +Culled Empty Block (label) printf_ln::@1 +Culled Empty Block (label) strupr::@3 +Culled Empty Block (label) toupper::@2 +Culled Empty Block (label) strlen::@3 +Culled Empty Block (label) utoa::@1 +Culled Empty Block (label) utoa::@5 +Culled Empty Block (label) utoa::@17 +Culled Empty Block (label) queen::@8 +Culled Empty Block (label) print::@14 +Culled Empty Block (label) print::@3 +Culled Empty Block (label) print::@17 +Culled Empty Block (label) print::@19 +Culled Empty Block (label) print::@18 +Culled Empty Block (label) printf_uchar::@2 +Culled Empty Block (label) printf_uchar::@5 +Culled Empty Block (label) uctoa::@6 +Culled Empty Block (label) uctoa::@2 +Culled Empty Block (label) uctoa::@5 +Culled Empty Block (label) uctoa::@17 +Culled Empty Block (label) printf_ulong::@2 +Culled Empty Block (label) printf_ulong::@5 +Culled Empty Block (label) ultoa::@1 +Culled Empty Block (label) ultoa::@5 +Culled Empty Block (label) ultoa::@17 +Culled Empty Block (label) legal::@3 +Culled Empty Block (label) legal::@7 +Culled Empty Block (label) legal::@4 +Renumbering block toupper::@3 to toupper::@2 +Renumbering block memset::@2 to memset::@1 +Renumbering block memset::@3 to memset::@2 +Renumbering block memset::@4 to memset::@3 +Renumbering block strupr::@4 to strupr::@3 +Renumbering block uctoa::@10 to uctoa::@1 +Renumbering block uctoa::@11 to uctoa::@2 +Renumbering block uctoa::@12 to uctoa::@3 +Renumbering block uctoa::@13 to uctoa::@4 +Renumbering block uctoa::@14 to uctoa::@5 +Renumbering block uctoa::@15 to uctoa::@6 +Renumbering block uctoa::@16 to uctoa::@7 +Renumbering block utoa::@10 to utoa::@1 +Renumbering block utoa::@11 to utoa::@2 +Renumbering block utoa::@12 to utoa::@3 +Renumbering block utoa::@13 to utoa::@4 +Renumbering block utoa::@14 to utoa::@5 +Renumbering block utoa::@15 to utoa::@6 +Renumbering block utoa::@16 to utoa::@7 +Renumbering block ultoa::@10 to ultoa::@1 +Renumbering block ultoa::@11 to ultoa::@2 +Renumbering block ultoa::@12 to ultoa::@3 +Renumbering block ultoa::@13 to ultoa::@4 +Renumbering block ultoa::@14 to ultoa::@5 +Renumbering block ultoa::@15 to ultoa::@6 +Renumbering block ultoa::@16 to ultoa::@7 +Renumbering block printf_ulong::@3 to printf_ulong::@1 +Renumbering block printf_ulong::@4 to printf_ulong::@2 +Renumbering block printf_uint::@3 to printf_uint::@1 +Renumbering block printf_uint::@4 to printf_uint::@2 +Renumbering block printf_uchar::@3 to printf_uchar::@1 +Renumbering block printf_uchar::@4 to printf_uchar::@2 +Renumbering block printf_number_buffer::@15 to printf_number_buffer::@14 +Renumbering block printf_number_buffer::@19 to printf_number_buffer::@15 +Renumbering block printf_number_buffer::@22 to printf_number_buffer::@16 +Renumbering block printf_number_buffer::@23 to printf_number_buffer::@17 +Renumbering block printf_number_buffer::@24 to printf_number_buffer::@18 +Renumbering block printf_number_buffer::@25 to printf_number_buffer::@19 +Renumbering block printf_number_buffer::@26 to printf_number_buffer::@20 +Renumbering block printf_number_buffer::@27 to printf_number_buffer::@21 +Renumbering block legal::@5 to legal::@3 +Renumbering block legal::@6 to legal::@4 +Renumbering block legal::@8 to legal::@5 +Renumbering block legal::@9 to legal::@6 +Renumbering block print::@4 to print::@3 +Renumbering block print::@5 to print::@4 +Renumbering block print::@6 to print::@5 +Renumbering block print::@7 to print::@6 +Renumbering block print::@8 to print::@7 +Renumbering block print::@9 to print::@8 +Renumbering block print::@10 to print::@9 +Renumbering block print::@11 to print::@10 +Renumbering block print::@12 to print::@11 +Renumbering block print::@13 to print::@12 +Renumbering block print::@15 to print::@13 +Renumbering block print::@16 to print::@14 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @3 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of printf_uint +Adding NOP phi() at start of printf_number_buffer::@21 +Adding NOP phi() at start of printf_scroll::@1 +Adding NOP phi() at start of printf_scroll::@2 +Adding NOP phi() at start of memcpy +Adding NOP phi() at start of printf_str::@4 +Adding NOP phi() at start of strupr +Adding NOP phi() at start of strlen +Adding NOP phi() at start of utoa +Adding NOP phi() at start of utoa_append +Adding NOP phi() at start of printf_cls +Adding NOP phi() at start of queen::@4 +Adding NOP phi() at start of print::@12 +Adding NOP phi() at start of print::@4 +Adding NOP phi() at start of print::@10 +Adding NOP phi() at start of print::@8 +Adding NOP phi() at start of uctoa +Adding NOP phi() at start of uctoa_append +Adding NOP phi() at start of printf_ulong +Adding NOP phi() at start of ultoa +Adding NOP phi() at start of ultoa_append +Adding NOP phi() at start of legal + +FINAL CONTROL FLOW GRAPH +@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 + +null depth in calling loop Loop head: queen::@1 tails: queen::@3 blocks: queen::@3 queen::@4 queen::@6 queen::@7 queen::@5 queen::@2 queen::@1 in scope queen +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char +null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char +null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char + +VARIABLE REGISTER WEIGHTS +(dword) count loadstore 0.5833333333333333 +(byte()) diff((byte) diff::a , (byte) diff::b) +(byte) diff::a +(byte) diff::a#0 1.000000000001E12 +(byte) diff::a#1 1.000000000001E12 +(byte) diff::a#2 1.60000000000025E13 +(byte) diff::b +(byte) diff::b#0 2.000000000002E12 +(byte) diff::b#1 2.000000000002E12 +(byte) diff::b#2 1.60000000000025E13 +(byte) diff::return +(byte) diff::return#0 2.000000000002E12 +(byte) diff::return#1 2.000000000002E12 +(byte) diff::return#2 2.0000000000002E13 +(byte) diff::return#3 2.0000000000002E13 +(byte) diff::return#4 5.500000000001E12 +(byte()) legal((byte) legal::row , (byte) legal::column) +(byte~) legal::$0 2.000000000002E12 +(byte~) legal::$3 3.333333333336667E11 +(byte~) legal::$4 2.000000000002E12 +(byte) legal::column +(byte) legal::column#0 1.1666666666683334E11 +(byte) legal::i +(byte) legal::i#1 2.000000000002E12 +(byte) legal::i#2 4.0000000000039996E11 +(byte) legal::return +(byte) legal::return#0 2.00000000002E11 +(byte) legal::return#4 3.3333333333666668E10 +(byte) legal::row +(byte) legal::row#0 1.1052631578963158E11 +(void()) main() +(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) +(void*) memcpy::destination +(byte*) memcpy::dst +(byte*) memcpy::dst#1 1.0E43 +(byte*) memcpy::dst#2 1.0E43 +(word) memcpy::num +(void*) memcpy::return +(void*) memcpy::source +(byte*) memcpy::src +(byte*) memcpy::src#1 2.0E43 +(byte*) memcpy::src#2 1.0E43 +(byte*) memcpy::src_end +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(byte) memset::c +(byte) memset::c#4 1.25E42 +(byte*) memset::dst +(byte*) memset::dst#1 2.0E43 +(byte*) memset::dst#2 1.3333333333333668E43 +(byte*) memset::dst#4 2.0E30 +(byte*) memset::end +(byte*) memset::end#0 1.6666666666668335E42 +(word) memset::num +(word) memset::num#2 1.0E30 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 +(void()) print() +(byte) print::i +(byte) print::i#1 2.000000000002E12 +(byte) print::i#2 1.000000000001E12 +(byte) print::i1 +(byte) print::i1#1 2.000000000002E12 +(byte) print::i1#2 1.0000000000003572E12 +(byte) print::j +(byte) print::j#1 2.0000000000002E13 +(byte) print::j#2 5.714285714286286E12 +(struct printf_buffer_number) printf_buffer loadstore = {} +(byte) printf_buffer_number::sign +(void()) printf_char((byte) printf_char::ch) +(byte) printf_char::ch +(byte) printf_char::ch#0 2.0E27 +(byte) printf_char::ch#1 2.0E26 +(byte) printf_char::ch#2 2.00000000000002E14 +(byte) printf_char::ch#3 1.11000000000001E28 +(void()) printf_cls() +(byte*) printf_cursor_ptr loadstore 1.4683544303797465E27 +(byte) printf_cursor_x loadstore 2.837837837837838E26 +(byte) printf_cursor_y loadstore 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 2.0E27 +(byte*~) printf_ln::$1 2.0E27 +(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 1.00000000000001E14 +(struct printf_buffer_number) printf_number_buffer::buffer +(byte*) printf_number_buffer::buffer_digits +(byte*) printf_number_buffer::buffer_digits#10 1.0344827586207E13 +(byte) printf_number_buffer::buffer_sign +(byte) printf_number_buffer::buffer_sign#0 202.0 +(byte) printf_number_buffer::buffer_sign#1 202.0 +(byte) printf_number_buffer::buffer_sign#10 1.55000000000103E13 +(byte) printf_number_buffer::buffer_sign#2 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 6.451612903225871E12 +(byte) printf_number_buffer::format_min_length +(byte) printf_number_buffer::format_min_length#3 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 3.846153846153885E12 +(byte) printf_number_buffer::format_zero_padding +(byte) printf_number_buffer::format_zero_padding#10 9.375000000000094E12 +(signed byte) printf_number_buffer::len +(signed byte) printf_number_buffer::len#0 1.500000000000015E14 +(signed byte) printf_number_buffer::len#1 2.00000000000002E14 +(signed byte) printf_number_buffer::len#2 3.00000000000003E14 +(signed byte) printf_number_buffer::padding +(signed byte) printf_number_buffer::padding#1 1.00000000000001E14 +(signed byte) printf_number_buffer::padding#10 1.904761904761924E13 +(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length) +(byte) printf_padding::i +(byte) printf_padding::i#1 2.0E27 +(byte) printf_padding::i#2 7.500000000000001E26 +(byte) printf_padding::length +(byte) printf_padding::length#0 2.00000000000002E14 +(byte) printf_padding::length#1 2.00000000000002E14 +(byte) printf_padding::length#2 2.00000000000002E14 +(byte) printf_padding::length#4 1.6666666666671665E26 +(byte) printf_padding::pad +(byte) printf_padding::pad#5 1.6666666666666666E26 +(void()) printf_scroll() +(byte*~) printf_scroll::$4 2.0E29 +(void()) printf_str((byte*) printf_str::str) +(byte) printf_str::ch +(byte) printf_str::ch#0 1.0E26 +(byte*) printf_str::str +(byte*) printf_str::str#0 4.285714285714285E25 +(byte*) printf_str::str#1 2.00000000000002E14 +(byte*) printf_str::str#10 2.000000000005E26 +(byte*) printf_str::str#11 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) +(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 2.000000000002E12 +(byte) printf_uchar::uvalue#1 2.000000000002E12 +(byte) printf_uchar::uvalue#2 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) +(struct printf_format_number) printf_uint::format +(byte) printf_uint::format_justify_left +(byte) printf_uint::format_min_length +(byte) printf_uint::format_radix +(byte) printf_uint::format_sign_always +(byte) printf_uint::format_upper_case +(byte) printf_uint::format_zero_padding +(word) printf_uint::uvalue +(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) +(struct printf_format_number) printf_ulong::format +(byte) printf_ulong::format_justify_left +(byte) printf_ulong::format_min_length +(byte) printf_ulong::format_radix +(byte) printf_ulong::format_sign_always +(byte) printf_ulong::format_upper_case +(byte) printf_ulong::format_zero_padding +(dword) printf_ulong::uvalue +(dword) printf_ulong::uvalue#0 37.33333333333333 +__stackcall (void()) queen((byte) queen::row) +(byte~) queen::$1 2.00000000002E11 +(byte~) queen::$4 2.00000000002E11 +(byte) queen::column loadstore 2.9411764706823532E10 +(byte) queen::r loadstore 2.1052631579736843E10 +(byte) queen::row +(byte) queen::row#0 22.0 +(word()) strlen((byte*) strlen::str) +(word) strlen::len +(word) strlen::len#1 1.0E27 +(word) strlen::len#2 5.00000000000025E26 +(word) strlen::return +(word) strlen::return#2 2.00000000000002E14 +(byte*) strlen::str +(byte*) strlen::str#0 2.0E27 +(byte*) strlen::str#1 5.50000000000001E14 +(byte*) strlen::str#2 1.0000000000003332E27 +(byte*()) strupr((byte*) strupr::str) +(byte~) strupr::$0 2.0E27 +(byte*) strupr::return +(byte*) strupr::src +(byte*) strupr::src#1 2.0E27 +(byte*) strupr::src#2 7.142857142858572E26 +(byte*) strupr::str +(byte*) strupr::str#0 5.50000000000001E14 +(byte()) toupper((byte) toupper::ch) +(byte) toupper::ch +(byte) toupper::ch#0 1.6999999999999998E28 +(byte) toupper::return +(byte) toupper::return#0 2.0E28 +(byte) toupper::return#2 1.0333333333333333E28 +(byte) toupper::return#3 2.0E27 +(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix) +(byte*) uctoa::buffer +(byte*) uctoa::buffer#11 3.3333333333350004E25 +(byte*) uctoa::buffer#14 1.5000000000000002E26 +(byte*) uctoa::buffer#3 2.00000000000002E14 +(byte*) uctoa::buffer#4 2.0E26 +(byte) uctoa::digit +(byte) uctoa::digit#1 2.0E26 +(byte) uctoa::digit#2 3.076923076923077E25 +(byte) uctoa::digit_value +(byte) uctoa::digit_value#0 6.000000000000001E25 +(byte*) uctoa::digit_values +(byte) uctoa::max_digits +(byte) uctoa::radix +(byte) uctoa::started +(byte) uctoa::started#2 6.000000000000001E25 +(byte) uctoa::started#4 1.0E26 +(byte) uctoa::value +(byte) uctoa::value#0 1.0E26 +(byte) uctoa::value#1 5.5000000000001E13 +(byte) uctoa::value#2 6.666666666670001E25 +(byte) uctoa::value#6 1.5000000000000002E26 +(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub) +(byte*) uctoa_append::buffer +(byte*) uctoa_append::buffer#0 1.3750000000000001E26 +(byte) uctoa_append::digit +(byte) uctoa_append::digit#1 1.0E40 +(byte) uctoa_append::digit#2 1.00000000000005E40 +(byte) uctoa_append::return +(byte) uctoa_append::return#0 2.0E26 +(byte) uctoa_append::sub +(byte) uctoa_append::sub#0 3.33333333333335E39 +(byte) uctoa_append::value +(byte) uctoa_append::value#0 3.666666666666667E26 +(byte) uctoa_append::value#1 2.0E40 +(byte) uctoa_append::value#2 5.0000000000001833E39 +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +(byte~) ultoa::$10 2.00000000000002E14 +(byte~) ultoa::$11 2002.0 +(byte*) ultoa::buffer +(byte*) ultoa::buffer#11 2.8571428571571855E13 +(byte*) ultoa::buffer#14 1.500000000000015E14 +(byte*) ultoa::buffer#3 2002.0 +(byte*) ultoa::buffer#4 2.00000000000002E14 +(byte) ultoa::digit +(byte) ultoa::digit#1 2.00000000000002E14 +(byte) ultoa::digit#2 2.8571428571428855E13 +(dword) ultoa::digit_value +(dword) ultoa::digit_value#0 6.000000000000059E13 +(dword*) ultoa::digit_values +(byte) ultoa::max_digits +(byte) ultoa::radix +(byte) ultoa::started +(byte) ultoa::started#2 5.00000000000005E13 +(byte) ultoa::started#4 1.00000000000001E14 +(dword) ultoa::value +(dword) ultoa::value#0 1.00000000000001E14 +(dword) ultoa::value#1 551.0 +(dword) ultoa::value#2 5.714285714300071E13 +(dword) ultoa::value#6 1.500000000000015E14 +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +(byte*) ultoa_append::buffer +(byte*) ultoa_append::buffer#0 1.3750000000000025E14 +(byte) ultoa_append::digit +(byte) ultoa_append::digit#1 1.0E27 +(byte) ultoa_append::digit#2 1.0000000000005E27 +(dword) ultoa_append::return +(dword) ultoa_append::return#0 2.00000000000002E14 +(dword) ultoa_append::sub +(dword) ultoa_append::sub#0 3.3333333333335E26 +(dword) ultoa_append::value +(dword) ultoa_append::value#0 3.666666666666674E14 +(dword) ultoa_append::value#1 2.0E27 +(dword) ultoa_append::value#2 5.0000000000018335E26 +(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) +(byte~) utoa::$10 20002.0 +(byte~) utoa::$11 2002.0 +(byte*) utoa::buffer +(byte*) utoa::buffer#11 3000.4285714285716 +(byte*) utoa::buffer#14 15001.5 +(byte*) utoa::buffer#3 2002.0 +(byte*) utoa::buffer#4 20002.0 +(byte) utoa::digit +(byte) utoa::digit#1 20002.0 +(byte) utoa::digit#2 2857.4285714285716 +(word) utoa::digit_value +(word) utoa::digit_value#0 6000.6 +(word*) utoa::digit_values +(byte) utoa::max_digits +(byte) utoa::radix +(byte) utoa::started +(byte) utoa::started#2 5000.5 +(byte) utoa::started#4 10001.0 +(word) utoa::value +(word) utoa::value#0 10001.0 +(word) utoa::value#2 5714.857142857143 +(word) utoa::value#6 15001.5 +(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub) +(byte*) utoa_append::buffer +(byte*) utoa_append::buffer#0 13750.25 +(byte) utoa_append::digit +(byte) utoa_append::digit#1 1.0000001E7 +(byte) utoa_append::digit#2 1.00500015E7 +(word) utoa_append::return +(word) utoa_append::return#0 20002.0 +(word) utoa_append::sub +(word) utoa_append::sub#0 3335000.5 +(word) utoa_append::value +(word) utoa_append::value#0 36667.33333333333 +(word) utoa_append::value#1 2.0000002E7 +(word) utoa_append::value#2 5018334.166666666 + +Initial phi equivalence classes +[ printf_number_buffer::format_min_length#3 ] +[ printf_number_buffer::format_justify_left#10 ] +[ printf_number_buffer::format_zero_padding#10 ] +[ printf_number_buffer::buffer_digits#10 ] +[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +[ printf_number_buffer::format_upper_case#10 ] +[ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] +[ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +[ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +[ printf_padding::pad#5 ] +[ printf_padding::i#2 printf_padding::i#1 ] +[ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#4 ] +[ memset::dst#2 memset::dst#4 memset::dst#1 ] +[ memcpy::src#2 memcpy::src#1 ] +[ memcpy::dst#2 memcpy::dst#1 ] +[ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] +[ strupr::src#2 strupr::str#0 strupr::src#1 ] +[ toupper::return#2 toupper::return#0 toupper::ch#0 ] +[ strlen::str#2 strlen::str#1 strlen::str#0 ] +[ strlen::len#2 strlen::len#1 ] +[ utoa::digit#2 utoa::digit#1 ] +[ utoa::value#2 utoa::value#6 utoa::value#0 ] +[ utoa::started#2 utoa::started#4 ] +[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +[ utoa_append::digit#2 utoa_append::digit#1 ] +[ print::i#2 print::i#1 ] +[ print::i1#2 print::i1#1 ] +[ print::j#2 print::j#1 ] +[ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +[ uctoa::digit#2 uctoa::digit#1 ] +[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +[ uctoa::started#2 uctoa::started#4 ] +[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] +[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +[ uctoa_append::digit#2 uctoa_append::digit#1 ] +[ ultoa::digit#2 ultoa::digit#1 ] +[ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +[ ultoa::started#2 ultoa::started#4 ] +[ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +[ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +[ ultoa_append::digit#2 ultoa_append::digit#1 ] +[ legal::i#2 legal::i#1 ] +[ legal::return#4 ] +[ diff::a#2 diff::a#0 diff::a#1 ] +[ diff::b#2 diff::b#0 diff::b#1 ] +[ diff::return#4 diff::return#2 diff::return#3 ] +Added variable printf_cursor_x to live range equivalence class [ printf_cursor_x ] +Added variable printf_cursor_y to live range equivalence class [ printf_cursor_y ] +Added variable printf_cursor_ptr to live range equivalence class [ printf_cursor_ptr ] +Added variable count to live range equivalence class [ count ] +Added variable strlen::return#2 to live range equivalence class [ strlen::return#2 ] +Added variable printf_number_buffer::$19 to live range equivalence class [ printf_number_buffer::$19 ] +Added variable printf_scroll::$4 to live range equivalence class [ printf_scroll::$4 ] +Added variable memset::end#0 to live range equivalence class [ memset::end#0 ] +Added variable printf_str::ch#0 to live range equivalence class [ printf_str::ch#0 ] +Added variable printf_ln::$0 to live range equivalence class [ printf_ln::$0 ] +Added variable printf_ln::$1 to live range equivalence class [ printf_ln::$1 ] +Added variable toupper::return#3 to live range equivalence class [ toupper::return#3 ] +Added variable strupr::$0 to live range equivalence class [ strupr::$0 ] +Added variable utoa::$11 to live range equivalence class [ utoa::$11 ] +Added variable utoa::buffer#3 to live range equivalence class [ utoa::buffer#3 ] +Added variable utoa::$10 to live range equivalence class [ utoa::$10 ] +Added variable utoa::digit_value#0 to live range equivalence class [ utoa::digit_value#0 ] +Added variable utoa_append::buffer#0 to live range equivalence class [ utoa_append::buffer#0 ] +Added variable utoa_append::sub#0 to live range equivalence class [ utoa_append::sub#0 ] +Added variable utoa_append::return#0 to live range equivalence class [ utoa_append::return#0 ] +Added variable queen::row#0 to live range equivalence class [ queen::row#0 ] +Added variable queen::r to live range equivalence class [ queen::r ] +Added variable queen::column to live range equivalence class [ queen::column ] +Added variable legal::row#0 to live range equivalence class [ legal::row#0 ] +Added variable legal::column#0 to live range equivalence class [ legal::column#0 ] +Added variable legal::return#0 to live range equivalence class [ legal::return#0 ] +Added variable queen::$1 to live range equivalence class [ queen::$1 ] +Added variable queen::$4 to live range equivalence class [ queen::$4 ] +Added variable printf_ulong::uvalue#0 to live range equivalence class [ printf_ulong::uvalue#0 ] +Added variable uctoa::buffer#3 to live range equivalence class [ uctoa::buffer#3 ] +Added variable uctoa::digit_value#0 to live range equivalence class [ uctoa::digit_value#0 ] +Added variable uctoa_append::buffer#0 to live range equivalence class [ uctoa_append::buffer#0 ] +Added variable uctoa_append::sub#0 to live range equivalence class [ uctoa_append::sub#0 ] +Added variable uctoa_append::return#0 to live range equivalence class [ uctoa_append::return#0 ] +Added variable ultoa::$11 to live range equivalence class [ ultoa::$11 ] +Added variable ultoa::buffer#3 to live range equivalence class [ ultoa::buffer#3 ] +Added variable ultoa::$10 to live range equivalence class [ ultoa::$10 ] +Added variable ultoa::digit_value#0 to live range equivalence class [ ultoa::digit_value#0 ] +Added variable ultoa_append::buffer#0 to live range equivalence class [ ultoa_append::buffer#0 ] +Added variable ultoa_append::sub#0 to live range equivalence class [ ultoa_append::sub#0 ] +Added variable ultoa_append::return#0 to live range equivalence class [ ultoa_append::return#0 ] +Added variable legal::$0 to live range equivalence class [ legal::$0 ] +Added variable diff::return#0 to live range equivalence class [ diff::return#0 ] +Added variable legal::$3 to live range equivalence class [ legal::$3 ] +Added variable diff::return#1 to live range equivalence class [ diff::return#1 ] +Added variable legal::$4 to live range equivalence class [ legal::$4 ] +Added variable printf_buffer to live range equivalence class [ printf_buffer ] +Complete equivalence classes +[ printf_number_buffer::format_min_length#3 ] +[ printf_number_buffer::format_justify_left#10 ] +[ printf_number_buffer::format_zero_padding#10 ] +[ printf_number_buffer::buffer_digits#10 ] +[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +[ printf_number_buffer::format_upper_case#10 ] +[ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] +[ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +[ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +[ printf_padding::pad#5 ] +[ printf_padding::i#2 printf_padding::i#1 ] +[ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#4 ] +[ memset::dst#2 memset::dst#4 memset::dst#1 ] +[ memcpy::src#2 memcpy::src#1 ] +[ memcpy::dst#2 memcpy::dst#1 ] +[ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] +[ strupr::src#2 strupr::str#0 strupr::src#1 ] +[ toupper::return#2 toupper::return#0 toupper::ch#0 ] +[ strlen::str#2 strlen::str#1 strlen::str#0 ] +[ strlen::len#2 strlen::len#1 ] +[ utoa::digit#2 utoa::digit#1 ] +[ utoa::value#2 utoa::value#6 utoa::value#0 ] +[ utoa::started#2 utoa::started#4 ] +[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +[ utoa_append::digit#2 utoa_append::digit#1 ] +[ print::i#2 print::i#1 ] +[ print::i1#2 print::i1#1 ] +[ print::j#2 print::j#1 ] +[ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +[ uctoa::digit#2 uctoa::digit#1 ] +[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +[ uctoa::started#2 uctoa::started#4 ] +[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] +[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +[ uctoa_append::digit#2 uctoa_append::digit#1 ] +[ ultoa::digit#2 ultoa::digit#1 ] +[ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +[ ultoa::started#2 ultoa::started#4 ] +[ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +[ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +[ ultoa_append::digit#2 ultoa_append::digit#1 ] +[ legal::i#2 legal::i#1 ] +[ legal::return#4 ] +[ diff::a#2 diff::a#0 diff::a#1 ] +[ diff::b#2 diff::b#0 diff::b#1 ] +[ diff::return#4 diff::return#2 diff::return#3 ] +[ printf_cursor_x ] +[ printf_cursor_y ] +[ printf_cursor_ptr ] +[ count ] +[ strlen::return#2 ] +[ printf_number_buffer::$19 ] +[ printf_scroll::$4 ] +[ memset::end#0 ] +[ printf_str::ch#0 ] +[ printf_ln::$0 ] +[ printf_ln::$1 ] +[ toupper::return#3 ] +[ strupr::$0 ] +[ utoa::$11 ] +[ utoa::buffer#3 ] +[ utoa::$10 ] +[ utoa::digit_value#0 ] +[ utoa_append::buffer#0 ] +[ utoa_append::sub#0 ] +[ utoa_append::return#0 ] +[ queen::row#0 ] +[ queen::r ] +[ queen::column ] +[ legal::row#0 ] +[ legal::column#0 ] +[ legal::return#0 ] +[ queen::$1 ] +[ queen::$4 ] +[ printf_ulong::uvalue#0 ] +[ uctoa::buffer#3 ] +[ uctoa::digit_value#0 ] +[ uctoa_append::buffer#0 ] +[ uctoa_append::sub#0 ] +[ uctoa_append::return#0 ] +[ ultoa::$11 ] +[ ultoa::buffer#3 ] +[ ultoa::$10 ] +[ ultoa::digit_value#0 ] +[ ultoa_append::buffer#0 ] +[ ultoa_append::sub#0 ] +[ ultoa_append::return#0 ] +[ legal::$0 ] +[ diff::return#0 ] +[ legal::$3 ] +[ diff::return#1 ] +[ legal::$4 ] +[ printf_buffer ] +Allocated zp[1]:2 [ printf_number_buffer::format_min_length#3 ] +Allocated zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] +Allocated zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] +Allocated zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] +Allocated zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Allocated zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] +Allocated zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] +Allocated zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Allocated zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Allocated zp[1]:12 [ printf_padding::pad#5 ] +Allocated zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] +Allocated zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Allocated zp[2]:15 [ memset::num#2 ] +Allocated zp[2]:17 [ memset::str#3 ] +Allocated zp[1]:19 [ memset::c#4 ] +Allocated zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] +Allocated zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] +Allocated zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] +Allocated zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] +Allocated zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] +Allocated zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] +Allocated zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] +Allocated zp[2]:33 [ strlen::len#2 strlen::len#1 ] +Allocated zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] +Allocated zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] +Allocated zp[1]:38 [ utoa::started#2 utoa::started#4 ] +Allocated zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +Allocated zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +Allocated zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] +Allocated zp[1]:44 [ print::i#2 print::i#1 ] +Allocated zp[1]:45 [ print::i1#2 print::i1#1 ] +Allocated zp[1]:46 [ print::j#2 print::j#1 ] +Allocated zp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Allocated zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] +Allocated zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +Allocated zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] +Allocated zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] +Allocated zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Allocated zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] +Allocated zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] +Allocated zp[4]:56 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +Allocated zp[1]:60 [ ultoa::started#2 ultoa::started#4 ] +Allocated zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +Allocated zp[4]:63 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +Allocated zp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] +Allocated zp[1]:68 [ legal::i#2 legal::i#1 ] +Allocated zp[1]:69 [ legal::return#4 ] +Allocated zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 ] +Allocated zp[1]:71 [ diff::b#2 diff::b#0 diff::b#1 ] +Allocated zp[1]:72 [ diff::return#4 diff::return#2 diff::return#3 ] +Allocated zp[1]:73 [ printf_cursor_x ] +Allocated zp[1]:74 [ printf_cursor_y ] +Allocated zp[2]:75 [ printf_cursor_ptr ] +Allocated zp[4]:77 [ count ] +Allocated zp[2]:81 [ strlen::return#2 ] +Allocated zp[2]:83 [ printf_number_buffer::$19 ] +Allocated zp[2]:85 [ printf_scroll::$4 ] +Allocated zp[2]:87 [ memset::end#0 ] +Allocated zp[1]:89 [ printf_str::ch#0 ] +Allocated zp[2]:90 [ printf_ln::$0 ] +Allocated zp[2]:92 [ printf_ln::$1 ] +Allocated zp[1]:94 [ toupper::return#3 ] +Allocated zp[1]:95 [ strupr::$0 ] +Allocated zp[1]:96 [ utoa::$11 ] +Allocated zp[2]:97 [ utoa::buffer#3 ] +Allocated zp[1]:99 [ utoa::$10 ] +Allocated zp[2]:100 [ utoa::digit_value#0 ] +Allocated zp[2]:102 [ utoa_append::buffer#0 ] +Allocated zp[2]:104 [ utoa_append::sub#0 ] +Allocated zp[2]:106 [ utoa_append::return#0 ] +Allocated zp[1]:108 [ queen::row#0 ] +Allocated zp[1]:109 [ queen::r ] +Allocated zp[1]:110 [ queen::column ] +Allocated zp[1]:111 [ legal::row#0 ] +Allocated zp[1]:112 [ legal::column#0 ] +Allocated zp[1]:113 [ legal::return#0 ] +Allocated zp[1]:114 [ queen::$1 ] +Allocated zp[1]:115 [ queen::$4 ] +Allocated zp[4]:116 [ printf_ulong::uvalue#0 ] +Allocated zp[2]:120 [ uctoa::buffer#3 ] +Allocated zp[1]:122 [ uctoa::digit_value#0 ] +Allocated zp[2]:123 [ uctoa_append::buffer#0 ] +Allocated zp[1]:125 [ uctoa_append::sub#0 ] +Allocated zp[1]:126 [ uctoa_append::return#0 ] +Allocated zp[1]:127 [ ultoa::$11 ] +Allocated zp[2]:128 [ ultoa::buffer#3 ] +Allocated zp[1]:130 [ ultoa::$10 ] +Allocated zp[4]:131 [ ultoa::digit_value#0 ] +Allocated zp[2]:135 [ ultoa_append::buffer#0 ] +Allocated zp[4]:137 [ ultoa_append::sub#0 ] +Allocated zp[4]:141 [ ultoa_append::return#0 ] +Allocated zp[1]:145 [ legal::$0 ] +Allocated zp[1]:146 [ diff::return#0 ] +Allocated zp[1]:147 [ legal::$3 ] +Allocated zp[1]:148 [ diff::return#1 ] +Allocated zp[1]:149 [ legal::$4 ] +Allocated mem[12] [ printf_buffer ] + +INITIAL ASM +Target platform is c64basic / MOS6502X + // File Comments +// 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 + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 + .const STACK_BASE = $103 + .label printf_cursor_x = $49 + .label printf_cursor_y = $4a + .label printf_cursor_ptr = $4b + .label count = $4d + // @begin +__bbegin: + jmp __b1 + // @1 +__b1: + // [1] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // X-position of cursor + lda #0 + sta.z printf_cursor_x + // [2] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + // Y-position of cursor + lda #0 + sta.z printf_cursor_y + // [3] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + // Pointer to cursor address + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + jmp __b2 + // @2 +__b2: + // [4] (dword) count ← (dword) 0 -- vduz1=vduc1 + // The number of found solutions + lda #<0 + sta.z count + lda #>0 + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [5] phi from @2 to @3 [phi:@2->@3] +__b3_from___b2: + jmp __b3 + // @3 +__b3: + // [6] call main + // [8] phi from @3 to main [phi:@3->main] +main_from___b3: + jsr main + // [7] phi from @3 to @end [phi:@3->@end] +__bend_from___b3: + jmp __bend + // @end +__bend: + // main +main: { + // [9] call printf_cls + // [171] phi from main to printf_cls [phi:main->printf_cls] + printf_cls_from_main: + jsr printf_cls + // [10] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + jmp __b1 + // main::@1 + __b1: + // [11] call printf_str + // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] + printf_str_from___b1: + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + jmp __b2 + // main::@2 + __b2: + // [13] call printf_str + // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] + printf_str_from___b2: + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + jmp __b3 + // main::@3 + __b3: + // [15] call printf_uint + // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + printf_uint_from___b3: + jsr printf_uint + jmp __b4 + // main::@4 + __b4: + // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 + lda #1 + pha + // [17] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + jmp __breturn + // main::@return + __breturn: + // [19] return + rts + str: .text " - n queens problem using backtracking -" + .byte 0 + str1: .text @"\nNumber of queens:" + .byte 0 +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + jmp __b1 + // printf_uint::@1 + __b1: + // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [22] call utoa + // Format number into buffer + // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + utoa_from___b1: + jsr utoa + jmp __b2 + // printf_uint::@2 + __b2: + // [23] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [24] call printf_number_buffer + // Print using format + // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uint::@return + __breturn: + // [25] return + rts +} + // printf_number_buffer +// Print the contents of the number buffer using a specific format. +// This handles minimum length, zero-filling, and left/right justification from the format +// printf_number_buffer(byte zp(7) buffer_sign, byte* zp(5) buffer_digits, byte zp(2) format_min_length, byte zp(3) format_justify_left, byte zp(4) format_zero_padding, byte zp(8) format_upper_case) +printf_number_buffer: { + .label __19 = $53 + .label buffer_sign = 7 + .label len = 9 + .label padding = $a + .label format_min_length = 2 + .label format_zero_padding = 4 + .label format_justify_left = 3 + .label buffer_digits = 5 + .label format_upper_case = 8 + // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_min_length + beq __b1_from_printf_number_buffer + jmp __b6 + // printf_number_buffer::@6 + __b6: + // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strlen.str + lda.z buffer_digits+1 + sta.z strlen.str+1 + // [29] call strlen + // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + strlen_from___b6: + jsr strlen + // [30] (word) strlen::return#2 ← (word) strlen::len#2 -- vwuz1=vwuz2 + lda.z strlen.len + sta.z strlen.return + lda.z strlen.len+1 + sta.z strlen.return+1 + jmp __b14 + // printf_number_buffer::@14 + __b14: + // [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 -- vwuz1=vwuz2 + lda.z strlen.return + sta.z __19 + lda.z strlen.return+1 + sta.z __19+1 + // [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsz1=_sbyte_vwuz2 + // There is a minimum length - work out the padding + lda.z __19 + sta.z len + // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b13_from___b14 + jmp __b7 + // printf_number_buffer::@7 + __b7: + // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 + inc.z len + // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + __b13_from___b14: + __b13_from___b7: + // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + jmp __b13 + // printf_number_buffer::@13 + __b13: + // [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 -- vbsz1=vbsz2_minus_vbsz3 + lda.z format_min_length + sec + sbc.z len + sta.z padding + // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + lda.z padding + cmp #0 + bpl __b21_from___b13 + // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + __b1_from_printf_number_buffer: + __b1_from___b13: + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + lda #0 + sta.z padding + jmp __b1 + // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + __b21_from___b13: + jmp __b21 + // printf_number_buffer::@21 + __b21: + // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + __b1_from___b21: + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + jmp __b1 + // printf_number_buffer::@1 + __b1: + // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + bne __b2 + jmp __b17 + // printf_number_buffer::@17 + __b17: + // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + bne __b2 + jmp __b16 + // printf_number_buffer::@16 + __b16: + // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b8 + jmp __b2 + // printf_number_buffer::@8 + __b8: + // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [44] call printf_padding + // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + printf_padding_from___b8: + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + jsr printf_padding + jmp __b2 + // printf_number_buffer::@2 + __b2: + // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b3 + jmp __b9 + // printf_number_buffer::@9 + __b9: + // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + lda.z buffer_sign + sta.z printf_char.ch + // [47] call printf_char + // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + printf_char_from___b9: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + jsr printf_char + jmp __b3 + // printf_number_buffer::@3 + __b3: + // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + beq __b4 + jmp __b18 + // printf_number_buffer::@18 + __b18: + // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b10 + jmp __b4 + // printf_number_buffer::@10 + __b10: + // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [51] call printf_padding + // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + printf_padding_from___b10: + // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + lda #'0' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + jsr printf_padding + jmp __b4 + // printf_number_buffer::@4 + __b4: + // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_upper_case + beq __b5 + jmp __b11 + // printf_number_buffer::@11 + __b11: + // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strupr.str + lda.z buffer_digits+1 + sta.z strupr.str+1 + // [54] call strupr + // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + strupr_from___b11: + jsr strupr + jmp __b5 + // printf_number_buffer::@5 + __b5: + // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z printf_str.str + lda.z buffer_digits+1 + sta.z printf_str.str+1 + // [56] call printf_str + // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + printf_str_from___b5: + // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + jsr printf_str + jmp __b15 + // printf_number_buffer::@15 + __b15: + // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + beq __breturn + jmp __b20 + // printf_number_buffer::@20 + __b20: + // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + bne __breturn + jmp __b19 + // printf_number_buffer::@19 + __b19: + // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b12 + jmp __breturn + // printf_number_buffer::@12 + __b12: + // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [61] call printf_padding + // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + printf_padding_from___b12: + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + jsr printf_padding + jmp __breturn + // printf_number_buffer::@return + __breturn: + // [62] return + rts +} + // printf_padding +// Print a padding char a number of times +// printf_padding(byte zp($c) pad, byte zp($b) length) +printf_padding: { + .label i = $d + .label length = $b + .label pad = $c + // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + __b1_from_printf_padding: + // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i + jmp __b1 + // printf_padding::@1 + __b1: + // [65] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 + lda.z i + cmp.z length + bcc __b2 + jmp __breturn + // printf_padding::@return + __breturn: + // [66] return + rts + // printf_padding::@2 + __b2: + // [67] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 -- vbuz1=vbuz2 + lda.z pad + sta.z printf_char.ch + // [68] call printf_char + // [70] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] + printf_char_from___b2: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + jsr printf_char + jmp __b3 + // printf_padding::@3 + __b3: + // [69] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [64] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] + __b1_from___b3: + // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + jmp __b1 +} + // printf_char +// Print a single char +// If the end of the screen is reached scroll it up one char and place the cursor at the +// printf_char(byte zp($e) ch) +printf_char: { + .label ch = $e + // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 + lda.z ch + ldy #0 + sta (printf_cursor_ptr),y + // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + inc.z printf_cursor_ptr + bne !+ + inc.z printf_cursor_ptr+1 + !: + // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_x + // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z printf_cursor_x + bne __breturn + jmp __b1 + // printf_char::@1 + __b1: + // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // [77] call printf_scroll + jsr printf_scroll + jmp __breturn + // printf_char::@return + __breturn: + // [78] return + rts +} + // printf_scroll +// Scroll the entire screen if the cursor is on the last line +printf_scroll: { + .label __4 = $55 + // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$19 + cmp.z printf_cursor_y + bne __breturn + // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + __b1_from_printf_scroll: + jmp __b1 + // printf_scroll::@1 + __b1: + // [81] call memcpy + // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + memcpy_from___b1: + jsr memcpy + // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + __b2_from___b1: + jmp __b2 + // printf_scroll::@2 + __b2: + // [83] call memset + // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + memset_from___b2: + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + lda #<$400+$28*$19-$28 + sta.z memset.str + lda #>$400+$28*$19-$28 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + lda #<$28 + sta.z memset.num + lda #>$28 + sta.z memset.num+1 + jsr memset + jmp __b3 + // printf_scroll::@3 + __b3: + // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz2_minus_vwuc1 + lda.z printf_cursor_ptr + sec + sbc #<$28 + sta.z __4 + lda.z printf_cursor_ptr+1 + sbc #>$28 + sta.z __4+1 + // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 -- pbuz1=pbuz2 + lda.z __4 + sta.z printf_cursor_ptr + lda.z __4+1 + sta.z printf_cursor_ptr+1 + // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + dec.z printf_cursor_y + jmp __breturn + // printf_scroll::@return + __breturn: + // [87] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zp($11) str, byte zp($13) c, word zp($f) num) +memset: { + .label end = $57 + .label dst = $14 + .label num = $f + .label str = $11 + .label c = $13 + // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda.z num + bne !+ + lda.z num+1 + beq __breturn + !: + jmp __b1 + // memset::@1 + __b1: + // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + lda.z str + clc + adc.z num + sta.z end + lda.z str+1 + adc.z num+1 + sta.z end+1 + // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + lda.z str + sta.z dst + lda.z str+1 + sta.z dst+1 + // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + __b2_from___b1: + __b2_from___b3: + // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + jmp __b2 + // memset::@2 + __b2: + // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + lda.z dst+1 + cmp.z end+1 + bne __b3 + lda.z dst + cmp.z end + bne __b3 + jmp __breturn + // memset::@return + __breturn: + // [94] return + rts + // memset::@3 + __b3: + // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + lda.z c + ldy #0 + sta (dst),y + // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc.z dst + bne !+ + inc.z dst+1 + !: + jmp __b2_from___b3 +} + // memcpy +// Copy block of memory (forwards) +// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. +memcpy: { + .label destination = $400 + .label source = $400+$28 + .const num = $28*$19-$28 + .label src_end = source+num + .label dst = $18 + .label src = $16 + // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + __b1_from_memcpy: + // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + lda #destination + sta.z dst+1 + // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + lda #source + sta.z src+1 + jmp __b1 + // memcpy::@1 + __b1: + // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + lda.z src+1 + cmp #>src_end + bne __b2 + lda.z src + cmp #memcpy::@1] + __b1_from___b2: + // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + jmp __b1 +} + // printf_str +// Print a zero-terminated string +// Handles escape codes such as newline +// printf_str(byte* zp($1a) str) +printf_str: { + .label ch = $59 + .label str = $1a + // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + __b1_from_printf_str: + __b1_from___b4: + __b1_from___b5: + // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + jmp __b1 + // printf_str::@1 + __b1: + jmp __b2 + // printf_str::@2 + __b2: + // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta.z ch + // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 + lda.z ch + cmp #0 + bne __b3 + jmp __breturn + // printf_str::@return + __breturn: + // [109] return + rts + // printf_str::@3 + __b3: + // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #'\n' + cmp.z ch + beq __b4_from___b3 + jmp __b5 + // printf_str::@5 + __b5: + // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 -- vbuz1=vbuz2 + lda.z ch + sta.z printf_char.ch + // [112] call printf_char + // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + printf_char_from___b5: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + jsr printf_char + jmp __b1_from___b5 + // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + __b4_from___b3: + jmp __b4 + // printf_str::@4 + __b4: + // [114] call printf_ln + jsr printf_ln + jmp __b1_from___b4 +} + // printf_ln +// Print a newline +printf_ln: { + .label __0 = $5a + .label __1 = $5c + // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz2_minus_vbuz3 + sec + lda.z printf_cursor_ptr + sbc.z printf_cursor_x + sta.z __0 + lda.z printf_cursor_ptr+1 + sbc #0 + sta.z __0+1 + // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz2_plus_vbuc1 + lda #$28 + clc + adc.z __0 + sta.z __1 + lda #0 + adc.z __0+1 + sta.z __1+1 + // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 -- pbuz1=pbuz2 + lda.z __1 + sta.z printf_cursor_ptr + lda.z __1+1 + sta.z printf_cursor_ptr+1 + // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // [120] call printf_scroll + jsr printf_scroll + jmp __breturn + // printf_ln::@return + __breturn: + // [121] return + rts +} + // strupr +// Converts a string to uppercase. +// strupr(byte* zp($1c) str) +strupr: { + .label __0 = $5f + .label src = $1c + .label str = $1c + // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + __b1_from_strupr: + __b1_from___b3: + // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + jmp __b1 + // strupr::@1 + __b1: + // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (src),y + cmp #0 + bne __b2 + jmp __breturn + // strupr::@return + __breturn: + // [125] return + rts + // strupr::@2 + __b2: + // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (src),y + sta.z toupper.ch + // [127] call toupper + jsr toupper + // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 -- vbuz1=vbuz2 + lda.z toupper.return + sta.z toupper.return_1 + jmp __b3 + // strupr::@3 + __b3: + // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 -- vbuz1=vbuz2 + lda.z toupper.return_1 + sta.z __0 + // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 + lda.z __0 + ldy #0 + sta (src),y + // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + inc.z src + bne !+ + inc.z src+1 + !: + jmp __b1_from___b3 +} + // toupper +// Convert lowercase alphabet to uppercase +// Returns uppercase equivalent to c, if such value exists, else c remains unchanged +// toupper(byte zp($1e) ch) +toupper: { + .label return = $1e + .label ch = $1e + .label return_1 = $5e + // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 + lda.z ch + cmp #'a' + bcc __breturn_from_toupper + jmp __b2 + // toupper::@2 + __b2: + // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 + lda #'z' + cmp.z ch + bcs __b1 + // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + __breturn_from_toupper: + __breturn_from___b1: + __breturn_from___b2: + // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + jmp __breturn + // toupper::@1 + __b1: + // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 + lax.z return + axs #-['A'-'a'] + stx.z return + jmp __breturn_from___b1 + // toupper::@return + __breturn: + // [136] return + rts +} + // strlen +// Computes the length of the string str up to but not including the terminating null character. +// strlen(byte* zp($1f) str) +strlen: { + .label len = $21 + .label str = $1f + .label return = $51 + // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + __b1_from_strlen: + // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + lda #<0 + sta.z len + lda #>0 + sta.z len+1 + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + jmp __b1 + // strlen::@1 + __b1: + // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (str),y + cmp #0 + bne __b2 + jmp __breturn + // strlen::@return + __breturn: + // [140] return + rts + // strlen::@2 + __b2: + // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + inc.z len + bne !+ + inc.z len+1 + !: + // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + __b1_from___b2: + // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + jmp __b1 +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($24) value, byte* zp($61) buffer) +utoa: { + .const max_digits = 5 + .label __10 = $63 + .label __11 = $60 + .label digit_value = $64 + .label buffer = $61 + .label digit = $23 + .label value = $24 + .label buffer_1 = $27 + .label started = $26 + // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + __b1_from_utoa: + // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer_1+1 + // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // utoa::@1 + __b1: + // [145] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // utoa::@3 + __b3: + // [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuz1=_byte_vwuz2 + lda.z value + sta.z __11 + // [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer_1),y + // [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz2 + lda.z buffer_1 + clc + adc #1 + sta.z buffer + lda.z buffer_1+1 + adc #0 + sta.z buffer+1 + // [149] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // utoa::@return + __breturn: + // [150] return + rts + // utoa::@2 + __b2: + // [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda.z digit + asl + sta.z __10 + // [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES+1,y + sta.z digit_value+1 + // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // utoa::@7 + __b7: + // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + __b4_from___b7: + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + jmp __b4 + // utoa::@4 + __b4: + // [156] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [144] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] + __b1_from___b4: + // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 -- pbuz1=pbuz2 + lda.z buffer_1 + sta.z utoa_append.buffer + lda.z buffer_1+1 + sta.z utoa_append.buffer+1 + // [158] (word) utoa_append::value#0 ← (word) utoa::value#2 -- vwuz1=vwuz2 + lda.z value + sta.z utoa_append.value + lda.z value+1 + sta.z utoa_append.value+1 + // [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 -- vwuz1=vwuz2 + lda.z digit_value + sta.z utoa_append.sub + lda.z digit_value+1 + sta.z utoa_append.sub+1 + // [160] call utoa_append + // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + utoa_append_from___b5: + jsr utoa_append + // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 -- vwuz1=vwuz2 + lda.z utoa_append.value + sta.z utoa_append.return + lda.z utoa_append.value+1 + sta.z utoa_append.return+1 + jmp __b6 + // utoa::@6 + __b6: + // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 -- vwuz1=vwuz2 + lda.z utoa_append.return + sta.z value + lda.z utoa_append.return+1 + sta.z value+1 + // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer_1 + bne !+ + inc.z buffer_1+1 + !: + // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + __b4_from___b6: + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp($66) buffer, word zp($29) value, word zp($68) sub) +utoa_append: { + .label buffer = $66 + .label value = $29 + .label sub = $68 + .label return = $6a + .label digit = $2b + // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + __b1_from_utoa_append: + // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + jmp __b1 + // utoa_append::@1 + __b1: + // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + jmp __b3 + // utoa_append::@3 + __b3: + // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // utoa_append::@return + __breturn: + // [168] return + rts + // utoa_append::@2 + __b2: + // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + __b1_from___b2: + // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // [172] call memset + // [88] phi from printf_cls to memset [phi:printf_cls->memset] + memset_from_printf_cls: + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + jmp __b1 + // printf_cls::@1 + __b1: + // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_y + jmp __breturn + // printf_cls::@return + __breturn: + // [176] return + rts +} + // queen +// 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. +// queen(byte zp($6c) row) +queen: { + .const OFFSET_STACK_ROW = 0 + .label r = $6d + .label column = $6e + .label __1 = $72 + .label __4 = $73 + .label row = $6c + // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 + tsx + lda STACK_BASE+OFFSET_STACK_ROW,x + sta.z row + // [178] (byte) queen::r ← (byte) queen::row#0 -- vbuz1=vbuz2 + lda.z row + sta.z r + // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 + lda #1 + sta.z column + jmp __b1 + // queen::@1 + __b1: + // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z column + cmp #8+1 + bcc __b2 + jmp __breturn + // queen::@return + __breturn: + // [181] return + rts + // queen::@2 + __b2: + // [182] (byte) legal::row#0 ← (byte) queen::r -- vbuz1=vbuz2 + lda.z r + sta.z legal.row + // [183] (byte) legal::column#0 ← (byte) queen::column -- vbuz1=vbuz2 + lda.z column + sta.z legal.column + // [184] call legal + // [294] phi from queen::@2 to legal [phi:queen::@2->legal] + legal_from___b2: + jsr legal + // [185] (byte) legal::return#0 ← (byte) legal::return#4 -- vbuz1=vbuz2 + lda.z legal.return_1 + sta.z legal.return + jmp __b7 + // queen::@7 + __b7: + // [186] (byte~) queen::$1 ← (byte) legal::return#0 -- vbuz1=vbuz2 + lda.z legal.return + sta.z __1 + // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __1 + beq __b3 + jmp __b5 + // queen::@5 + __b5: + // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 + //no conflicts so place queen + lda.z column + ldy.z r + sta board,y + // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #8 + cmp.z r + beq __b4_from___b5 + jmp __b6 + // queen::@6 + __b6: + // asm { ldacolumn pha ldar pha } + // Perform recussive placement on rows above + // Push the local vars on the stack (waiting for proper recursion support) + lda column + pha + lda r + pha + // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz2_plus_1 + ldy.z r + iny + sty.z __4 + // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 + // Do recursion + lda.z __4 + pha + // [193] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + // asm { pla star pla stacolumn } + // Pop the local vars on the stack (waiting for proper recursion support) + pla + sta r + pla + sta column + jmp __b3 + // queen::@3 + __b3: + // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 + inc.z column + jmp __b1 + // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] + __b4_from___b5: + jmp __b4 + // queen::@4 + __b4: + // [198] call print + // we are done! Print the board configuration + jsr print + jmp __b3 +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $2c + .label i1 = $2d + .label j = $2e + // [199] (dword) count ← ++ (dword) count -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // [200] call printf_str + // [104] phi from print to printf_str [phi:print->printf_str] + printf_str_from_print: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + jmp __b11 + // print::@11 + __b11: + // [201] (dword) printf_ulong::uvalue#0 ← (dword) count -- vduz1=vduz2 + lda.z count + sta.z printf_ulong.uvalue + lda.z count+1 + sta.z printf_ulong.uvalue+1 + lda.z count+2 + sta.z printf_ulong.uvalue+2 + lda.z count+3 + sta.z printf_ulong.uvalue+3 + // [202] call printf_ulong + // [259] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + printf_ulong_from___b11: + jsr printf_ulong + // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + __b12_from___b11: + jmp __b12 + // print::@12 + __b12: + // [204] call printf_str + // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] + printf_str_from___b12: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + __b1_from___b12: + // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // print::@1 + __b1: + // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + __b3_from___b1: + // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + jmp __b3 + // print::@3 + __b3: + // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4_from___b3 + jmp __breturn + // print::@return + __breturn: + // [209] return + rts + // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + __b4_from___b3: + jmp __b4 + // print::@4 + __b4: + // [211] call printf_str + // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] + printf_str_from___b4: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + jmp __b14 + // print::@14 + __b14: + // [212] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 -- vbuz1=vbuz2 + lda.z i1 + sta.z printf_uchar.uvalue + // [213] call printf_uchar + // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + printf_uchar_from___b14: + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + __b5_from___b14: + // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + jmp __b5 + // print::@5 + __b5: + // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + jmp __b7 + // print::@7 + __b7: + // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + __b3_from___b7: + // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8_from___b6 + // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + __b10_from___b6: + jmp __b10 + // print::@10 + __b10: + // [219] call printf_str + // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] + printf_str_from___b10: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@9 + __b9: + // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + __b5_from___b9: + // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + __b8_from___b6: + jmp __b8 + // print::@8 + __b8: + // [222] call printf_str + // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] + printf_str_from___b8: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // [223] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 -- vbuz1=vbuz2 + lda.z i + sta.z printf_uchar.uvalue + // [224] call printf_uchar + // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + printf_uchar_from___b2: + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + jmp __b13 + // print::@13 + __b13: + // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + __b1_from___b13: + // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte zp($2f) uvalue) +printf_uchar: { + .label uvalue = $2f + jmp __b1 + // printf_uchar::@1 + __b1: + // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 -- vbuz1=vbuz2 + lda.z uvalue + sta.z uctoa.value + // [229] call uctoa + // Format number into buffer + // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + uctoa_from___b1: + jsr uctoa + jmp __b2 + // printf_uchar::@2 + __b2: + // [230] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [231] call printf_number_buffer + // Print using format + // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uchar::@return + __breturn: + // [232] return + rts +} + // uctoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// uctoa(byte zp($31) value, byte* zp($78) buffer) +uctoa: { + .label digit_value = $7a + .label buffer = $78 + .label digit = $30 + .label value = $31 + .label buffer_1 = $33 + .label started = $32 + // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + __b1_from_uctoa: + // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer_1+1 + // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // uctoa::@1 + __b1: + // [235] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #2-1 + bcc __b2 + jmp __b3 + // uctoa::@3 + __b3: + // [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z value + lda DIGITS,y + ldy #0 + sta (buffer_1),y + // [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz2 + lda.z buffer_1 + clc + adc #1 + sta.z buffer + lda.z buffer_1+1 + adc #0 + sta.z buffer+1 + // [238] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // uctoa::@return + __breturn: + // [239] return + rts + // uctoa::@2 + __b2: + // [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda RADIX_HEXADECIMAL_VALUES_CHAR,y + sta.z digit_value + // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // uctoa::@7 + __b7: + // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z digit_value + bcs __b5 + // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + __b4_from___b7: + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + jmp __b4 + // uctoa::@4 + __b4: + // [244] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [234] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] + __b1_from___b4: + // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + jmp __b1 + // uctoa::@5 + __b5: + // [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 -- pbuz1=pbuz2 + lda.z buffer_1 + sta.z uctoa_append.buffer + lda.z buffer_1+1 + sta.z uctoa_append.buffer+1 + // [246] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 -- vbuz1=vbuz2 + lda.z value + sta.z uctoa_append.value + // [247] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 -- vbuz1=vbuz2 + lda.z digit_value + sta.z uctoa_append.sub + // [248] call uctoa_append + // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + uctoa_append_from___b5: + jsr uctoa_append + // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 -- vbuz1=vbuz2 + lda.z uctoa_append.value + sta.z uctoa_append.return + jmp __b6 + // uctoa::@6 + __b6: + // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 -- vbuz1=vbuz2 + lda.z uctoa_append.return + sta.z value + // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer_1 + bne !+ + inc.z buffer_1+1 + !: + // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + __b4_from___b6: + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + jmp __b4 +} + // uctoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// uctoa_append(byte* zp($7b) buffer, byte zp($35) value, byte zp($7d) sub) +uctoa_append: { + .label buffer = $7b + .label value = $35 + .label sub = $7d + .label return = $7e + .label digit = $36 + // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + __b1_from_uctoa_append: + // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + jmp __b1 + // uctoa_append::@1 + __b1: + // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z sub + bcs __b2 + jmp __b3 + // uctoa_append::@3 + __b3: + // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // uctoa_append::@return + __breturn: + // [256] return + rts + // uctoa_append::@2 + __b2: + // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + lda.z value + sec + sbc.z sub + sta.z value + // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + __b1_from___b2: + // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp($74) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = $74 + jmp __b1 + // printf_ulong::@1 + __b1: + // [260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 -- vduz1=vduz2 + lda.z uvalue + sta.z ultoa.value + lda.z uvalue+1 + sta.z ultoa.value+1 + lda.z uvalue+2 + sta.z ultoa.value+2 + lda.z uvalue+3 + sta.z ultoa.value+3 + // [262] call ultoa + // Format number into buffer + // [266] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + ultoa_from___b1: + jsr ultoa + jmp __b2 + // printf_ulong::@2 + __b2: + // [263] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [264] call printf_number_buffer + // Print using format + // [26] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_ulong::@return + __breturn: + // [265] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp($38) value, byte* zp($80) buffer) +ultoa: { + .const max_digits = $a + .label __10 = $82 + .label __11 = $7f + .label digit_value = $83 + .label buffer = $80 + .label digit = $37 + .label value = $38 + .label buffer_1 = $3d + .label started = $3c + // [267] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + __b1_from_ultoa: + // [267] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer_1+1 + // [267] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // ultoa::@1 + __b1: + // [268] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // ultoa::@3 + __b3: + // [269] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 -- vbuz1=_byte_vduz2 + lda.z value + sta.z __11 + // [270] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer_1),y + // [271] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz2 + lda.z buffer_1 + clc + adc #1 + sta.z buffer + lda.z buffer_1+1 + adc #0 + sta.z buffer+1 + // [272] *((byte*) ultoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa::@return + __breturn: + // [273] return + rts + // ultoa::@2 + __b2: + // [274] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda.z digit + asl + asl + sta.z __10 + // [275] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) -- vduz1=pduc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES_LONG,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES_LONG+1,y + sta.z digit_value+1 + lda RADIX_DECIMAL_VALUES_LONG+2,y + sta.z digit_value+2 + lda RADIX_DECIMAL_VALUES_LONG+3,y + sta.z digit_value+3 + // [276] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // ultoa::@7 + __b7: + // [277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [278] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + __b4_from___b7: + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + jmp __b4 + // ultoa::@4 + __b4: + // [279] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [267] phi from ultoa::@4 to ultoa::@1 [phi:ultoa::@4->ultoa::@1] + __b1_from___b4: + // [267] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [267] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // [280] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 -- pbuz1=pbuz2 + lda.z buffer_1 + sta.z ultoa_append.buffer + lda.z buffer_1+1 + sta.z ultoa_append.buffer+1 + // [281] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 -- vduz1=vduz2 + lda.z value + sta.z ultoa_append.value + lda.z value+1 + sta.z ultoa_append.value+1 + lda.z value+2 + sta.z ultoa_append.value+2 + lda.z value+3 + sta.z ultoa_append.value+3 + // [282] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 -- vduz1=vduz2 + lda.z digit_value + sta.z ultoa_append.sub + lda.z digit_value+1 + sta.z ultoa_append.sub+1 + lda.z digit_value+2 + sta.z ultoa_append.sub+2 + lda.z digit_value+3 + sta.z ultoa_append.sub+3 + // [283] call ultoa_append + // [287] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + ultoa_append_from___b5: + jsr ultoa_append + // [284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 -- vduz1=vduz2 + lda.z ultoa_append.value + sta.z ultoa_append.return + lda.z ultoa_append.value+1 + sta.z ultoa_append.return+1 + lda.z ultoa_append.value+2 + sta.z ultoa_append.return+2 + lda.z ultoa_append.value+3 + sta.z ultoa_append.return+3 + jmp __b6 + // ultoa::@6 + __b6: + // [285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 -- vduz1=vduz2 + lda.z ultoa_append.return + sta.z value + lda.z ultoa_append.return+1 + sta.z value+1 + lda.z ultoa_append.return+2 + sta.z value+2 + lda.z ultoa_append.return+3 + sta.z value+3 + // [286] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer_1 + bne !+ + inc.z buffer_1+1 + !: + // [278] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + __b4_from___b6: + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($87) buffer, dword zp($3f) value, dword zp($89) sub) +ultoa_append: { + .label buffer = $87 + .label value = $3f + .label sub = $89 + .label return = $8d + .label digit = $43 + // [288] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + __b1_from_ultoa_append: + // [288] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + jmp __b1 + // ultoa_append::@1 + __b1: + // [289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + jmp __b3 + // ultoa_append::@3 + __b3: + // [290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa_append::@return + __breturn: + // [291] return + rts + // ultoa_append::@2 + __b2: + // [292] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [288] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] + __b1_from___b2: + // [288] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy + jmp __b1 +} + // legal +// 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 +// legal(byte zp($6f) row, byte zp($70) column) +legal: { + .label __0 = $91 + .label __3 = $93 + .label __4 = $95 + .label row = $6f + .label column = $70 + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return = $71 + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return_1 = $45 + .label i = $44 + // [295] phi from legal to legal::@1 [phi:legal->legal::@1] + __b1_from_legal: + // [295] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // legal::@1 + __b1: + // [296] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + ldx.z row + dex + stx.z __0 + // [297] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuz1_le_vbuz2_then_la1 + lda.z __0 + cmp.z i + bcs __b2 + // [298] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] + __breturn_from___b1: + // [298] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuz1=vbuc1 + lda #1 + sta.z return_1 + jmp __breturn + // [298] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] + __breturn_from___b2: + __breturn_from___b6: + // [298] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuz1=vbuc1 + lda #0 + sta.z return_1 + jmp __breturn + // legal::@return + __breturn: + // [299] return + rts + // legal::@2 + __b2: + // [300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i + lda board,y + cmp.z column + beq __breturn_from___b2 + jmp __b4 + // legal::@4 + __b4: + // [301] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z i + lda board,y + sta.z diff.a + // [302] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuz1=vbuz2 + lda.z column + sta.z diff.b + // [303] call diff + // [313] phi from legal::@4 to diff [phi:legal::@4->diff] + diff_from___b4: + // [313] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy + jsr diff + // [304] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 + lda.z diff.return_2 + sta.z diff.return + jmp __b5 + // legal::@5 + __b5: + // [305] (byte~) legal::$3 ← (byte) diff::return#0 -- vbuz1=vbuz2 + lda.z diff.return + sta.z __3 + // [306] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuz1=vbuz2 + lda.z i + sta.z diff.a + // [307] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuz1=vbuz2 + lda.z row + sta.z diff.b + // [308] call diff + // [313] phi from legal::@5 to diff [phi:legal::@5->diff] + diff_from___b5: + // [313] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy + jsr diff + // [309] (byte) diff::return#1 ← (byte) diff::return#4 -- vbuz1=vbuz2 + lda.z diff.return_2 + sta.z diff.return_1 + jmp __b6 + // legal::@6 + __b6: + // [310] (byte~) legal::$4 ← (byte) diff::return#1 -- vbuz1=vbuz2 + lda.z diff.return_1 + sta.z __4 + // [311] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuz2_then_la1 + lda.z __3 + cmp.z __4 + bne __b3 + jmp __breturn_from___b6 + // legal::@3 + __b3: + // [312] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [295] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] + __b1_from___b3: + // [295] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy + jmp __b1 +} + // diff +// Find the absolute difference between two unsigned chars +// diff(byte zp($46) a, byte zp($47) b) +diff: { + .label a = $46 + .label b = $47 + .label return = $92 + .label return_1 = $94 + .label return_2 = $48 + // [314] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuz1_lt_vbuz2_then_la1 + lda.z a + cmp.z b + bcc __b1 + jmp __b2 + // diff::@2 + __b2: + // [315] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuz1=vbuz2_minus_vbuz3 + lda.z a + sec + sbc.z b + sta.z return_2 + // [316] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] + __breturn_from___b1: + __breturn_from___b2: + // [316] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + jmp __breturn + // diff::@return + __breturn: + // [317] return + rts + // diff::@1 + __b1: + // [318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz3 + lda.z b + sec + sbc.z a + sta.z return_2 + jmp __breturn_from___b1 +} + // File Data + // The digits used for numbers + DIGITS: .text "0123456789abcdef" + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 + // Values of decimal digits + RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. + board: .fill $14, 0 + // Buffer used for stringified number being printed + printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [1] (byte) printf_cursor_x ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [2] (byte) printf_cursor_y ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [3] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [4] (dword) count ← (dword) 0 [ count printf_buffer ] ( [ count printf_buffer ] { } ) always clobbers reg byte a +Statement [16] stackpush(byte) ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] ( main:6 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] { } ) always clobbers reg byte a +Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a +Statement [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:6::printf_uint:15 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a +Statement [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ printf_number_buffer::format_min_length#3 ] +Removing always clobbered register reg byte a as potential for zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:45 [ print::i1#2 print::i1#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:44 [ print::i#2 print::i#1 ] +Statement [30] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [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 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Statement [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:45 [ print::i1#2 print::i1#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:44 [ print::i#2 print::i#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Removing always clobbered register reg byte y as potential for zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Removing always clobbered register reg byte y as potential for zp[1]:12 [ printf_padding::pad#5 ] +Removing always clobbered register reg byte y as potential for zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:46 [ print::j#2 print::j#1 ] +Statement [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:12 [ printf_padding::pad#5 ] +Removing always clobbered register reg byte a as potential for zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:46 [ print::j#2 print::j#1 ] +Statement [75] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } ) always clobbers reg byte a +Statement [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [89] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:19 [ memset::c#4 ] +Statement [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:19 [ memset::c#4 ] +Statement [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:6::printf_str:11 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_str:13 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:204 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:211 [ queen::r queen::column count printf_buffer print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:219 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:222 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } ) always clobbers reg byte a +Statement [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } ) always clobbers reg byte a +Statement [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [118] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y +Statement [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54::toupper:127 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54::toupper:127 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a +Statement [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strlen:29 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strlen:29 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:2 [ printf_number_buffer::format_min_length#3 ] +Statement [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a +Statement [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y +Statement [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a +Statement [149] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y +Statement [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:38 [ utoa::started#2 utoa::started#4 ] +Statement [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [158] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [162] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a +Statement [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] +Statement [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] +Statement [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [173] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [174] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [175] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] { } ) always clobbers reg byte a reg byte x +Statement [179] (byte) queen::column ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a reg byte y +Statement [189] if((byte) queen::r==(byte) 8) goto queen::@4 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement asm { ldacolumn pha ldar pha } always clobbers reg byte a +Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a +Statement asm { pla star pla stacolumn } always clobbers reg byte a +Statement [201] (dword) printf_ulong::uvalue#0 ← (dword) count [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer printf_ulong::uvalue#0 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer printf_ulong::uvalue#0 ] { { printf_ulong::uvalue#0 = count } } ) always clobbers reg byte a +Statement [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] { } ) always clobbers reg byte a +Statement [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] ( main:6::queen:17::print:198::printf_uchar:213 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Statement [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [238] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:122 [ uctoa::digit_value#0 ] +Statement [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Statement [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:125 [ uctoa_append::sub#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] +Statement [260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_ulong::uvalue#0 ] ( main:6::queen:17::print:198::printf_ulong:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_ulong::uvalue#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] ( main:6::queen:17::print:198::printf_ulong:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [269] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [270] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [271] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ printf_buffer ultoa::buffer#3 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#3 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [272] *((byte*) ultoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [274] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:60 [ ultoa::started#2 ultoa::started#4 ] +Statement [275] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [280] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [281] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [282] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] +Statement [290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] +Statement [293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#2 ] ( main:6::queen:17::legal:184 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 ] { { legal::row#0 = queen::r } { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:111 [ legal::row#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:112 [ legal::column#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:68 [ legal::i#2 legal::i#1 ] +Statement [315] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:6::queen:17::legal:184::diff:303 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 diff::return#3 ] { { legal::row#0 = queen::r } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::legal:184::diff:308 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#3 ] { { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:147 [ legal::$3 ] +Statement [318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:6::queen:17::legal:184::diff:303 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 diff::return#2 ] { { legal::row#0 = queen::r } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::legal:184::diff:308 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#2 ] { { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [1] (byte) printf_cursor_x ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [2] (byte) printf_cursor_y ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [3] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a +Statement [4] (dword) count ← (dword) 0 [ count printf_buffer ] ( [ count printf_buffer ] { } ) always clobbers reg byte a +Statement [16] stackpush(byte) ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] ( main:6 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] { } ) always clobbers reg byte a +Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a +Statement [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:6::printf_uint:15 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a +Statement [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [30] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [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 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y +Statement [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [75] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } ) always clobbers reg byte a +Statement [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [89] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a +Statement [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:6::printf_str:11 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_str:13 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:204 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:211 [ queen::r queen::column count printf_buffer print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:219 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:222 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } ) always clobbers reg byte a reg byte y +Statement [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } ) always clobbers reg byte a +Statement [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } ) always clobbers reg byte a +Statement [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [118] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y +Statement [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54::toupper:127 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strupr:54::toupper:127 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a +Statement [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strlen:29 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_ulong:202::printf_number_buffer:264::strlen:29 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_ulong::uvalue#0 = count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y +Statement [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a +Statement [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y +Statement [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a +Statement [149] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y +Statement [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a +Statement [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [158] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [162] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a +Statement [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [173] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [174] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [175] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] { } ) always clobbers reg byte a reg byte x +Statement [179] (byte) queen::column ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a reg byte y +Statement [189] if((byte) queen::r==(byte) 8) goto queen::@4 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a +Statement asm { ldacolumn pha ldar pha } always clobbers reg byte a +Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a +Statement asm { pla star pla stacolumn } always clobbers reg byte a +Statement [201] (dword) printf_ulong::uvalue#0 ← (dword) count [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer printf_ulong::uvalue#0 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer printf_ulong::uvalue#0 ] { { printf_ulong::uvalue#0 = count } } ) always clobbers reg byte a +Statement [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] { } ) always clobbers reg byte a +Statement [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] ( main:6::queen:17::print:198::printf_uchar:213 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [238] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Statement [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Statement [260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_ulong::uvalue#0 ] ( main:6::queen:17::print:198::printf_ulong:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_ulong::uvalue#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] ( main:6::queen:17::print:198::printf_ulong:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [269] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [270] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [271] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ printf_buffer ultoa::buffer#3 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#3 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [272] *((byte*) ultoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [274] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [275] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [280] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [281] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [282] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } } ) always clobbers reg byte a +Statement [289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_ulong:202::ultoa:262::ultoa_append:283 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { printf_ulong::uvalue#0 = count ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#2 ] ( main:6::queen:17::legal:184 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 ] { { legal::row#0 = queen::r } { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a +Statement [315] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:6::queen:17::legal:184::diff:303 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 diff::return#3 ] { { legal::row#0 = queen::r } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::legal:184::diff:308 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#3 ] { { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:6::queen:17::legal:184::diff:303 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 diff::return#2 ] { { legal::row#0 = queen::r } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::legal:184::diff:308 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#2 ] { { legal::column#0 = queen::column } { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Potential registers zp[1]:2 [ printf_number_buffer::format_min_length#3 ] : zp[1]:2 , reg byte x , +Potential registers zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] : zp[1]:3 , reg byte x , +Potential registers zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] : zp[1]:4 , reg byte x , +Potential registers zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] : zp[2]:5 , +Potential registers zp[1]:7 [ 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[1]:7 , reg byte x , +Potential registers zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] : zp[1]:8 , reg byte x , +Potential registers zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] : zp[1]:10 , reg byte x , +Potential registers zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] : zp[1]:11 , reg byte x , +Potential registers zp[1]:12 [ printf_padding::pad#5 ] : zp[1]:12 , reg byte x , +Potential registers zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] : zp[1]:13 , reg byte x , +Potential registers zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:15 [ memset::num#2 ] : zp[2]:15 , +Potential registers zp[2]:17 [ memset::str#3 ] : zp[2]:17 , +Potential registers zp[1]:19 [ memset::c#4 ] : zp[1]:19 , reg byte x , +Potential registers zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:20 , +Potential registers zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] : zp[2]:22 , +Potential registers zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] : zp[2]:24 , +Potential registers zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] : zp[2]:26 , +Potential registers zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] : zp[2]:28 , +Potential registers zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] : zp[2]:31 , +Potential registers zp[2]:33 [ strlen::len#2 strlen::len#1 ] : zp[2]:33 , +Potential registers zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:35 , reg byte x , +Potential registers zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] : zp[2]:36 , +Potential registers zp[1]:38 [ utoa::started#2 utoa::started#4 ] : zp[1]:38 , reg byte x , reg byte y , +Potential registers zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:39 , +Potential registers zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:41 , +Potential registers zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:43 , reg byte x , reg byte y , +Potential registers zp[1]:44 [ print::i#2 print::i#1 ] : zp[1]:44 , reg byte x , +Potential registers zp[1]:45 [ print::i1#2 print::i1#1 ] : zp[1]:45 , reg byte x , +Potential registers zp[1]:46 [ print::j#2 print::j#1 ] : zp[1]:46 , reg byte x , +Potential registers zp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] : zp[1]:47 , reg byte x , reg byte y , +Potential registers zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] : zp[1]:48 , reg byte x , +Potential registers zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] : zp[1]:49 , reg byte x , reg byte y , +Potential registers zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] : zp[2]:51 , +Potential registers zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] : zp[1]:53 , reg byte x , +Potential registers zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] : zp[1]:54 , reg byte x , reg byte y , +Potential registers zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] : zp[1]:55 , reg byte x , +Potential registers zp[4]:56 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] : zp[4]:56 , +Potential registers zp[1]:60 [ ultoa::started#2 ultoa::started#4 ] : zp[1]:60 , reg byte x , reg byte y , +Potential registers zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] : zp[2]:61 , +Potential registers zp[4]:63 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] : zp[4]:63 , +Potential registers zp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] : zp[1]:67 , reg byte x , reg byte y , +Potential registers zp[1]:68 [ legal::i#2 legal::i#1 ] : zp[1]:68 , reg byte x , reg byte y , +Potential registers zp[1]:69 [ legal::return#4 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:71 [ diff::b#2 diff::b#0 diff::b#1 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:72 [ diff::return#4 diff::return#2 diff::return#3 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:73 [ printf_cursor_x ] : zp[1]:73 , +Potential registers zp[1]:74 [ printf_cursor_y ] : zp[1]:74 , +Potential registers zp[2]:75 [ printf_cursor_ptr ] : zp[2]:75 , +Potential registers zp[4]:77 [ count ] : zp[4]:77 , +Potential registers zp[2]:81 [ strlen::return#2 ] : zp[2]:81 , +Potential registers zp[2]:83 [ printf_number_buffer::$19 ] : zp[2]:83 , +Potential registers zp[2]:85 [ printf_scroll::$4 ] : zp[2]:85 , +Potential registers zp[2]:87 [ memset::end#0 ] : zp[2]:87 , +Potential registers zp[1]:89 [ printf_str::ch#0 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:90 [ printf_ln::$0 ] : zp[2]:90 , +Potential registers zp[2]:92 [ printf_ln::$1 ] : zp[2]:92 , +Potential registers zp[1]:94 [ toupper::return#3 ] : zp[1]:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:95 [ strupr::$0 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:96 [ utoa::$11 ] : zp[1]:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:97 [ utoa::buffer#3 ] : zp[2]:97 , +Potential registers zp[1]:99 [ utoa::$10 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:100 [ utoa::digit_value#0 ] : zp[2]:100 , +Potential registers zp[2]:102 [ utoa_append::buffer#0 ] : zp[2]:102 , +Potential registers zp[2]:104 [ utoa_append::sub#0 ] : zp[2]:104 , +Potential registers zp[2]:106 [ utoa_append::return#0 ] : zp[2]:106 , +Potential registers zp[1]:108 [ queen::row#0 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:109 [ queen::r ] : zp[1]:109 , +Potential registers zp[1]:110 [ queen::column ] : zp[1]:110 , +Potential registers zp[1]:111 [ legal::row#0 ] : zp[1]:111 , reg byte x , reg byte y , +Potential registers zp[1]:112 [ legal::column#0 ] : zp[1]:112 , reg byte x , reg byte y , +Potential registers zp[1]:113 [ legal::return#0 ] : zp[1]:113 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:114 [ queen::$1 ] : zp[1]:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:115 [ queen::$4 ] : zp[1]:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp[4]:116 [ printf_ulong::uvalue#0 ] : zp[4]:116 , +Potential registers zp[2]:120 [ uctoa::buffer#3 ] : zp[2]:120 , +Potential registers zp[1]:122 [ uctoa::digit_value#0 ] : zp[1]:122 , reg byte x , reg byte y , +Potential registers zp[2]:123 [ uctoa_append::buffer#0 ] : zp[2]:123 , +Potential registers zp[1]:125 [ uctoa_append::sub#0 ] : zp[1]:125 , reg byte x , reg byte y , +Potential registers zp[1]:126 [ uctoa_append::return#0 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:127 [ ultoa::$11 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:128 [ ultoa::buffer#3 ] : zp[2]:128 , +Potential registers zp[1]:130 [ ultoa::$10 ] : zp[1]:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp[4]:131 [ ultoa::digit_value#0 ] : zp[4]:131 , +Potential registers zp[2]:135 [ ultoa_append::buffer#0 ] : zp[2]:135 , +Potential registers zp[4]:137 [ ultoa_append::sub#0 ] : zp[4]:137 , +Potential registers zp[4]:141 [ ultoa_append::return#0 ] : zp[4]:141 , +Potential registers zp[1]:145 [ legal::$0 ] : zp[1]:145 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:146 [ diff::return#0 ] : zp[1]:146 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:147 [ legal::$3 ] : zp[1]:147 , reg byte x , reg byte y , +Potential registers zp[1]:148 [ diff::return#1 ] : zp[1]:148 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:149 [ legal::$4 ] : zp[1]:149 , reg byte a , reg byte x , reg byte y , +Potential registers mem[12] [ printf_buffer ] : mem[12] , + +REGISTER UPLIFT SCOPES +Uplift Scope [memcpy] 30,000,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] 20,000,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] +Uplift Scope [memset] 33,333,333,333,335,670,000,000,000,000,000,000,000,000,000: zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,666,666,666,666,833,500,000,000,000,000,000,000,000,000: zp[2]:87 [ memset::end#0 ] 1,250,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[1]:19 [ memset::c#4 ] 1,000,000,000,000,000,000,000,000,000,000: zp[2]:15 [ memset::num#2 ] 0: zp[2]:17 [ memset::str#3 ] +Uplift Scope [uctoa_append] 25,000,000,000,000,550,000,000,000,000,000,000,000,000: zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] 20,000,000,000,000,500,000,000,000,000,000,000,000,000: zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] 3,333,333,333,333,350,000,000,000,000,000,000,000,000: zp[1]:125 [ uctoa_append::sub#0 ] 200,000,000,000,000,000,000,000,000: zp[1]:126 [ uctoa_append::return#0 ] 137,500,000,000,000,010,000,000,000: zp[2]:123 [ uctoa_append::buffer#0 ] +Uplift Scope [printf_scroll] 200,000,000,000,000,000,000,000,000,000: zp[2]:85 [ printf_scroll::$4 ] +Uplift Scope [toupper] 47,333,333,333,333,330,000,000,000,000: zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] 2,000,000,000,000,000,000,000,000,000: zp[1]:94 [ toupper::return#3 ] +Uplift Scope [printf_char] 13,300,000,000,000,300,000,000,000,000: zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Uplift Scope [ultoa_append] 2,500,000,000,000,550,000,000,000,000: zp[4]:63 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] 2,000,000,000,000,500,000,000,000,000: zp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] 333,333,333,333,350,000,000,000,000: zp[4]:137 [ ultoa_append::sub#0 ] 200,000,000,000,002: zp[4]:141 [ ultoa_append::return#0 ] 137,500,000,000,000.25: zp[2]:135 [ ultoa_append::buffer#0 ] +Uplift Scope [strupr] 2,714,285,714,286,407,300,000,000,000: zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] 2,000,000,000,000,000,000,000,000,000: zp[1]:95 [ strupr::$0 ] +Uplift Scope [strlen] 3,000,000,000,000,883,000,000,000,000: zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] 1,500,000,000,000,025,000,000,000,000: zp[2]:33 [ strlen::len#2 strlen::len#1 ] 200,000,000,000,002: zp[2]:81 [ strlen::return#2 ] +Uplift Scope [printf_ln] 2,000,000,000,000,000,000,000,000,000: zp[2]:90 [ printf_ln::$0 ] 2,000,000,000,000,000,000,000,000,000: zp[2]:92 [ printf_ln::$1 ] +Uplift Scope [] 2,025,157,232,704,402,300,000,000,000: zp[1]:74 [ printf_cursor_y ] 1,468,354,430,379,746,500,000,000,000: zp[2]:75 [ printf_cursor_ptr ] 283,783,783,783,783,800,000,000,000: zp[1]:73 [ printf_cursor_x ] 0.58: zp[4]:77 [ count ] 0: mem[12] [ printf_buffer ] +Uplift Scope [printf_padding] 2,750,000,000,000,000,400,000,000,000: zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] 166,666,666,667,316,670,000,000,000: zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] 166,666,666,666,666,660,000,000,000: zp[1]:12 [ printf_padding::pad#5 ] +Uplift Scope [uctoa] 383,333,333,333,350,040,000,000,000: zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] 316,666,666,666,755,000,000,000,000: zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] 230,769,230,769,230,770,000,000,000: zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] 160,000,000,000,000,000,000,000,000: zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] 60,000,000,000,000,010,000,000,000: zp[1]:122 [ uctoa::digit_value#0 ] 200,000,000,000,002: zp[2]:120 [ uctoa::buffer#3 ] +Uplift Scope [printf_str] 242,857,142,858,942,900,000,000,000: zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] 100,000,000,000,000,000,000,000,000: zp[1]:89 [ printf_str::ch#0 ] +Uplift Scope [ultoa] 378,571,428,571,575.4: zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] 307,142,857,143,554.25: zp[4]:56 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] 228,571,428,571,430.84: zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] 200,000,000,000,002: zp[1]:130 [ ultoa::$10 ] 150,000,000,000,001.5: zp[1]:60 [ ultoa::started#2 ultoa::started#4 ] 60,000,000,000,000.59: zp[4]:131 [ ultoa::digit_value#0 ] 2,002: zp[1]:127 [ ultoa::$11 ] 2,002: zp[2]:128 [ ultoa::buffer#3 ] +Uplift Scope [printf_number_buffer] 650,000,000,000,006.5: zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] 119,047,619,047,620.23: zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] 100,000,000,000,001: zp[2]:83 [ printf_number_buffer::$19 ] 35,500,000,000,416.3: zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] 10,344,827,586,207: zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] 10,000,000,000,000.1: zp[1]:2 [ printf_number_buffer::format_min_length#3 ] 9,375,000,000,000.09: zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] 6,451,612,903,225.87: zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] 3,846,153,846,153.88: zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] +Uplift Scope [diff] 45,500,000,000,005: zp[1]:72 [ diff::return#4 diff::return#2 diff::return#3 ] 20,000,000,000,006.5: zp[1]:71 [ diff::b#2 diff::b#0 diff::b#1 ] 18,000,000,000,004.5: zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 ] 2,000,000,000,002: zp[1]:146 [ diff::return#0 ] 2,000,000,000,002: zp[1]:148 [ diff::return#1 ] +Uplift Scope [print] 25,714,285,714,288.29: zp[1]:46 [ print::j#2 print::j#1 ] 3,000,000,000,003: zp[1]:44 [ print::i#2 print::i#1 ] 3,000,000,000,002.36: zp[1]:45 [ print::i1#2 print::i1#1 ] +Uplift Scope [printf_uchar] 10,000,000,000,005.5: zp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Uplift Scope [legal] 2,400,000,000,002.4: zp[1]:68 [ legal::i#2 legal::i#1 ] 2,000,000,000,002: zp[1]:145 [ legal::$0 ] 2,000,000,000,002: zp[1]:149 [ legal::$4 ] 333,333,333,333.67: zp[1]:147 [ legal::$3 ] 200,000,000,002: zp[1]:113 [ legal::return#0 ] 116,666,666,666.83: zp[1]:112 [ legal::column#0 ] 110,526,315,789.63: zp[1]:111 [ legal::row#0 ] 33,333,333,333.67: zp[1]:69 [ legal::return#4 ] +Uplift Scope [queen] 200,000,000,002: zp[1]:114 [ queen::$1 ] 200,000,000,002: zp[1]:115 [ queen::$4 ] 29,411,764,706.82: zp[1]:110 [ queen::column ] 21,052,631,579.74: zp[1]:109 [ queen::r ] 22: zp[1]:108 [ queen::row#0 ] +Uplift Scope [utoa_append] 25,055,003.5: zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 20,050,002.5: zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] 3,335,000.5: zp[2]:104 [ utoa_append::sub#0 ] 20,002: zp[2]:106 [ utoa_append::return#0 ] 13,750.25: zp[2]:102 [ utoa_append::buffer#0 ] +Uplift Scope [utoa] 38,003.93: zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 30,717.36: zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] 22,859.43: zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] 20,002: zp[1]:99 [ utoa::$10 ] 15,001.5: zp[1]:38 [ utoa::started#2 utoa::started#4 ] 6,000.6: zp[2]:100 [ utoa::digit_value#0 ] 2,002: zp[1]:96 [ utoa::$11 ] 2,002: zp[2]:97 [ utoa::buffer#3 ] +Uplift Scope [printf_ulong] 37.33: zp[4]:116 [ printf_ulong::uvalue#0 ] +Uplift Scope [RADIX] +Uplift Scope [printf_format_number] +Uplift Scope [printf_buffer_number] +Uplift Scope [printf_format_string] +Uplift Scope [printf_cls] +Uplift Scope [printf_uint] +Uplift Scope [main] + +Limited combination testing to 100 combinations of 256 possible. +Limited combination testing to 100 combinations of 1024 possible. +Limited combination testing to 100 combinations of 20736 possible. +Attempting to uplift remaining variables inzp[1]:19 [ memset::c#4 ] +Attempting to uplift remaining variables inzp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Attempting to uplift remaining variables inzp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] +Attempting to uplift remaining variables inzp[1]:125 [ uctoa_append::sub#0 ] +Attempting to uplift remaining variables inzp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] +Attempting to uplift remaining variables inzp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Attempting to uplift remaining variables inzp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] +Attempting to uplift remaining variables inzp[1]:74 [ printf_cursor_y ] +Attempting to uplift remaining variables inzp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] +Attempting to uplift remaining variables inzp[1]:94 [ toupper::return#3 ] +Attempting to uplift remaining variables inzp[1]:95 [ strupr::$0 ] +Attempting to uplift remaining variables inzp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +Attempting to uplift remaining variables inzp[1]:73 [ printf_cursor_x ] +Attempting to uplift remaining variables inzp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:126 [ uctoa_append::return#0 ] +Attempting to uplift remaining variables inzp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Attempting to uplift remaining variables inzp[1]:12 [ printf_padding::pad#5 ] +Attempting to uplift remaining variables inzp[1]:50 [ uctoa::started#2 uctoa::started#4 ] +Attempting to uplift remaining variables inzp[1]:89 [ printf_str::ch#0 ] +Attempting to uplift remaining variables inzp[1]:122 [ uctoa::digit_value#0 ] +Attempting to uplift remaining variables inzp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] +Attempting to uplift remaining variables inzp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:130 [ ultoa::$10 ] +Attempting to uplift remaining variables inzp[1]:60 [ ultoa::started#2 ultoa::started#4 ] +Attempting to uplift remaining variables inzp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Attempting to uplift remaining variables inzp[1]:72 [ diff::return#4 diff::return#2 diff::return#3 ] +Attempting to uplift remaining variables inzp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Attempting to uplift remaining variables inzp[1]:46 [ print::j#2 print::j#1 ] +Attempting to uplift remaining variables inzp[1]:71 [ diff::b#2 diff::b#0 diff::b#1 ] +Attempting to uplift remaining variables inzp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 ] +Attempting to uplift remaining variables inzp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Attempting to uplift remaining variables inzp[1]:2 [ printf_number_buffer::format_min_length#3 ] +Attempting to uplift remaining variables inzp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] +Attempting to uplift remaining variables inzp[1]:3 [ printf_number_buffer::format_justify_left#10 ] +Attempting to uplift remaining variables inzp[1]:8 [ printf_number_buffer::format_upper_case#10 ] +Attempting to uplift remaining variables inzp[1]:44 [ print::i#2 print::i#1 ] +Attempting to uplift remaining variables inzp[1]:45 [ print::i1#2 print::i1#1 ] +Attempting to uplift remaining variables inzp[1]:68 [ legal::i#2 legal::i#1 ] +Attempting to uplift remaining variables inzp[1]:145 [ legal::$0 ] +Attempting to uplift remaining variables inzp[1]:146 [ diff::return#0 ] +Attempting to uplift remaining variables inzp[1]:148 [ diff::return#1 ] +Attempting to uplift remaining variables inzp[1]:149 [ legal::$4 ] +Attempting to uplift remaining variables inzp[1]:147 [ legal::$3 ] +Attempting to uplift remaining variables inzp[1]:113 [ legal::return#0 ] +Attempting to uplift remaining variables inzp[1]:114 [ queen::$1 ] +Attempting to uplift remaining variables inzp[1]:115 [ queen::$4 ] +Attempting to uplift remaining variables inzp[1]:112 [ legal::column#0 ] +Attempting to uplift remaining variables inzp[1]:111 [ legal::row#0 ] +Attempting to uplift remaining variables inzp[1]:69 [ legal::return#4 ] +Attempting to uplift remaining variables inzp[1]:110 [ queen::column ] +Attempting to uplift remaining variables inzp[1]:109 [ queen::r ] +Attempting to uplift remaining variables inzp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] +Attempting to uplift remaining variables inzp[1]:35 [ utoa::digit#2 utoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:99 [ utoa::$10 ] +Attempting to uplift remaining variables inzp[1]:38 [ utoa::started#2 utoa::started#4 ] +Attempting to uplift remaining variables inzp[1]:96 [ utoa::$11 ] +Attempting to uplift remaining variables inzp[1]:127 [ ultoa::$11 ] +Attempting to uplift remaining variables inzp[1]:108 [ queen::row#0 ] +Coalescing zero page register [ zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 ] ] with [ zp[1]:72 [ diff::return#4 diff::return#2 diff::return#3 ] ] - score: 2 +Coalescing zero page register [ zp[2]:75 [ printf_cursor_ptr ] ] with [ zp[2]:85 [ printf_scroll::$4 ] ] - score: 2 +Coalescing zero page register [ zp[1]:2 [ printf_number_buffer::format_min_length#3 ] ] with [ zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] ] with [ zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:12 [ printf_padding::pad#5 ] ] with [ zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:15 [ memset::num#2 ] ] with [ zp[2]:87 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:17 [ memset::str#3 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] ] with [ zp[1]:94 [ toupper::return#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:33 [ strlen::len#2 strlen::len#1 ] ] with [ zp[2]:81 [ strlen::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] ] with [ zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:106 [ utoa_append::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:97 [ utoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:102 [ utoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:44 [ print::i#2 print::i#1 ] ] with [ zp[1]:47 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] ] with [ zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] ] with [ zp[1]:126 [ uctoa_append::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] ] with [ zp[2]:120 [ uctoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 ] ] with [ zp[2]:123 [ uctoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:56 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] ] with [ zp[4]:63 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] ] - score: 1 +Coalescing zero page register [ zp[4]:56 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] ] with [ zp[4]:116 [ printf_ulong::uvalue#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:56 [ 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 ] ] with [ zp[4]:141 [ ultoa_append::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] ] with [ zp[2]:128 [ ultoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ] ] with [ zp[2]:135 [ ultoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:69 [ legal::return#4 ] ] with [ zp[1]:113 [ legal::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:75 [ printf_cursor_ptr printf_scroll::$4 ] ] with [ zp[2]:90 [ printf_ln::$0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:75 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 ] ] with [ zp[2]:92 [ printf_ln::$1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:100 [ utoa::digit_value#0 ] ] with [ zp[2]:104 [ utoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:108 [ queen::row#0 ] ] with [ zp[1]:109 [ queen::r ] ] - score: 1 +Coalescing zero page register [ zp[1]:110 [ queen::column ] ] with [ zp[1]:112 [ legal::column#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:122 [ uctoa::digit_value#0 ] ] with [ zp[1]:125 [ uctoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:131 [ ultoa::digit_value#0 ] ] with [ zp[4]:137 [ ultoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:146 [ diff::return#0 ] ] with [ zp[1]:147 [ legal::$3 ] ] - score: 1 +Coalescing zero page register [ zp[1]:148 [ diff::return#1 ] ] with [ zp[1]:149 [ legal::$4 ] ] - score: 1 +Coalescing zero page register [ zp[1]:12 [ printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] ] with [ zp[1]:89 [ printf_str::ch#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 ] ] with [ zp[1]:95 [ strupr::$0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:33 [ strlen::len#2 strlen::len#1 strlen::return#2 ] ] with [ zp[2]:83 [ printf_number_buffer::$19 ] ] - score: 1 +Coalescing zero page register [ zp[1]:44 [ print::i#2 print::i#1 printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] ] with [ zp[1]:45 [ print::i1#2 print::i1#1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:69 [ legal::return#4 legal::return#0 ] ] with [ zp[1]:114 [ queen::$1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 ] ] with [ zp[1]:148 [ diff::return#1 legal::$4 ] ] - score: 1 +Coalescing zero page register [ zp[1]:108 [ queen::row#0 queen::r ] ] with [ zp[1]:111 [ legal::row#0 ] ] - score: 1 +Coalescing zero page register [ zp[1]:108 [ queen::row#0 queen::r legal::row#0 ] ] with [ zp[1]:115 [ queen::$4 ] ] - score: 1 +Coalescing zero page register [ zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] ] with [ zp[2]:15 [ memset::num#2 memset::end#0 ] ] +Coalescing zero page register [ zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] ] with [ zp[2]:17 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] +Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 strupr::$0 ] ] with [ zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] ] +Coalescing zero page register [ zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] ] with [ zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] ] +Coalescing zero page register [ zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] ] with [ zp[1]:2 [ printf_number_buffer::format_min_length#3 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] +Coalescing zero page register [ zp[2]:36 [ 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 ] ] with [ zp[2]:5 [ printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] +Coalescing zero page register [ zp[1]:38 [ utoa::started#2 utoa::started#4 ] ] with [ zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] ] +Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ] ] with [ zp[2]:33 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ] ] +Coalescing zero page register [ zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] ] with [ zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] ] +Coalescing zero page register [ zp[1]:46 [ print::j#2 print::j#1 ] ] with [ zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] ] +Coalescing zero page register [ zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] ] with [ zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] ] +Coalescing zero page register [ zp[1]:49 [ 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 ] ] with [ zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] ] +Coalescing zero page register [ zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] ] with [ zp[1]:12 [ printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 printf_str::ch#0 ] ] +Coalescing zero page register [ zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] ] with [ zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] ] +Coalescing zero page register [ zp[1]:55 [ ultoa::digit#2 ultoa::digit#1 ] ] with [ zp[1]:19 [ memset::c#4 ] ] +Coalescing zero page register [ zp[2]:61 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 ] ] with [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] +Coalescing zero page register [ zp[1]:68 [ legal::i#2 legal::i#1 ] ] with [ zp[1]:44 [ print::i#2 print::i#1 printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 print::i1#2 print::i1#1 ] ] +Coalescing zero page register [ zp[1]:69 [ legal::return#4 legal::return#0 queen::$1 ] ] with [ zp[1]:60 [ ultoa::started#2 ultoa::started#4 ] ] +Coalescing zero page register [ zp[1]:70 [ diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 diff::return#1 legal::$4 ] ] with [ zp[1]:67 [ ultoa_append::digit#2 ultoa_append::digit#1 ] ] +Coalescing zero page register [ zp[1]:96 [ utoa::$11 ] ] with [ zp[1]:71 [ diff::b#2 diff::b#0 diff::b#1 ] ] +Coalescing zero page register [ zp[1]:108 [ queen::row#0 queen::r legal::row#0 queen::$4 ] ] with [ zp[1]:99 [ utoa::$10 ] ] +Coalescing zero page register [ zp[1]:127 [ ultoa::$11 ] ] with [ zp[1]:122 [ uctoa::digit_value#0 uctoa_append::sub#0 ] ] +Coalescing zero page register [ zp[1]:145 [ legal::$0 ] ] with [ zp[1]:130 [ ultoa::$10 ] ] +Coalescing zero page register [ zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 ] ] with [ zp[2]:22 [ memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ] ] +Coalescing zero page register [ zp[2]:39 [ 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 ] ] with [ zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] +Coalescing zero page register [ zp[1]:49 [ 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 ] ] with [ zp[1]:30 [ 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 ] ] +Coalescing zero page register [ zp[2]:61 [ 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 ] ] with [ zp[2]:36 [ 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 ] ] +Coalescing zero page register [ zp[1]:69 [ legal::return#4 legal::return#0 queen::$1 ultoa::started#2 ultoa::started#4 ] ] with [ zp[1]:35 [ utoa::digit#2 utoa::digit#1 printf_number_buffer::format_min_length#3 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] +Coalescing zero page register [ zp[1]:70 [ 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 ] ] with [ zp[1]:38 [ utoa::started#2 utoa::started#4 printf_number_buffer::format_justify_left#10 ] ] +Coalescing zero page register [ zp[1]:96 [ utoa::$11 diff::b#2 diff::b#0 diff::b#1 ] ] with [ zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 printf_number_buffer::format_zero_padding#10 ] ] +Coalescing zero page register [ zp[1]:145 [ legal::$0 ultoa::$10 ] ] with [ zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_upper_case#10 ] ] +Coalescing zero page register [ zp[1]:146 [ diff::return#0 legal::$3 ] ] with [ zp[1]:46 [ 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 ] ] +Coalescing zero page register [ zp[2]:100 [ utoa::digit_value#0 utoa_append::sub#0 ] ] with [ zp[2]:31 [ 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 ] ] +Coalescing zero page register [ zp[1]:127 [ ultoa::$11 uctoa::digit_value#0 uctoa_append::sub#0 ] ] with [ zp[1]:70 [ 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 ] ] +Allocated (was zp[2]:39) 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 ] +Allocated (was zp[1]:49) 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 ] +Allocated (was zp[1]:50) 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 ] +Allocated (was zp[1]:54) zp[1]:6 [ uctoa_append::digit#2 uctoa_append::digit#1 printf_padding::i#2 printf_padding::i#1 ] +Allocated (was zp[1]:55) zp[1]:7 [ ultoa::digit#2 ultoa::digit#1 memset::c#4 ] +Allocated (was zp[4]:56) 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 ] +Allocated (was zp[2]:61) 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 ] +Allocated (was zp[1]:68) 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 ] +Allocated (was zp[1]:69) 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 ] +Allocated (was zp[1]:73) zp[1]:16 [ printf_cursor_x ] +Allocated (was zp[1]:74) zp[1]:17 [ printf_cursor_y ] +Allocated (was zp[2]:75) zp[2]:18 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ] +Allocated (was zp[4]:77) zp[4]:20 [ count ] +Allocated (was zp[1]:96) 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 ] +Allocated (was zp[2]:100) 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 ] +Allocated (was zp[1]:108) zp[1]:27 [ queen::row#0 queen::r legal::row#0 queen::$4 utoa::$10 ] +Allocated (was zp[1]:110) zp[1]:28 [ queen::column legal::column#0 ] +Allocated (was zp[1]:127) 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 ] +Allocated (was zp[4]:131) zp[4]:30 [ ultoa::digit_value#0 ultoa_append::sub#0 ] +Allocated (was zp[1]:145) zp[1]:34 [ legal::$0 ultoa::$10 uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_upper_case#10 ] +Allocated (was zp[1]:146) 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 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// 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 + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 + .const STACK_BASE = $103 + .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c + .label printf_cursor_x = $10 + .label printf_cursor_y = $11 + .label printf_cursor_ptr = $12 + .label count = $14 + // @begin +__bbegin: + jmp __b1 + // @1 +__b1: + // [1] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // X-position of cursor + lda #0 + sta.z printf_cursor_x + // [2] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + // Y-position of cursor + lda #0 + sta.z printf_cursor_y + // [3] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + // Pointer to cursor address + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + jmp __b2 + // @2 +__b2: + // [4] (dword) count ← (dword) 0 -- vduz1=vduc1 + // The number of found solutions + lda #<0 + sta.z count + lda #>0 + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [5] phi from @2 to @3 [phi:@2->@3] +__b3_from___b2: + jmp __b3 + // @3 +__b3: + // [6] call main + // [8] phi from @3 to main [phi:@3->main] +main_from___b3: + jsr main + // [7] phi from @3 to @end [phi:@3->@end] +__bend_from___b3: + jmp __bend + // @end +__bend: + // main +main: { + // [9] call printf_cls + // [171] phi from main to printf_cls [phi:main->printf_cls] + printf_cls_from_main: + jsr printf_cls + // [10] phi from main to main::@1 [phi:main->main::@1] + __b1_from_main: + jmp __b1 + // main::@1 + __b1: + // [11] call printf_str + // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] + printf_str_from___b1: + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + __b2_from___b1: + jmp __b2 + // main::@2 + __b2: + // [13] call printf_str + // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] + printf_str_from___b2: + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + __b3_from___b2: + jmp __b3 + // main::@3 + __b3: + // [15] call printf_uint + // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + printf_uint_from___b3: + jsr printf_uint + jmp __b4 + // main::@4 + __b4: + // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 + lda #1 + pha + // [17] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + jmp __breturn + // main::@return + __breturn: + // [19] return + rts + str: .text " - n queens problem using backtracking -" + .byte 0 + str1: .text @"\nNumber of queens:" + .byte 0 +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + jmp __b1 + // printf_uint::@1 + __b1: + // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [22] call utoa + // Format number into buffer + // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + utoa_from___b1: + jsr utoa + jmp __b2 + // printf_uint::@2 + __b2: + // [23] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [24] call printf_number_buffer + // Print using format + // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uint::@return + __breturn: + // [25] return + rts +} + // printf_number_buffer +// Print the contents of the number buffer using a specific format. +// This handles minimum length, zero-filling, and left/right justification from the format +// printf_number_buffer(byte zp($23) buffer_sign, byte* zp($c) buffer_digits, byte zp($f) format_min_length, byte zp($1d) format_justify_left, byte zp($18) format_zero_padding, byte zp($22) format_upper_case) +printf_number_buffer: { + .label __19 = 2 + .label buffer_sign = $23 + .label len = 4 + .label padding = $f + .label format_min_length = $f + .label format_zero_padding = $18 + .label format_justify_left = $1d + .label buffer_digits = $c + .label format_upper_case = $22 + // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_min_length + beq __b1_from_printf_number_buffer + jmp __b6 + // printf_number_buffer::@6 + __b6: + // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strlen.str + lda.z buffer_digits+1 + sta.z strlen.str+1 + // [29] call strlen + // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + strlen_from___b6: + jsr strlen + // [30] (word) strlen::return#2 ← (word) strlen::len#2 + jmp __b14 + // printf_number_buffer::@14 + __b14: + // [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 -- vbsz1=_sbyte_vwuz2 + // There is a minimum length - work out the padding + lda.z __19 + sta.z len + // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b13_from___b14 + jmp __b7 + // printf_number_buffer::@7 + __b7: + // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 + inc.z len + // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + __b13_from___b14: + __b13_from___b7: + // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + jmp __b13 + // printf_number_buffer::@13 + __b13: + // [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 -- vbsz1=vbsz1_minus_vbsz2 + lda.z padding + sec + sbc.z len + sta.z padding + // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + lda.z padding + cmp #0 + bpl __b21_from___b13 + // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + __b1_from_printf_number_buffer: + __b1_from___b13: + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + lda #0 + sta.z padding + jmp __b1 + // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + __b21_from___b13: + jmp __b21 + // printf_number_buffer::@21 + __b21: + // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + __b1_from___b21: + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + jmp __b1 + // printf_number_buffer::@1 + __b1: + // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + bne __b2 + jmp __b17 + // printf_number_buffer::@17 + __b17: + // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + bne __b2 + jmp __b16 + // printf_number_buffer::@16 + __b16: + // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b8 + jmp __b2 + // printf_number_buffer::@8 + __b8: + // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [44] call printf_padding + // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + printf_padding_from___b8: + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + jsr printf_padding + jmp __b2 + // printf_number_buffer::@2 + __b2: + // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b3 + jmp __b9 + // printf_number_buffer::@9 + __b9: + // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + lda.z buffer_sign + sta.z printf_char.ch + // [47] call printf_char + // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + printf_char_from___b9: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + jsr printf_char + jmp __b3 + // printf_number_buffer::@3 + __b3: + // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + beq __b4 + jmp __b18 + // printf_number_buffer::@18 + __b18: + // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b10 + jmp __b4 + // printf_number_buffer::@10 + __b10: + // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [51] call printf_padding + // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + printf_padding_from___b10: + // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + lda #'0' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + jsr printf_padding + jmp __b4 + // printf_number_buffer::@4 + __b4: + // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_upper_case + beq __b5 + jmp __b11 + // printf_number_buffer::@11 + __b11: + // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strupr.str + lda.z buffer_digits+1 + sta.z strupr.str+1 + // [54] call strupr + // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + strupr_from___b11: + jsr strupr + jmp __b5 + // printf_number_buffer::@5 + __b5: + // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + // [56] call printf_str + // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + printf_str_from___b5: + // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + jsr printf_str + jmp __b15 + // printf_number_buffer::@15 + __b15: + // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + beq __breturn + jmp __b20 + // printf_number_buffer::@20 + __b20: + // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + bne __breturn + jmp __b19 + // printf_number_buffer::@19 + __b19: + // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + lda #0 + cmp.z padding + bne __b12 + jmp __breturn + // printf_number_buffer::@12 + __b12: + // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [61] call printf_padding + // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + printf_padding_from___b12: + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + jsr printf_padding + jmp __breturn + // printf_number_buffer::@return + __breturn: + // [62] return + rts +} + // printf_padding +// Print a padding char a number of times +// printf_padding(byte zp(5) pad, byte zp(4) length) +printf_padding: { + .label i = 6 + .label length = 4 + .label pad = 5 + // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + __b1_from_printf_padding: + // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i + jmp __b1 + // printf_padding::@1 + __b1: + // [65] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 + lda.z i + cmp.z length + bcc __b2 + jmp __breturn + // printf_padding::@return + __breturn: + // [66] return + rts + // printf_padding::@2 + __b2: + // [67] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 + // [68] call printf_char + // [70] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] + printf_char_from___b2: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + jsr printf_char + jmp __b3 + // printf_padding::@3 + __b3: + // [69] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [64] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] + __b1_from___b3: + // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + jmp __b1 +} + // printf_char +// Print a single char +// If the end of the screen is reached scroll it up one char and place the cursor at the +// printf_char(byte zp(5) ch) +printf_char: { + .label ch = 5 + // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 + lda.z ch + ldy #0 + sta (printf_cursor_ptr),y + // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + inc.z printf_cursor_ptr + bne !+ + inc.z printf_cursor_ptr+1 + !: + // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_x + // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z printf_cursor_x + bne __breturn + jmp __b1 + // printf_char::@1 + __b1: + // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // [77] call printf_scroll + jsr printf_scroll + jmp __breturn + // printf_char::@return + __breturn: + // [78] return + rts +} + // printf_scroll +// Scroll the entire screen if the cursor is on the last line +printf_scroll: { + .label __4 = $12 + // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$19 + cmp.z printf_cursor_y + bne __breturn + // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + __b1_from_printf_scroll: + jmp __b1 + // printf_scroll::@1 + __b1: + // [81] call memcpy + // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + memcpy_from___b1: + jsr memcpy + // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + __b2_from___b1: + jmp __b2 + // printf_scroll::@2 + __b2: + // [83] call memset + // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + memset_from___b2: + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + lda #<$400+$28*$19-$28 + sta.z memset.str + lda #>$400+$28*$19-$28 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + lda #<$28 + sta.z memset.num + lda #>$28 + sta.z memset.num+1 + jsr memset + jmp __b3 + // printf_scroll::@3 + __b3: + // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 + lda.z __4 + sec + sbc #<$28 + sta.z __4 + lda.z __4+1 + sbc #>$28 + sta.z __4+1 + // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + dec.z printf_cursor_y + jmp __breturn + // printf_scroll::@return + __breturn: + // [87] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zp(2) str, byte zp(7) c, word zp($19) num) +memset: { + .label end = $19 + .label dst = 2 + .label num = $19 + .label str = 2 + .label c = 7 + // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda.z num + bne !+ + lda.z num+1 + beq __breturn + !: + jmp __b1 + // memset::@1 + __b1: + // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda.z end + clc + adc.z str + sta.z end + lda.z end+1 + adc.z str+1 + sta.z end+1 + // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + __b2_from___b1: + __b2_from___b3: + // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + jmp __b2 + // memset::@2 + __b2: + // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + lda.z dst+1 + cmp.z end+1 + bne __b3 + lda.z dst + cmp.z end + bne __b3 + jmp __breturn + // memset::@return + __breturn: + // [94] return + rts + // memset::@3 + __b3: + // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + lda.z c + ldy #0 + sta (dst),y + // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc.z dst + bne !+ + inc.z dst+1 + !: + jmp __b2_from___b3 +} + // memcpy +// Copy block of memory (forwards) +// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. +memcpy: { + .label destination = $400 + .label source = $400+$28 + .const num = $28*$19-$28 + .label src_end = source+num + .label dst = 2 + .label src = $19 + // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + __b1_from_memcpy: + // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + lda #destination + sta.z dst+1 + // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + lda #source + sta.z src+1 + jmp __b1 + // memcpy::@1 + __b1: + // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + lda.z src+1 + cmp #>src_end + bne __b2 + lda.z src + cmp #memcpy::@1] + __b1_from___b2: + // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + jmp __b1 +} + // printf_str +// Print a zero-terminated string +// Handles escape codes such as newline +// printf_str(byte* zp($c) str) +printf_str: { + .label ch = 5 + .label str = $c + // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + __b1_from_printf_str: + __b1_from___b4: + __b1_from___b5: + // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + jmp __b1 + // printf_str::@1 + __b1: + jmp __b2 + // printf_str::@2 + __b2: + // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta.z ch + // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 + lda.z ch + cmp #0 + bne __b3 + jmp __breturn + // printf_str::@return + __breturn: + // [109] return + rts + // printf_str::@3 + __b3: + // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #'\n' + cmp.z ch + beq __b4_from___b3 + jmp __b5 + // printf_str::@5 + __b5: + // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + // [112] call printf_char + // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + printf_char_from___b5: + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + jsr printf_char + jmp __b1_from___b5 + // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + __b4_from___b3: + jmp __b4 + // printf_str::@4 + __b4: + // [114] call printf_ln + jsr printf_ln + jmp __b1_from___b4 +} + // printf_ln +// Print a newline +printf_ln: { + .label __0 = $12 + .label __1 = $12 + // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 + sec + lda.z __0 + sbc.z printf_cursor_x + sta.z __0 + bcs !+ + dec.z __0+1 + !: + // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + lda #$28 + clc + adc.z __1 + sta.z __1 + bcc !+ + inc.z __1+1 + !: + // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // [120] call printf_scroll + jsr printf_scroll + jmp __breturn + // printf_ln::@return + __breturn: + // [121] return + rts +} + // strupr +// Converts a string to uppercase. +// strupr(byte* zp($19) str) +strupr: { + .label __0 = 4 + .label src = $19 + .label str = $19 + // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + __b1_from_strupr: + __b1_from___b3: + // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + jmp __b1 + // strupr::@1 + __b1: + // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (src),y + cmp #0 + bne __b2 + jmp __breturn + // strupr::@return + __breturn: + // [125] return + rts + // strupr::@2 + __b2: + // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (src),y + sta.z toupper.ch + // [127] call toupper + jsr toupper + // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 + jmp __b3 + // strupr::@3 + __b3: + // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 + // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 + lda.z __0 + ldy #0 + sta (src),y + // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + inc.z src + bne !+ + inc.z src+1 + !: + jmp __b1_from___b3 +} + // toupper +// Convert lowercase alphabet to uppercase +// Returns uppercase equivalent to c, if such value exists, else c remains unchanged +// toupper(byte zp(4) ch) +toupper: { + .label return = 4 + .label ch = 4 + // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 + lda.z ch + cmp #'a' + bcc __breturn_from_toupper + jmp __b2 + // toupper::@2 + __b2: + // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 + lda #'z' + cmp.z ch + bcs __b1 + // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + __breturn_from_toupper: + __breturn_from___b1: + __breturn_from___b2: + // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + jmp __breturn + // toupper::@1 + __b1: + // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 + lax.z return + axs #-['A'-'a'] + stx.z return + jmp __breturn_from___b1 + // toupper::@return + __breturn: + // [136] return + rts +} + // strlen +// Computes the length of the string str up to but not including the terminating null character. +// strlen(byte* zp($19) str) +strlen: { + .label len = 2 + .label str = $19 + .label return = 2 + // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + __b1_from_strlen: + // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + lda #<0 + sta.z len + lda #>0 + sta.z len+1 + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + jmp __b1 + // strlen::@1 + __b1: + // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (str),y + cmp #0 + bne __b2 + jmp __breturn + // strlen::@return + __breturn: + // [140] return + rts + // strlen::@2 + __b2: + // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + inc.z len + bne !+ + inc.z len+1 + !: + // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + __b1_from___b2: + // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + jmp __b1 +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($c) value, byte* zp(2) buffer) +utoa: { + .const max_digits = 5 + .label __10 = $1b + .label __11 = $18 + .label digit_value = $19 + .label buffer = 2 + .label digit = $f + .label value = $c + .label started = $1d + // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + __b1_from_utoa: + // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // utoa::@1 + __b1: + // [145] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // utoa::@3 + __b3: + // [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuz1=_byte_vwuz2 + lda.z value + sta.z __11 + // [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer),y + // [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [149] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // utoa::@return + __breturn: + // [150] return + rts + // utoa::@2 + __b2: + // [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda.z digit + asl + sta.z __10 + // [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES+1,y + sta.z digit_value+1 + // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // utoa::@7 + __b7: + // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + __b4_from___b7: + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + jmp __b4 + // utoa::@4 + __b4: + // [156] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [144] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] + __b1_from___b4: + // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // [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 + // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + utoa_append_from___b5: + jsr utoa_append + // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + jmp __b6 + // utoa::@6 + __b6: + // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 + // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + __b4_from___b6: + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp(2) buffer, word zp($c) value, word zp($19) sub) +utoa_append: { + .label buffer = 2 + .label value = $c + .label sub = $19 + .label return = $c + .label digit = $18 + // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + __b1_from_utoa_append: + // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + jmp __b1 + // utoa_append::@1 + __b1: + // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + jmp __b3 + // utoa_append::@3 + __b3: + // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // utoa_append::@return + __breturn: + // [168] return + rts + // utoa_append::@2 + __b2: + // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + __b1_from___b2: + // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // [172] call memset + // [88] phi from printf_cls to memset [phi:printf_cls->memset] + memset_from_printf_cls: + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + jmp __b1 + // printf_cls::@1 + __b1: + // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_y + jmp __breturn + // printf_cls::@return + __breturn: + // [176] return + rts +} + // queen +// 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. +// queen(byte zp($1b) row) +queen: { + .const OFFSET_STACK_ROW = 0 + .label r = $1b + .label column = $1c + .label __1 = $f + .label __4 = $1b + .label row = $1b + // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 + tsx + lda STACK_BASE+OFFSET_STACK_ROW,x + sta.z row + // [178] (byte) queen::r ← (byte) queen::row#0 + // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 + lda #1 + sta.z column + jmp __b1 + // queen::@1 + __b1: + // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z column + cmp #8+1 + bcc __b2 + jmp __breturn + // queen::@return + __breturn: + // [181] return + rts + // queen::@2 + __b2: + // [182] (byte) legal::row#0 ← (byte) queen::r + // [183] (byte) legal::column#0 ← (byte) queen::column + // [184] call legal + // [294] phi from queen::@2 to legal [phi:queen::@2->legal] + legal_from___b2: + jsr legal + // [185] (byte) legal::return#0 ← (byte) legal::return#4 + jmp __b7 + // queen::@7 + __b7: + // [186] (byte~) queen::$1 ← (byte) legal::return#0 + // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __1 + beq __b3 + jmp __b5 + // queen::@5 + __b5: + // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 + //no conflicts so place queen + lda.z column + ldy.z r + sta board,y + // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #8 + cmp.z r + beq __b4_from___b5 + jmp __b6 + // queen::@6 + __b6: + // asm { ldacolumn pha ldar pha } + // Perform recussive placement on rows above + // Push the local vars on the stack (waiting for proper recursion support) + lda column + pha + lda r + pha + // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz1_plus_1 + inc.z __4 + // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 + // Do recursion + lda.z __4 + pha + // [193] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + // asm { pla star pla stacolumn } + // Pop the local vars on the stack (waiting for proper recursion support) + pla + sta r + pla + sta column + jmp __b3 + // queen::@3 + __b3: + // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 + inc.z column + jmp __b1 + // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] + __b4_from___b5: + jmp __b4 + // queen::@4 + __b4: + // [198] call print + // we are done! Print the board configuration + jsr print + jmp __b3 +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $e + .label i1 = $e + .label j = $23 + // [199] (dword) count ← ++ (dword) count -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // [200] call printf_str + // [104] phi from print to printf_str [phi:print->printf_str] + printf_str_from_print: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + jmp __b11 + // print::@11 + __b11: + // [201] (dword) printf_ulong::uvalue#0 ← (dword) count -- vduz1=vduz2 + lda.z count + sta.z printf_ulong.uvalue + lda.z count+1 + sta.z printf_ulong.uvalue+1 + lda.z count+2 + sta.z printf_ulong.uvalue+2 + lda.z count+3 + sta.z printf_ulong.uvalue+3 + // [202] call printf_ulong + // [259] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + printf_ulong_from___b11: + jsr printf_ulong + // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + __b12_from___b11: + jmp __b12 + // print::@12 + __b12: + // [204] call printf_str + // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] + printf_str_from___b12: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + __b1_from___b12: + // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // print::@1 + __b1: + // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + __b3_from___b1: + // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + jmp __b3 + // print::@3 + __b3: + // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4_from___b3 + jmp __breturn + // print::@return + __breturn: + // [209] return + rts + // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + __b4_from___b3: + jmp __b4 + // print::@4 + __b4: + // [211] call printf_str + // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] + printf_str_from___b4: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + jmp __b14 + // print::@14 + __b14: + // [212] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 + // [213] call printf_uchar + // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + printf_uchar_from___b14: + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + __b5_from___b14: + // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + jmp __b5 + // print::@5 + __b5: + // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + jmp __b7 + // print::@7 + __b7: + // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + __b3_from___b7: + // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8_from___b6 + // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + __b10_from___b6: + jmp __b10 + // print::@10 + __b10: + // [219] call printf_str + // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] + printf_str_from___b10: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@9 + __b9: + // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + __b5_from___b9: + // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + __b8_from___b6: + jmp __b8 + // print::@8 + __b8: + // [222] call printf_str + // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] + printf_str_from___b8: + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // [223] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 + // [224] call printf_uchar + // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + printf_uchar_from___b2: + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + jmp __b13 + // print::@13 + __b13: + // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + __b1_from___b13: + // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte zp($e) uvalue) +printf_uchar: { + .label uvalue = $e + jmp __b1 + // printf_uchar::@1 + __b1: + // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 -- vbuz1=vbuz2 + lda.z uvalue + sta.z uctoa.value + // [229] call uctoa + // Format number into buffer + // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + uctoa_from___b1: + jsr uctoa + jmp __b2 + // printf_uchar::@2 + __b2: + // [230] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [231] call printf_number_buffer + // Print using format + // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uchar::@return + __breturn: + // [232] return + rts +} + // uctoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// uctoa(byte zp(4) value, byte* zp($c) buffer) +uctoa: { + .label digit_value = $1d + .label buffer = $c + .label digit = $22 + .label value = 4 + .label started = 5 + // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + __b1_from_uctoa: + // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // uctoa::@1 + __b1: + // [235] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #2-1 + bcc __b2 + jmp __b3 + // uctoa::@3 + __b3: + // [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z value + lda DIGITS,y + ldy #0 + sta (buffer),y + // [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [238] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // uctoa::@return + __breturn: + // [239] return + rts + // uctoa::@2 + __b2: + // [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda RADIX_HEXADECIMAL_VALUES_CHAR,y + sta.z digit_value + // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // uctoa::@7 + __b7: + // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z digit_value + bcs __b5 + // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + __b4_from___b7: + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + jmp __b4 + // uctoa::@4 + __b4: + // [244] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [234] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] + __b1_from___b4: + // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + jmp __b1 + // uctoa::@5 + __b5: + // [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 + // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + uctoa_append_from___b5: + jsr uctoa_append + // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 + jmp __b6 + // uctoa::@6 + __b6: + // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + __b4_from___b6: + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + jmp __b4 +} + // uctoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// uctoa_append(byte* zp($c) buffer, byte zp(4) value, byte zp($1d) sub) +uctoa_append: { + .label buffer = $c + .label value = 4 + .label sub = $1d + .label return = 4 + .label digit = 6 + // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + __b1_from_uctoa_append: + // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + jmp __b1 + // uctoa_append::@1 + __b1: + // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z sub + bcs __b2 + jmp __b3 + // uctoa_append::@3 + __b3: + // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // uctoa_append::@return + __breturn: + // [256] return + rts + // uctoa_append::@2 + __b2: + // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + lda.z value + sec + sbc.z sub + sta.z value + // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + __b1_from___b2: + // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp(8) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 8 + jmp __b1 + // printf_ulong::@1 + __b1: + // [260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 + // [262] call ultoa + // Format number into buffer + // [266] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + ultoa_from___b1: + jsr ultoa + jmp __b2 + // printf_ulong::@2 + __b2: + // [263] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [264] call printf_number_buffer + // Print using format + // [26] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_ulong::@return + __breturn: + // [265] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp(8) value, byte* zp($c) buffer) +ultoa: { + .const max_digits = $a + .label __10 = $22 + .label __11 = $1d + .label digit_value = $1e + .label buffer = $c + .label digit = 7 + .label value = 8 + .label started = $f + // [267] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + __b1_from_ultoa: + // [267] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [267] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // ultoa::@1 + __b1: + // [268] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // ultoa::@3 + __b3: + // [269] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 -- vbuz1=_byte_vduz2 + lda.z value + sta.z __11 + // [270] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer),y + // [271] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [272] *((byte*) ultoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa::@return + __breturn: + // [273] return + rts + // ultoa::@2 + __b2: + // [274] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda.z digit + asl + asl + sta.z __10 + // [275] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) -- vduz1=pduc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES_LONG,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES_LONG+1,y + sta.z digit_value+1 + lda RADIX_DECIMAL_VALUES_LONG+2,y + sta.z digit_value+2 + lda RADIX_DECIMAL_VALUES_LONG+3,y + sta.z digit_value+3 + // [276] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // ultoa::@7 + __b7: + // [277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [278] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + __b4_from___b7: + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + jmp __b4 + // ultoa::@4 + __b4: + // [279] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [267] phi from ultoa::@4 to ultoa::@1 [phi:ultoa::@4->ultoa::@1] + __b1_from___b4: + // [267] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [267] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // [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 + // [287] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + ultoa_append_from___b5: + jsr ultoa_append + // [284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + jmp __b6 + // ultoa::@6 + __b6: + // [285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + // [286] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [278] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + __b4_from___b6: + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($c) buffer, dword zp(8) value, dword zp($1e) sub) +ultoa_append: { + .label buffer = $c + .label value = 8 + .label sub = $1e + .label return = 8 + .label digit = $1d + // [288] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + __b1_from_ultoa_append: + // [288] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + jmp __b1 + // ultoa_append::@1 + __b1: + // [289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + jmp __b3 + // ultoa_append::@3 + __b3: + // [290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa_append::@return + __breturn: + // [291] return + rts + // ultoa_append::@2 + __b2: + // [292] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [288] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] + __b1_from___b2: + // [288] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy + jmp __b1 +} + // legal +// 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 +// legal(byte zp($1b) row, byte zp($1c) column) +legal: { + .label __0 = $22 + .label __3 = $23 + .label __4 = $1d + .label row = $1b + .label column = $1c + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return = $f + .label i = $e + // [295] phi from legal to legal::@1 [phi:legal->legal::@1] + __b1_from_legal: + // [295] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // legal::@1 + __b1: + // [296] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + ldx.z row + dex + stx.z __0 + // [297] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuz1_le_vbuz2_then_la1 + lda.z __0 + cmp.z i + bcs __b2 + // [298] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] + __breturn_from___b1: + // [298] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuz1=vbuc1 + lda #1 + sta.z return + jmp __breturn + // [298] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] + __breturn_from___b2: + __breturn_from___b6: + // [298] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuz1=vbuc1 + lda #0 + sta.z return + jmp __breturn + // legal::@return + __breturn: + // [299] return + rts + // legal::@2 + __b2: + // [300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i + lda board,y + cmp.z column + beq __breturn_from___b2 + jmp __b4 + // legal::@4 + __b4: + // [301] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z i + lda board,y + sta.z diff.a + // [302] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuz1=vbuz2 + lda.z column + sta.z diff.b + // [303] call diff + // [313] phi from legal::@4 to diff [phi:legal::@4->diff] + diff_from___b4: + // [313] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy + jsr diff + // [304] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 + lda.z diff.return_1 + sta.z diff.return + jmp __b5 + // legal::@5 + __b5: + // [305] (byte~) legal::$3 ← (byte) diff::return#0 + // [306] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuz1=vbuz2 + lda.z i + sta.z diff.a + // [307] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuz1=vbuz2 + lda.z row + sta.z diff.b + // [308] call diff + // [313] phi from legal::@5 to diff [phi:legal::@5->diff] + diff_from___b5: + // [313] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy + jsr diff + // [309] (byte) diff::return#1 ← (byte) diff::return#4 + jmp __b6 + // legal::@6 + __b6: + // [310] (byte~) legal::$4 ← (byte) diff::return#1 + // [311] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuz2_then_la1 + lda.z __3 + cmp.z __4 + bne __b3 + jmp __breturn_from___b6 + // legal::@3 + __b3: + // [312] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [295] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] + __b1_from___b3: + // [295] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy + jmp __b1 +} + // diff +// Find the absolute difference between two unsigned chars +// diff(byte zp($1d) a, byte zp($18) b) +diff: { + .label a = $1d + .label b = $18 + .label return = $23 + .label return_1 = $1d + // [314] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuz1_lt_vbuz2_then_la1 + lda.z a + cmp.z b + bcc __b1 + jmp __b2 + // diff::@2 + __b2: + // [315] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuz1=vbuz1_minus_vbuz2 + lda.z return_1 + sec + sbc.z b + sta.z return_1 + // [316] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] + __breturn_from___b1: + __breturn_from___b2: + // [316] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + jmp __breturn + // diff::@return + __breturn: + // [317] return + rts + // diff::@1 + __b1: + // [318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz1 + lda.z b + sec + sbc.z return_1 + sta.z return_1 + jmp __breturn_from___b1 +} + // File Data + // The digits used for numbers + DIGITS: .text "0123456789abcdef" + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 + // Values of decimal digits + RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. + board: .fill $14, 0 + // Buffer used for stringified number being printed + printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __bend +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __b4 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b6 +Removing instruction jmp __b14 +Removing instruction jmp __b7 +Removing instruction jmp __b13 +Removing instruction jmp __b21 +Removing instruction jmp __b1 +Removing instruction jmp __b17 +Removing instruction jmp __b16 +Removing instruction jmp __b2 +Removing instruction jmp __b9 +Removing instruction jmp __b3 +Removing instruction jmp __b18 +Removing instruction jmp __b4 +Removing instruction jmp __b11 +Removing instruction jmp __b5 +Removing instruction jmp __b15 +Removing instruction jmp __b20 +Removing instruction jmp __b19 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b3 +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b5 +Removing instruction jmp __b4 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b3 +Removing instruction jmp __b2 +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b7 +Removing instruction jmp __b4 +Removing instruction jmp __b6 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b7 +Removing instruction jmp __b5 +Removing instruction jmp __b6 +Removing instruction jmp __b3 +Removing instruction jmp __b4 +Removing instruction jmp __b11 +Removing instruction jmp __b12 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b4 +Removing instruction jmp __b14 +Removing instruction jmp __b5 +Removing instruction jmp __b7 +Removing instruction jmp __b10 +Removing instruction jmp __b9 +Removing instruction jmp __b8 +Removing instruction jmp __b13 +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b7 +Removing instruction jmp __b4 +Removing instruction jmp __b6 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b7 +Removing instruction jmp __b4 +Removing instruction jmp __b6 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Removing instruction jmp __b4 +Removing instruction jmp __b5 +Removing instruction jmp __b6 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #0 +Removing instruction lda #>0 +Removing instruction lda.z padding +Removing instruction ldy #0 +Removing instruction lda #>0 +Replacing instruction ldy.z __11 with TAY +Replacing instruction ldy #0 with TAY +Replacing instruction ldy.z __10 with TAY +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Replacing instruction ldy #0 with TAY +Removing instruction lda #0 +Replacing instruction ldy.z __11 with TAY +Replacing instruction ldy #0 with TAY +Replacing instruction ldy.z __10 with TAY +Replacing instruction lda.z __0 with TXA +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label __b1_from_printf_number_buffer with __b1_from___b13 +Replacing label __b13_from___b14 with __b13 +Replacing label __b21_from___b13 with __b1 +Replacing label __b2_from___b3 with __b2 +Replacing label __b4_from___b3 with __b4 +Replacing label __b1_from___b5 with __b2 +Replacing label __b1_from___b4 with __b2 +Replacing label __b1_from___b3 with __b1 +Replacing label __breturn_from_toupper with __breturn_from___b2 +Replacing label __breturn_from___b1 with __breturn_from___b2 +Replacing label __b4_from___b5 with __b4 +Replacing label __b4_from___b3 with __b4 +Replacing label __b8_from___b6 with __b8 +Replacing label __breturn_from___b2 with __breturn_from___b6 +Replacing label __breturn_from___b1 with __breturn +Removing instruction __b1: +Removing instruction __b3_from___b2: +Removing instruction main_from___b3: +Removing instruction __bend_from___b3: +Removing instruction __b1_from_main: +Removing instruction printf_str_from___b1: +Removing instruction __b2_from___b1: +Removing instruction printf_str_from___b2: +Removing instruction __b3_from___b2: +Removing instruction printf_uint_from___b3: +Removing instruction __b13_from___b14: +Removing instruction __b13_from___b7: +Removing instruction __b1_from_printf_number_buffer: +Removing instruction __b21_from___b13: +Removing instruction __b21: +Removing instruction __b1_from___b21: +Removing instruction printf_str_from___b5: +Removing instruction printf_char_from___b2: +Removing instruction __b1_from_printf_scroll: +Removing instruction memcpy_from___b1: +Removing instruction __b2_from___b1: +Removing instruction memset_from___b2: +Removing instruction __b2_from___b1: +Removing instruction __b2_from___b3: +Removing instruction __b1_from_printf_str: +Removing instruction __b1_from___b4: +Removing instruction __b1_from___b5: +Removing instruction __b1: +Removing instruction printf_char_from___b5: +Removing instruction __b4_from___b3: +Removing instruction __b1_from_strupr: +Removing instruction __b1_from___b3: +Removing instruction __breturn_from_toupper: +Removing instruction __breturn_from___b1: +Removing instruction __b4_from___b7: +Removing instruction utoa_append_from___b5: +Removing instruction legal_from___b2: +Removing instruction __b4_from___b5: +Removing instruction __b12_from___b11: +Removing instruction printf_str_from___b12: +Removing instruction __b4_from___b3: +Removing instruction printf_str_from___b4: +Removing instruction printf_uchar_from___b14: +Removing instruction __b10_from___b6: +Removing instruction printf_str_from___b10: +Removing instruction __b8_from___b6: +Removing instruction printf_str_from___b8: +Removing instruction printf_uchar_from___b2: +Removing instruction __b4_from___b7: +Removing instruction uctoa_append_from___b5: +Removing instruction __b4_from___b7: +Removing instruction ultoa_append_from___b5: +Removing instruction __breturn_from___b2: +Removing instruction __breturn_from___b1: +Removing instruction __breturn_from___b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction __b2: +Removing instruction __b3: +Removing instruction __bend: +Removing instruction printf_cls_from_main: +Removing instruction __b1: +Removing instruction __b2: +Removing instruction __b3: +Removing instruction __b4: +Removing instruction __breturn: +Removing instruction __b1: +Removing instruction utoa_from___b1: +Removing instruction __b2: +Removing instruction printf_number_buffer_from___b2: +Removing instruction __breturn: +Removing instruction __b6: +Removing instruction strlen_from___b6: +Removing instruction __b14: +Removing instruction __b7: +Removing instruction __b17: +Removing instruction __b16: +Removing instruction printf_padding_from___b8: +Removing instruction __b9: +Removing instruction printf_char_from___b9: +Removing instruction __b18: +Removing instruction printf_padding_from___b10: +Removing instruction __b11: +Removing instruction strupr_from___b11: +Removing instruction __b15: +Removing instruction __b20: +Removing instruction __b19: +Removing instruction printf_padding_from___b12: +Removing instruction __b1_from_printf_padding: +Removing instruction __breturn: +Removing instruction __b3: +Removing instruction __b1_from___b3: +Removing instruction __b1: +Removing instruction __b1: +Removing instruction __b2: +Removing instruction __b3: +Removing instruction __b1: +Removing instruction __b1_from_memcpy: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __breturn: +Removing instruction __b5: +Removing instruction __breturn: +Removing instruction __breturn: +Removing instruction __b3: +Removing instruction __b2: +Removing instruction __b1_from_strlen: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __b1_from_utoa: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b1_from___b4: +Removing instruction __b6: +Removing instruction __b4_from___b6: +Removing instruction __b1_from_utoa_append: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction memset_from_printf_cls: +Removing instruction __b1: +Removing instruction __breturn: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b5: +Removing instruction __b6: +Removing instruction printf_str_from_print: +Removing instruction __b11: +Removing instruction printf_ulong_from___b11: +Removing instruction __b12: +Removing instruction __b1_from___b12: +Removing instruction __b3_from___b1: +Removing instruction __breturn: +Removing instruction __b14: +Removing instruction __b5_from___b14: +Removing instruction __b7: +Removing instruction __b3_from___b7: +Removing instruction __b10: +Removing instruction __b5_from___b9: +Removing instruction __b13: +Removing instruction __b1_from___b13: +Removing instruction __b1: +Removing instruction uctoa_from___b1: +Removing instruction __b2: +Removing instruction printf_number_buffer_from___b2: +Removing instruction __breturn: +Removing instruction __b1_from_uctoa: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b1_from___b4: +Removing instruction __b6: +Removing instruction __b4_from___b6: +Removing instruction __b1_from_uctoa_append: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __b1: +Removing instruction ultoa_from___b1: +Removing instruction __b2: +Removing instruction printf_number_buffer_from___b2: +Removing instruction __breturn: +Removing instruction __b1_from_ultoa: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b1_from___b4: +Removing instruction __b6: +Removing instruction __b4_from___b6: +Removing instruction __b1_from_ultoa_append: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __b1_from_legal: +Removing instruction __breturn_from___b1: +Removing instruction __b4: +Removing instruction diff_from___b4: +Removing instruction __b5: +Removing instruction diff_from___b5: +Removing instruction __b6: +Removing instruction __b1_from___b3: +Removing instruction __b2: +Succesful ASM optimization Pass5UnusedLabelElimination +Replacing jump to rts with rts in jmp __breturn +Skipping double jump to __breturn in bcc __breturn_from___b2 +Replacing jump to rts with rts in jmp __breturn +Skipping double jump to __breturn in jmp __breturn_from___b2 +Replacing jump to rts with rts in jmp __breturn +Replacing jump to rts with rts in jmp __breturn +Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label __b1_from___b13 to __b6 +Relabelling long label __breturn_from___b2 to __b2 +Relabelling long label __breturn_from___b6 to __b4 +Succesful ASM optimization Pass5RelabelLongLabels +Adding RTS to root block +Succesful ASM optimization Pass5AddMainRts +Removing instruction jmp __b1 +Removing instruction jmp __breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Replacing instruction lda r with TYA +Removing instruction ldy.z i +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Removing instruction __b2: +Removing instruction __breturn: +Removing instruction __breturn: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(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 ] + + +FINAL ASSEMBLER +Score: 2147483647 + + // File Comments +// 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 + // Upstart +.pc = $801 "Basic" +:BasicUpstart(__bbegin) +.pc = $80d "Program" + // Global Constants & labels + .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 + .const STACK_BASE = $103 + .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c + .label printf_cursor_x = $10 + .label printf_cursor_y = $11 + .label printf_cursor_ptr = $12 + .label count = $14 + // @begin +__bbegin: + // @1 + // printf_cursor_x = 0 + // [1] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // X-position of cursor + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + // [2] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + // Y-position of cursor + sta.z printf_cursor_y + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + // [3] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + // Pointer to cursor address + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // @2 + // count = 0 + // [4] (dword) count ← (dword) 0 -- vduz1=vduc1 + // The number of found solutions + lda #<0 + sta.z count + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [5] phi from @2 to @3 [phi:@2->@3] + // @3 + // [6] call main + // [8] phi from @3 to main [phi:@3->main] + jsr main + rts + // [7] phi from @3 to @end [phi:@3->@end] + // @end + // main +main: { + // printf_cls() + // [9] call printf_cls + // [171] phi from main to printf_cls [phi:main->printf_cls] + jsr printf_cls + // [10] phi from main to main::@1 [phi:main->main::@1] + // main::@1 + // printf(" - n queens problem using backtracking -") + // [11] call printf_str + // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // main::@2 + // printf("\nNumber of queens:%u",QUEENS) + // [13] call printf_str + // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // main::@3 + // printf("\nNumber of queens:%u",QUEENS) + // [15] call printf_uint + // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + jsr printf_uint + // main::@4 + // queen(1) + // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 + lda #1 + pha + // [17] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + // main::@return + // } + // [19] return + rts + str: .text " - n queens problem using backtracking -" + .byte 0 + str1: .text @"\nNumber of queens:" + .byte 0 +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + // printf_uint::@1 + // printf_buffer.sign = format.sign_always?'+':0 + // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // utoa(uvalue, printf_buffer.digits, format.radix) + // [22] call utoa + // Format number into buffer + // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + jsr utoa + // printf_uint::@2 + // printf_number_buffer(printf_buffer, format) + // [23] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [24] call printf_number_buffer + // Print using format + // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // printf_uint::@return + // } + // [25] return + rts +} + // printf_number_buffer +// Print the contents of the number buffer using a specific format. +// This handles minimum length, zero-filling, and left/right justification from the format +// printf_number_buffer(byte zp($23) buffer_sign, byte* zp($c) buffer_digits, byte zp($f) format_min_length, byte zp($1d) format_justify_left, byte zp($18) format_zero_padding, byte zp($22) format_upper_case) +printf_number_buffer: { + .label __19 = 2 + .label buffer_sign = $23 + .label len = 4 + .label padding = $f + .label format_min_length = $f + .label format_zero_padding = $18 + .label format_justify_left = $1d + .label buffer_digits = $c + .label format_upper_case = $22 + // if(format.min_length) + // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_min_length + beq __b6 + // printf_number_buffer::@6 + // strlen(buffer.digits) + // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strlen.str + lda.z buffer_digits+1 + sta.z strlen.str+1 + // [29] call strlen + // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + jsr strlen + // strlen(buffer.digits) + // [30] (word) strlen::return#2 ← (word) strlen::len#2 + // printf_number_buffer::@14 + // [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 + // len = (signed char)strlen(buffer.digits) + // [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsz1=_sbyte_vwuz2 + // There is a minimum length - work out the padding + lda.z __19 + sta.z len + // if(buffer.sign) + // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b13 + // printf_number_buffer::@7 + // len++; + // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 + inc.z len + // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + // printf_number_buffer::@13 + __b13: + // padding = (signed char)format.min_length - len + // [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 -- vbsz1=vbsz1_minus_vbsz2 + lda.z padding + sec + sbc.z len + sta.z padding + // if(padding<0) + // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + cmp #0 + bpl __b1 + // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + __b6: + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + lda #0 + sta.z padding + // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + // printf_number_buffer::@21 + // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + // printf_number_buffer::@1 + __b1: + // if(!format.justify_left && !format.zero_padding && padding) + // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + bne __b2 + // printf_number_buffer::@17 + // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + cmp.z format_zero_padding + bne __b2 + // printf_number_buffer::@16 + // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + cmp.z padding + bne __b8 + jmp __b2 + // printf_number_buffer::@8 + __b8: + // printf_padding(' ',(char)padding) + // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [44] call printf_padding + // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + jsr printf_padding + // printf_number_buffer::@2 + __b2: + // if(buffer.sign) + // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z buffer_sign + beq __b3 + // printf_number_buffer::@9 + // printf_char(buffer.sign) + // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + lda.z buffer_sign + sta.z printf_char.ch + // [47] call printf_char + // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + jsr printf_char + // printf_number_buffer::@3 + __b3: + // if(format.zero_padding && padding) + // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_zero_padding + beq __b4 + // printf_number_buffer::@18 + // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + cmp.z padding + bne __b10 + jmp __b4 + // printf_number_buffer::@10 + __b10: + // printf_padding('0',(char)padding) + // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [51] call printf_padding + // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + lda #'0' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + jsr printf_padding + // printf_number_buffer::@4 + __b4: + // if(format.upper_case) + // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_upper_case + beq __b5 + // printf_number_buffer::@11 + // strupr(buffer.digits) + // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + lda.z buffer_digits + sta.z strupr.str + lda.z buffer_digits+1 + sta.z strupr.str+1 + // [54] call strupr + // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + jsr strupr + // printf_number_buffer::@5 + __b5: + // printf_str(buffer.digits) + // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + // [56] call printf_str + // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + jsr printf_str + // printf_number_buffer::@15 + // if(format.justify_left && !format.zero_padding && padding) + // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z format_justify_left + beq __breturn + // printf_number_buffer::@20 + // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + cmp.z format_zero_padding + bne __breturn + // printf_number_buffer::@19 + // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + cmp.z padding + bne __b12 + rts + // printf_number_buffer::@12 + __b12: + // printf_padding(' ',(char)padding) + // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + lda.z padding + sta.z printf_padding.length + // [61] call printf_padding + // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + lda #' ' + sta.z printf_padding.pad + // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + jsr printf_padding + // printf_number_buffer::@return + __breturn: + // } + // [62] return + rts +} + // printf_padding +// Print a padding char a number of times +// printf_padding(byte zp(5) pad, byte zp(4) length) +printf_padding: { + .label i = 6 + .label length = 4 + .label pad = 5 + // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z i + // printf_padding::@1 + __b1: + // for(char i=0;iprintf_char] + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + jsr printf_char + // printf_padding::@3 + // for(char i=0;iprintf_padding::@1] + // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + jmp __b1 +} + // printf_char +// Print a single char +// If the end of the screen is reached scroll it up one char and place the cursor at the +// printf_char(byte zp(5) ch) +printf_char: { + .label ch = 5 + // *(printf_cursor_ptr++) = ch + // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 + lda.z ch + ldy #0 + sta (printf_cursor_ptr),y + // *(printf_cursor_ptr++) = ch; + // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + inc.z printf_cursor_ptr + bne !+ + inc.z printf_cursor_ptr+1 + !: + // if(++printf_cursor_x==PRINTF_SCREEN_WIDTH) + // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_x + // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$28 + cmp.z printf_cursor_x + bne __breturn + // printf_char::@1 + // printf_cursor_x = 0 + // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // ++printf_cursor_y; + // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // printf_scroll() + // [77] call printf_scroll + jsr printf_scroll + // printf_char::@return + __breturn: + // } + // [78] return + rts +} + // printf_scroll +// Scroll the entire screen if the cursor is on the last line +printf_scroll: { + .label __4 = $12 + // if(printf_cursor_y==PRINTF_SCREEN_HEIGHT) + // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + lda #$19 + cmp.z printf_cursor_y + bne __breturn + // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + // printf_scroll::@1 + // memcpy(PRINTF_SCREEN_ADDRESS, PRINTF_SCREEN_ADDRESS+PRINTF_SCREEN_WIDTH, PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH) + // [81] call memcpy + // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + jsr memcpy + // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + // printf_scroll::@2 + // memset(PRINTF_SCREEN_ADDRESS+PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH, ' ', PRINTF_SCREEN_WIDTH) + // [83] call memset + // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + lda #<$400+$28*$19-$28 + sta.z memset.str + lda #>$400+$28*$19-$28 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + lda #<$28 + sta.z memset.num + lda #>$28 + sta.z memset.num+1 + jsr memset + // printf_scroll::@3 + // printf_cursor_ptr-PRINTF_SCREEN_WIDTH + // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 + lda.z __4 + sec + sbc #<$28 + sta.z __4 + lda.z __4+1 + sbc #>$28 + sta.z __4+1 + // printf_cursor_ptr = printf_cursor_ptr-PRINTF_SCREEN_WIDTH + // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + // printf_cursor_y--; + // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + dec.z printf_cursor_y + // printf_scroll::@return + __breturn: + // } + // [87] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zp(2) str, byte zp(7) c, word zp($19) num) +memset: { + .label end = $19 + .label dst = 2 + .label num = $19 + .label str = 2 + .label c = 7 + // if(num>0) + // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda.z num + bne !+ + lda.z num+1 + beq __breturn + !: + // memset::@1 + // end = (char*)str + num + // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda.z end + clc + adc.z str + sta.z end + lda.z end+1 + adc.z str+1 + sta.z end+1 + // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // memset::@2 + __b2: + // for(char* dst = str; dst!=end; dst++) + // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + lda.z dst+1 + cmp.z end+1 + bne __b3 + lda.z dst + cmp.z end + bne __b3 + // memset::@return + __breturn: + // } + // [94] return + rts + // memset::@3 + __b3: + // *dst = c + // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + lda.z c + ldy #0 + sta (dst),y + // for(char* dst = str; dst!=end; dst++) + // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc.z dst + bne !+ + inc.z dst+1 + !: + jmp __b2 +} + // memcpy +// Copy block of memory (forwards) +// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. +memcpy: { + .label destination = $400 + .label source = $400+$28 + .const num = $28*$19-$28 + .label src_end = source+num + .label dst = 2 + .label src = $19 + // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + lda #destination + sta.z dst+1 + // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + lda #source + sta.z src+1 + // memcpy::@1 + __b1: + // while(src!=src_end) + // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + lda.z src+1 + cmp #>src_end + bne __b2 + lda.z src + cmp #memcpy::@1] + // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + jmp __b1 +} + // printf_str +// Print a zero-terminated string +// Handles escape codes such as newline +// printf_str(byte* zp($c) str) +printf_str: { + .label ch = 5 + .label str = $c + // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + // printf_str::@1 + // printf_str::@2 + __b2: + // ch = *str++ + // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta.z ch + // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // if(ch==0) + // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 + lda.z ch + cmp #0 + bne __b3 + // printf_str::@return + // } + // [109] return + rts + // printf_str::@3 + __b3: + // if(ch=='\n') + // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #'\n' + cmp.z ch + beq __b4 + // printf_str::@5 + // printf_char(ch) + // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + // [112] call printf_char + // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + jsr printf_char + jmp __b2 + // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + // printf_str::@4 + __b4: + // printf_ln() + // [114] call printf_ln + jsr printf_ln + jmp __b2 +} + // printf_ln +// Print a newline +printf_ln: { + .label __0 = $12 + .label __1 = $12 + // printf_cursor_ptr - printf_cursor_x + // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 + sec + lda.z __0 + sbc.z printf_cursor_x + sta.z __0 + bcs !+ + dec.z __0+1 + !: + // printf_cursor_ptr - printf_cursor_x + PRINTF_SCREEN_WIDTH + // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + lda #$28 + clc + adc.z __1 + sta.z __1 + bcc !+ + inc.z __1+1 + !: + // printf_cursor_ptr = printf_cursor_ptr - printf_cursor_x + PRINTF_SCREEN_WIDTH + // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + // printf_cursor_x = 0 + // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // printf_cursor_y++; + // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + inc.z printf_cursor_y + // printf_scroll() + // [120] call printf_scroll + jsr printf_scroll + // printf_ln::@return + // } + // [121] return + rts +} + // strupr +// Converts a string to uppercase. +// strupr(byte* zp($19) str) +strupr: { + .label __0 = 4 + .label src = $19 + .label str = $19 + // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + // strupr::@1 + __b1: + // while(*src) + // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (src),y + cmp #0 + bne __b2 + // strupr::@return + // } + // [125] return + rts + // strupr::@2 + __b2: + // toupper(*src) + // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (src),y + sta.z toupper.ch + // [127] call toupper + jsr toupper + // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 + // strupr::@3 + // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 + // *src = toupper(*src) + // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 + lda.z __0 + ldy #0 + sta (src),y + // src++; + // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + inc.z src + bne !+ + inc.z src+1 + !: + jmp __b1 +} + // toupper +// Convert lowercase alphabet to uppercase +// Returns uppercase equivalent to c, if such value exists, else c remains unchanged +// toupper(byte zp(4) ch) +toupper: { + .label return = 4 + .label ch = 4 + // if(ch>='a' && ch<='z') + // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 + lda.z ch + cmp #'a' + bcc __breturn + // toupper::@2 + // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 + lda #'z' + cmp.z ch + bcs __b1 + // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + rts + // toupper::@1 + __b1: + // return ch + ('A'-'a'); + // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 + lax.z return + axs #-['A'-'a'] + stx.z return + // toupper::@return + __breturn: + // } + // [136] return + rts +} + // strlen +// Computes the length of the string str up to but not including the terminating null character. +// strlen(byte* zp($19) str) +strlen: { + .label len = 2 + .label str = $19 + .label return = 2 + // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + lda #<0 + sta.z len + sta.z len+1 + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + // strlen::@1 + __b1: + // while(*str) + // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + ldy #0 + lda (str),y + cmp #0 + bne __b2 + // strlen::@return + // } + // [140] return + rts + // strlen::@2 + __b2: + // len++; + // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + inc.z len + bne !+ + inc.z len+1 + !: + // str++; + // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + inc.z str + bne !+ + inc.z str+1 + !: + // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + jmp __b1 +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($c) value, byte* zp(2) buffer) +utoa: { + .const max_digits = 5 + .label __10 = $1b + .label __11 = $18 + .label digit_value = $19 + .label buffer = 2 + .label digit = $f + .label value = $c + .label started = $1d + // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // utoa::@1 + __b1: + // for( char digit=0; digit= digit_value) + // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + // utoa::@7 + // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + // utoa::@4 + __b4: + // for( char digit=0; digitutoa::@1] + // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // utoa_append(buffer++, value, digit_value) + // [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 + // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + jsr utoa_append + // utoa_append(buffer++, value, digit_value) + // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + // utoa::@6 + // value = utoa_append(buffer++, value, digit_value) + // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 + // value = utoa_append(buffer++, value, digit_value); + // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp(2) buffer, word zp($c) value, word zp($19) sub) +utoa_append: { + .label buffer = 2 + .label value = $c + .label sub = $19 + .label return = $c + .label digit = $18 + // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + // utoa_append::@1 + __b1: + // while (value >= sub) + // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + // utoa_append::@3 + // *buffer = DIGITS[digit] + // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // utoa_append::@return + // } + // [168] return + rts + // utoa_append::@2 + __b2: + // digit++; + // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // value -= sub + // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) + // [172] call memset + // [88] phi from printf_cls to memset [phi:printf_cls->memset] + // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + // printf_cls::@1 + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // printf_cursor_x = 0 + // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + sta.z printf_cursor_y + // printf_cls::@return + // } + // [176] return + rts +} + // queen +// 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. +// queen(byte zp($1b) row) +queen: { + .const OFFSET_STACK_ROW = 0 + .label r = $1b + .label column = $1c + .label __1 = $f + .label __4 = $1b + .label row = $1b + // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 + tsx + lda STACK_BASE+OFFSET_STACK_ROW,x + sta.z row + // r = row + // [178] (byte) queen::r ← (byte) queen::row#0 + // column=1 + // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 + lda #1 + sta.z column + // queen::@1 + __b1: + // for(__ma char column=1;column<=QUEENS;++column) + // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z column + cmp #8+1 + bcc __b2 + // queen::@return + // } + // [181] return + rts + // queen::@2 + __b2: + // legal(r,column) + // [182] (byte) legal::row#0 ← (byte) queen::r + // [183] (byte) legal::column#0 ← (byte) queen::column + // [184] call legal + // [294] phi from queen::@2 to legal [phi:queen::@2->legal] + jsr legal + // legal(r,column) + // [185] (byte) legal::return#0 ← (byte) legal::return#4 + // queen::@7 + // [186] (byte~) queen::$1 ← (byte) legal::return#0 + // if(legal(r,column)) + // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 + lda #0 + cmp.z __1 + beq __b3 + // queen::@5 + // board[r]=column + // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 + //no conflicts so place queen + lda.z column + ldy.z r + sta board,y + // if(r==QUEENS) + // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 + lda #8 + cmp.z r + beq __b4 + // queen::@6 + // asm + // asm { ldacolumn pha ldar pha } + // Perform recussive placement on rows above + // Push the local vars on the stack (waiting for proper recursion support) + lda column + pha + tya + pha + // r+1 + // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz1_plus_1 + inc.z __4 + // queen(r+1) + // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 + // Do recursion + lda.z __4 + pha + // [193] callexecute queen -- jsr + jsr queen + // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 + pla + // asm + // asm { pla star pla stacolumn } + // Pop the local vars on the stack (waiting for proper recursion support) + pla + sta r + pla + sta column + // queen::@3 + __b3: + // for(__ma char column=1;column<=QUEENS;++column) + // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 + inc.z column + jmp __b1 + // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] + // queen::@4 + __b4: + // print() + // [198] call print + // we are done! Print the board configuration + jsr print + jmp __b3 +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $e + .label i1 = $e + .label j = $23 + // printf("\n#%lu:\n ",++count); + // [199] (dword) count ← ++ (dword) count -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // printf("\n#%lu:\n ",++count) + // [200] call printf_str + // [104] phi from print to printf_str [phi:print->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + // print::@11 + // printf("\n#%lu:\n ",++count) + // [201] (dword) printf_ulong::uvalue#0 ← (dword) count -- vduz1=vduz2 + lda.z count + sta.z printf_ulong.uvalue + lda.z count+1 + sta.z printf_ulong.uvalue+1 + lda.z count+2 + sta.z printf_ulong.uvalue+2 + lda.z count+3 + sta.z printf_ulong.uvalue+3 + // [202] call printf_ulong + // [259] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + jsr printf_ulong + // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + // print::@12 + // printf("\n#%lu:\n ",++count) + // [204] call printf_str + // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + // print::@1 + __b1: + // for(char i=1;i<=QUEENS;++i) + // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + // print::@3 + __b3: + // for(char i=1;i<=QUEENS;++i) + // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4 + // print::@return + // } + // [209] return + rts + // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + // print::@4 + __b4: + // printf("\n%x",i) + // [211] call printf_str + // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + // print::@14 + // printf("\n%x",i) + // [212] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 + // [213] call printf_uchar + // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + // print::@5 + __b5: + // for(char j=1;j<=QUEENS;++j) + // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + // print::@7 + // for(char i=1;i<=QUEENS;++i) + // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // if(board[i]==j) + // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8 + // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + // print::@10 + // printf("-") + // [219] call printf_str + // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + // print::@9 + __b9: + // for(char j=1;j<=QUEENS;++j) + // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + // print::@8 + __b8: + // printf("Q") + // [222] call printf_str + // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] + // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // printf("%x",i) + // [223] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 + // [224] call printf_uchar + // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + // [226] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + // print::@13 + // for(char i=1;i<=QUEENS;++i) + // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte zp($e) uvalue) +printf_uchar: { + .label uvalue = $e + // printf_uchar::@1 + // printf_buffer.sign = format.sign_always?'+':0 + // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // uctoa(uvalue, printf_buffer.digits, format.radix) + // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 -- vbuz1=vbuz2 + lda.z uvalue + sta.z uctoa.value + // [229] call uctoa + // Format number into buffer + // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + jsr uctoa + // printf_uchar::@2 + // printf_number_buffer(printf_buffer, format) + // [230] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [231] call printf_number_buffer + // Print using format + // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // printf_uchar::@return + // } + // [232] return + rts +} + // uctoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// uctoa(byte zp(4) value, byte* zp($c) buffer) +uctoa: { + .label digit_value = $1d + .label buffer = $c + .label digit = $22 + .label value = 4 + .label started = 5 + // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + sta.z digit + // uctoa::@1 + __b1: + // for( char digit=0; digit= digit_value) + // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + // uctoa::@7 + // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z digit_value + bcs __b5 + // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + // uctoa::@4 + __b4: + // for( char digit=0; digituctoa::@1] + // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + jmp __b1 + // uctoa::@5 + __b5: + // uctoa_append(buffer++, value, digit_value) + // [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 + // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + jsr uctoa_append + // uctoa_append(buffer++, value, digit_value) + // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 + // uctoa::@6 + // value = uctoa_append(buffer++, value, digit_value) + // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + // value = uctoa_append(buffer++, value, digit_value); + // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + jmp __b4 +} + // uctoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// uctoa_append(byte* zp($c) buffer, byte zp(4) value, byte zp($1d) sub) +uctoa_append: { + .label buffer = $c + .label value = 4 + .label sub = $1d + .label return = 4 + .label digit = 6 + // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + // uctoa_append::@1 + __b1: + // while (value >= sub) + // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 + lda.z value + cmp.z sub + bcs __b2 + // uctoa_append::@3 + // *buffer = DIGITS[digit] + // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // uctoa_append::@return + // } + // [256] return + rts + // uctoa_append::@2 + __b2: + // digit++; + // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // value -= sub + // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + lda.z value + sec + sbc.z sub + sta.z value + // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp(8) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 8 + // printf_ulong::@1 + // printf_buffer.sign = format.sign_always?'+':0 + // [260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // ultoa(uvalue, printf_buffer.digits, format.radix) + // [261] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 + // [262] call ultoa + // Format number into buffer + // [266] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + jsr ultoa + // printf_ulong::@2 + // printf_number_buffer(printf_buffer, format) + // [263] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [264] call printf_number_buffer + // Print using format + // [26] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [26] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + // printf_ulong::@return + // } + // [265] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp(8) value, byte* zp($c) buffer) +ultoa: { + .const max_digits = $a + .label __10 = $22 + .label __11 = $1d + .label digit_value = $1e + .label buffer = $c + .label digit = 7 + .label value = 8 + .label started = $f + // [267] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + // [267] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [267] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + sta.z digit + // ultoa::@1 + __b1: + // for( char digit=0; digit= digit_value) + // [276] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + // ultoa::@7 + // [277] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [278] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + // ultoa::@4 + __b4: + // for( char digit=0; digitultoa::@1] + // [267] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [267] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [267] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [267] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // ultoa_append(buffer++, value, digit_value) + // [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 + // [287] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + jsr ultoa_append + // ultoa_append(buffer++, value, digit_value) + // [284] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + // ultoa::@6 + // value = ultoa_append(buffer++, value, digit_value) + // [285] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + // value = ultoa_append(buffer++, value, digit_value); + // [286] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [278] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + // [278] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [278] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [278] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($c) buffer, dword zp(8) value, dword zp($1e) sub) +ultoa_append: { + .label buffer = $c + .label value = 8 + .label sub = $1e + .label return = 8 + .label digit = $1d + // [288] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + // [288] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + // ultoa_append::@1 + __b1: + // while (value >= sub) + // [289] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + // ultoa_append::@3 + // *buffer = DIGITS[digit] + // [290] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + // ultoa_append::@return + // } + // [291] return + rts + // ultoa_append::@2 + __b2: + // digit++; + // [292] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // value -= sub + // [293] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [288] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] + // [288] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [288] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy + jmp __b1 +} + // legal +// 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 +// legal(byte zp($1b) row, byte zp($1c) column) +legal: { + .label __0 = $22 + .label __3 = $23 + .label __4 = $1d + .label row = $1b + .label column = $1c + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return = $f + .label i = $e + // [295] phi from legal to legal::@1 [phi:legal->legal::@1] + // [295] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + // legal::@1 + __b1: + // row-1 + // [296] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + ldx.z row + dex + stx.z __0 + // for(char i=1;i<=row-1;++i) + // [297] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuz1_le_vbuz2_then_la1 + txa + cmp.z i + bcs __b2 + // [298] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] + // [298] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuz1=vbuc1 + lda #1 + sta.z return + rts + // [298] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] + __b4: + // [298] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuz1=vbuc1 + lda #0 + sta.z return + // legal::@return + // } + // [299] return + rts + // legal::@2 + __b2: + // if(board[i]==column) + // [300] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i + lda board,y + cmp.z column + beq __b4 + // legal::@4 + // diff(board[i],column) + // [301] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + lda board,y + sta.z diff.a + // [302] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuz1=vbuz2 + lda.z column + sta.z diff.b + // [303] call diff + // [313] phi from legal::@4 to diff [phi:legal::@4->diff] + // [313] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy + jsr diff + // diff(board[i],column) + // [304] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 + lda.z diff.return_1 + sta.z diff.return + // legal::@5 + // [305] (byte~) legal::$3 ← (byte) diff::return#0 + // diff(i,row) + // [306] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuz1=vbuz2 + lda.z i + sta.z diff.a + // [307] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuz1=vbuz2 + lda.z row + sta.z diff.b + // [308] call diff + // [313] phi from legal::@5 to diff [phi:legal::@5->diff] + // [313] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [313] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy + jsr diff + // diff(i,row) + // [309] (byte) diff::return#1 ← (byte) diff::return#4 + // legal::@6 + // [310] (byte~) legal::$4 ← (byte) diff::return#1 + // if(diff(board[i],column)==diff(i,row)) + // [311] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuz2_then_la1 + lda.z __3 + cmp.z __4 + bne __b3 + jmp __b4 + // legal::@3 + __b3: + // for(char i=1;i<=row-1;++i) + // [312] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [295] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] + // [295] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy + jmp __b1 +} + // diff +// Find the absolute difference between two unsigned chars +// diff(byte zp($1d) a, byte zp($18) b) +diff: { + .label a = $1d + .label b = $18 + .label return = $23 + .label return_1 = $1d + // if(adiff::@return] + // [316] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + // diff::@return + // } + // [317] return + rts + // diff::@1 + __b1: + // return b-a; + // [318] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz1 + lda.z b + sec + sbc.z return_1 + sta.z return_1 + rts +} + // File Data + // The digits used for numbers + DIGITS: .text "0123456789abcdef" + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 + // Values of decimal digits + RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. + board: .fill $14, 0 + // Buffer used for stringified number being printed + printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 + diff --git a/src/test/ref/examples/eightqueens/eightqueens-recursive.sym b/src/test/ref/examples/eightqueens/eightqueens-recursive.sym new file mode 100644 index 000000000..751601b68 --- /dev/null +++ b/src/test/ref/examples/eightqueens/eightqueens-recursive.sym @@ -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 ] diff --git a/src/test/ref/examples/eightqueens/eightqueens.asm b/src/test/ref/examples/eightqueens/eightqueens.asm index 21b828d49..bdf514667 100644 --- a/src/test/ref/examples/eightqueens/eightqueens.asm +++ b/src/test/ref/examples/eightqueens/eightqueens.asm @@ -1,20 +1,18 @@ // 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. .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 - .const STACK_BASE = $103 .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c - .label printf_cursor_x = $c - .label printf_cursor_y = $d - .label printf_cursor_ptr = $e - .label count = $10 + .label printf_cursor_x = $17 + .label printf_cursor_y = $18 + .label printf_cursor_ptr = $19 + // The number of found solutions + .label count = 2 __bbegin: // printf_cursor_x = 0 // X-position of cursor @@ -29,90 +27,249 @@ __bbegin: sta.z printf_cursor_ptr lda #>$400 sta.z printf_cursor_ptr+1 - // count - lda #0 - sta.z count jsr main rts main: { // printf_cls() jsr printf_cls - // printf(" - N Queens Problem Using Backtracking -") + // printf(" - n queens problem using backtracking -") lda #str sta.z printf_str.str+1 jsr printf_str - // printf("\n\nNumber of Queens:%u",N) + // printf("\nNumber of queens:%u",QUEENS) lda #str1 sta.z printf_str.str+1 jsr printf_str - // printf("\n\nNumber of Queens:%u",N) + // printf("\nNumber of queens:%u",QUEENS) jsr printf_uint - // queen(1) - lda #1 - pha - jsr queen - pla + // queens() + jsr queens // } rts - str: .text " - N Queens Problem Using Backtracking -" + str: .text " - n queens problem using backtracking -" .byte 0 - str1: .text @"\n\nNumber of Queens:" + str1: .text @"\nNumber of queens:" .byte 0 } -// Print an unsigned int using a specific format -printf_uint: { - .label uvalue = 8 - .const format_min_length = 0 - .const format_justify_left = 0 - .const format_zero_padding = 0 - .const format_upper_case = 0 +// 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 +queens: { + // The current row where the queen is moving + .label row = $12 + lda #<0 + sta.z count + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + lda #1 + sta.z row + __b2: + // board[row]++; + ldx.z row + inc board,x + // if(board[row]==QUEENS+1) + ldy.z row + lda board,y + cmp #8+1 + beq __b3 + // legal(row, board[row]) + lda board,y + sta.z legal.column + jsr legal + // legal(row, board[row]) + // if(legal(row, board[row])) + // check if the current position on row 1-row is legal + cmp #0 + bne __b4 + jmp __b2 + __b4: + // if(row==QUEENS) + // position is legal - move up to the next row + lda #8 + cmp.z row + beq __b5 + // row++; + inc.z row + jmp __b2 + __b5: + // print() + // We have a complete legal board - print it! + jsr print + jmp __b2 + __b3: + // board[row] = 0 + // We moved past the end of the row - reset position and go down to the lower row + lda #0 + ldy.z row + sta board,y + // if(row==1) + lda #1 + cmp.z row + beq __breturn + // row--; + dec.z row + jmp __b2 + __breturn: + // } + rts +} +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $1b + .label i1 = $21 + .label j = 6 + // printf("\n#%lu:\n ",++count); + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // printf("\n#%lu:\n ",++count) + lda #str + sta.z printf_str.str+1 + jsr printf_str + // printf("\n#%lu:\n ",++count) + jsr printf_ulong + // printf("\n#%lu:\n ",++count) + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + lda #1 + sta.z i + __b1: + // for(char i=1;i<=QUEENS;++i) + lda.z i + cmp #8+1 + bcc __b2 + lda #1 + sta.z i1 + __b3: + // for(char i=1;i<=QUEENS;++i) + lda.z i1 + cmp #8+1 + bcc __b4 + // } + rts + __b4: + // printf("\n%x",i) + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + // printf("\n%x",i) + ldx.z i1 + jsr printf_uchar + lda #1 + sta.z j + __b5: + // for(char j=1;j<=QUEENS;++j) + lda.z j + cmp #8+1 + bcc __b6 + // for(char i=1;i<=QUEENS;++i) + inc.z i1 + jmp __b3 + __b6: + // if(board[i]==j) + ldy.z i1 + lda board,y + cmp.z j + beq __b8 + // printf("-") + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + __b9: + // for(char j=1;j<=QUEENS;++j) + inc.z j + jmp __b5 + __b8: + // printf("Q") + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + __b2: + // printf("%x",i) + ldx.z i + jsr printf_uchar + // for(char i=1;i<=QUEENS;++i) + inc.z i + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} +// Print an unsigned char using a specific format +// printf_uchar(byte register(X) uvalue) +printf_uchar: { // printf_buffer.sign = format.sign_always?'+':0 // Handle any sign lda #0 sta printf_buffer - // utoa(uvalue, printf_buffer.digits, format.radix) + // uctoa(uvalue, printf_buffer.digits, format.radix) // Format number into buffer - jsr utoa + jsr uctoa // printf_number_buffer(printf_buffer, format) lda printf_buffer sta.z printf_number_buffer.buffer_sign // Print using format - lda #format_upper_case + lda #0 sta.z printf_number_buffer.format_upper_case lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z printf_number_buffer.buffer_digits+1 - lda #format_zero_padding + lda #0 sta.z printf_number_buffer.format_zero_padding - lda #format_justify_left sta.z printf_number_buffer.format_justify_left - lda #format_min_length - sta.z printf_number_buffer.format_min_length + tax jsr printf_number_buffer // } rts } // Print the contents of the number buffer using a specific format. // This handles minimum length, zero-filling, and left/right justification from the format -// printf_number_buffer(byte zp($12) buffer_sign, byte* zp(2) buffer_digits, byte zp($17) format_min_length, byte zp($18) format_justify_left, byte zp($11) format_zero_padding, byte zp(6) format_upper_case) +// printf_number_buffer(byte zp($d) buffer_sign, byte* zp($13) buffer_digits, byte register(X) format_min_length, byte zp($b) format_justify_left, byte zp($c) format_zero_padding, byte zp($1c) format_upper_case) printf_number_buffer: { - .label __19 = 4 - .label buffer_sign = $12 - .label len = 7 - .label padding = $17 - .label format_min_length = $17 - .label format_zero_padding = $11 - .label format_justify_left = $18 - .label buffer_digits = 2 - .label format_upper_case = 6 + .label __19 = $22 + .label buffer_sign = $d + .label padding = 7 + .label format_zero_padding = $c + .label format_justify_left = $b + .label buffer_digits = $13 + .label format_upper_case = $1c // if(format.min_length) - lda #0 - cmp.z format_min_length + cpx #0 beq __b6 // strlen(buffer.digits) lda.z buffer_digits @@ -124,18 +281,19 @@ printf_number_buffer: { // len = (signed char)strlen(buffer.digits) // There is a minimum length - work out the padding lda.z __19 - sta.z len + tay // if(buffer.sign) lda #0 cmp.z buffer_sign beq __b13 // len++; - inc.z len + iny __b13: // padding = (signed char)format.min_length - len - lda.z padding + txa + sty.z $ff sec - sbc.z len + sbc.z $ff sta.z padding // if(padding<0) cmp #0 @@ -167,7 +325,6 @@ printf_number_buffer: { beq __b3 // printf_char(buffer.sign) lda.z buffer_sign - sta.z printf_char.ch jsr printf_char __b3: // if(format.zero_padding && padding) @@ -219,11 +376,11 @@ printf_number_buffer: { rts } // Print a padding char a number of times -// printf_padding(byte zp(8) pad, byte zp(7) length) +// printf_padding(byte zp(9) pad, byte zp(8) length) printf_padding: { - .label i = 9 - .label length = 7 - .label pad = 8 + .label i = $a + .label length = 8 + .label pad = 9 lda #0 sta.z i __b1: @@ -235,6 +392,7 @@ printf_padding: { rts __b2: // printf_char(pad) + lda.z pad jsr printf_char // for(char i=0;i$400+$28*$19-$28 @@ -307,13 +462,12 @@ printf_scroll: { rts } // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp(4) str, byte zp($a) c, word zp($13) num) +// memset(void* zp($22) str, byte register(X) c, word zp($15) num) memset: { - .label end = $13 - .label dst = 4 - .label num = $13 - .label str = 4 - .label c = $a + .label end = $15 + .label dst = $22 + .label num = $15 + .label str = $22 // if(num>0) lda.z num bne !+ @@ -341,7 +495,7 @@ memset: { rts __b3: // *dst = c - lda.z c + txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) @@ -358,8 +512,8 @@ memcpy: { .label source = $400+$28 .const num = $28*$19-$28 .label src_end = source+num - .label dst = 4 - .label src = $13 + .label dst = $22 + .label src = $15 lda #destination @@ -396,29 +550,25 @@ memcpy: { } // Print a zero-terminated string // Handles escape codes such as newline -// printf_str(byte* zp(2) str) +// printf_str(byte* zp($13) str) printf_str: { - .label ch = 8 - .label str = 2 + .label str = $13 __b2: // ch = *str++ ldy #0 lda (str),y - sta.z ch inc.z str bne !+ inc.z str+1 !: // if(ch==0) - lda.z ch cmp #0 bne __b3 // } rts __b3: // if(ch=='\n') - lda #'\n' - cmp.z ch + cmp #'\n' beq __b4 // printf_char(ch) jsr printf_char @@ -430,8 +580,8 @@ printf_str: { } // Print a newline printf_ln: { - .label __0 = $e - .label __1 = $e + .label __0 = $19 + .label __1 = $19 // printf_cursor_ptr - printf_cursor_x sec lda.z __0 @@ -460,11 +610,10 @@ printf_ln: { rts } // Converts a string to uppercase. -// strupr(byte* zp($13) str) +// strupr(byte* zp($15) str) strupr: { - .label __0 = 7 - .label src = $13 - .label str = $13 + .label src = $15 + .label str = $15 __b1: // while(*src) ldy #0 @@ -477,10 +626,8 @@ strupr: { // toupper(*src) ldy #0 lda (src),y - sta.z toupper.ch jsr toupper // *src = toupper(*src) - lda.z __0 ldy #0 sta (src),y // src++; @@ -492,33 +639,29 @@ strupr: { } // Convert lowercase alphabet to uppercase // Returns uppercase equivalent to c, if such value exists, else c remains unchanged -// toupper(byte zp(7) ch) +// toupper(byte register(A) ch) toupper: { - .label return = 7 - .label ch = 7 // if(ch>='a' && ch<='z') - lda.z ch cmp #'a' bcc __breturn - lda #'z' - cmp.z ch - bcs __b1 + cmp #'z' + bcc __b1 + beq __b1 rts __b1: // return ch + ('A'-'a'); - lax.z return - axs #-['A'-'a'] - stx.z return + clc + adc #'A'-'a' __breturn: // } rts } // Computes the length of the string str up to but not including the terminating null character. -// strlen(byte* zp($13) str) +// strlen(byte* zp($15) str) strlen: { - .label len = 4 - .label str = $13 - .label return = 4 + .label len = $22 + .label str = $15 + .label return = $22 lda #<0 sta.z len sta.z len+1 @@ -548,378 +691,12 @@ strlen: { // - value : The number to be converted to RADIX // - buffer : receives the string representing the number and zero-termination. // - radix : The radix to convert the number to (from the enum RADIX) -// utoa(word zp(2) value, byte* zp(4) buffer) -utoa: { - .const max_digits = 5 - .label __10 = $12 - .label __11 = $11 - .label digit_value = $13 - .label buffer = 4 - .label digit = $17 - .label value = 2 - .label started = $18 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z buffer+1 - lda #0 - sta.z started - lda #printf_uint.uvalue - sta.z value+1 - lda #0 - sta.z digit - __b1: - // for( char digit=0; digit= digit_value) - lda #0 - cmp.z started - bne __b5 - lda.z digit_value+1 - cmp.z value+1 - bne !+ - lda.z digit_value - cmp.z value - beq __b5 - !: - bcc __b5 - __b4: - // for( char digit=0; digit= sub) - lda.z sub+1 - cmp.z value+1 - bne !+ - lda.z sub - cmp.z value - beq __b2 - !: - bcc __b2 - // *buffer = DIGITS[digit] - ldy.z digit - lda DIGITS,y - ldy #0 - sta (buffer),y - // } - rts - __b2: - // digit++; - inc.z digit - // value -= sub - lda.z value - sec - sbc.z sub - sta.z value - lda.z value+1 - sbc.z sub+1 - sta.z value+1 - jmp __b1 -} -// Clear the screen. Also resets current line/char cursor. -printf_cls: { - // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) - lda #' ' - sta.z memset.c - lda #<$400 - sta.z memset.str - lda #>$400 - sta.z memset.str+1 - lda #<$28*$19 - sta.z memset.num - lda #>$28*$19 - sta.z memset.num+1 - jsr memset - // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS - lda #<$400 - sta.z printf_cursor_ptr - lda #>$400 - sta.z printf_cursor_ptr+1 - // printf_cursor_x = 0 - lda #0 - sta.z printf_cursor_x - // printf_cursor_y = 0 - sta.z printf_cursor_y - // } - rts -} -// Function to check for proper positioning of queen -// queen(byte zp($15) row) -queen: { - .const OFFSET_STACK_ROW = 0 - .label r = $15 - .label column = $16 - .label __1 = $b - .label __4 = $15 - .label row = $15 - tsx - lda STACK_BASE+OFFSET_STACK_ROW,x - sta.z row - // r = row - // column=1 - lda #1 - sta.z column - __b1: - // for(__ma char column=1;column<=N;++column) - lda.z column - cmp #8+1 - bcc __b2 - // } - rts - __b2: - // place(r,column) - jsr place - // place(r,column) - // if(place(r,column)) - lda #0 - cmp.z __1 - beq __b3 - // board[r]=column - lda.z column - ldy.z r - sta board,y - // if(r==N) - //no conflicts so place queen - lda #8 - cmp.z r - beq __b4 - // asm - // Push the local vars on the stack (waiting for proper recursion support) - lda column - pha - tya - pha - // r+1 - inc.z __4 - // queen(r+1) - //try queen with next position - lda.z __4 - pha - jsr queen - pla - // asm - // Pop the local vars on the stack (waiting for proper recursion support) - pla - sta r - pla - sta column - __b3: - // for(__ma char column=1;column<=N;++column) - inc.z column - jmp __b1 - __b4: - // print() - //dead end - jsr print - jmp __b3 -} -//function for printing the solution -print: { - .label i = $b - .label i1 = $b - .label j = $12 - // printf("\nSolution %u:\n ",++count); - inc.z count - // printf("\nSolution %u:\n ",++count) - lda #str - sta.z printf_str.str+1 - jsr printf_str - // printf("\nSolution %u:\n ",++count) - lda.z count - sta.z printf_uchar.uvalue - jsr printf_uchar - // printf("\nSolution %u:\n ",++count) - lda #str1 - sta.z printf_str.str+1 - jsr printf_str - lda #1 - sta.z i - __b1: - // for(char i=1;i<=N;++i) - lda.z i - cmp #8+1 - bcc __b2 - lda #1 - sta.z i1 - __b3: - // for(char i=1;i<=N;++i) - lda.z i1 - cmp #8+1 - bcc __b4 - // } - rts - __b4: - // printf("\n%u",i) - lda #str2 - sta.z printf_str.str+1 - jsr printf_str - // printf("\n%u",i) - jsr printf_uchar - lda #1 - sta.z j - __b5: - // for(char j=1;j<=N;++j) - lda.z j - cmp #8+1 - bcc __b6 - // for(char i=1;i<=N;++i) - inc.z i1 - jmp __b3 - __b6: - // if(board[i]==j) - //for nxn board - ldy.z i1 - lda board,y - cmp.z j - beq __b8 - // printf("-") - lda #str4 - sta.z printf_str.str+1 - jsr printf_str - __b9: - // for(char j=1;j<=N;++j) - inc.z j - jmp __b5 - __b8: - // printf("Q") - lda #str3 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - __b2: - // printf("%u",i) - jsr printf_uchar - // for(char i=1;i<=N;++i) - inc.z i - jmp __b1 - str: .text @"\nSolution " - .byte 0 - str1: .text @":\n " - .byte 0 - str2: .text @"\n" - .byte 0 - str3: .text "Q" - .byte 0 - str4: .text "-" - .byte 0 -} -// Print an unsigned char using a specific format -// printf_uchar(byte zp($b) uvalue) -printf_uchar: { - .label uvalue = $b - // printf_buffer.sign = format.sign_always?'+':0 - // Handle any sign - lda #0 - sta printf_buffer - // uctoa(uvalue, printf_buffer.digits, format.radix) - lda.z uvalue - sta.z uctoa.value - // Format number into buffer - jsr uctoa - // printf_number_buffer(printf_buffer, format) - lda printf_buffer - sta.z printf_number_buffer.buffer_sign - // Print using format - lda #0 - sta.z printf_number_buffer.format_upper_case - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z printf_number_buffer.buffer_digits+1 - lda #0 - sta.z printf_number_buffer.format_zero_padding - sta.z printf_number_buffer.format_justify_left - sta.z printf_number_buffer.format_min_length - jsr printf_number_buffer - // } - rts -} -// Converts unsigned number value to a string representing it in RADIX format. -// If the leading digits are zero they are not included in the string. -// - value : The number to be converted to RADIX -// - buffer : receives the string representing the number and zero-termination. -// - radix : The radix to convert the number to (from the enum RADIX) -// uctoa(byte zp(7) value, byte* zp($13) buffer) +// uctoa(byte register(X) value, byte* zp($13) buffer) uctoa: { - .label digit_value = $17 + .label digit_value = $1c .label buffer = $13 - .label digit = 6 - .label value = 7 - .label started = 8 + .label digit = $b + .label started = $c lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS @@ -930,11 +707,10 @@ uctoa: { __b1: // for( char digit=0; digit= digit_value) lda #0 cmp.z started bne __b5 - lda.z value - cmp.z digit_value + cpx.z digit_value bcs __b5 __b4: // for( char digit=0; digit= sub) - lda.z value - cmp.z sub + cpx.z sub bcs __b2 // *buffer = DIGITS[digit] - ldy.z digit lda DIGITS,y ldy #0 sta (buffer),y @@ -1009,109 +778,467 @@ uctoa_append: { rts __b2: // digit++; + iny + // value -= sub + txa + sec + sbc.z sub + tax + jmp __b1 +} +// Print an unsigned int using a specific format +// printf_ulong(dword zp(2) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 2 + // printf_buffer.sign = format.sign_always?'+':0 + // Handle any sign + lda #0 + sta printf_buffer + // ultoa(uvalue, printf_buffer.digits, format.radix) + lda.z uvalue + sta.z ultoa.value + lda.z uvalue+1 + sta.z ultoa.value+1 + lda.z uvalue+2 + sta.z ultoa.value+2 + lda.z uvalue+3 + sta.z ultoa.value+3 + // Format number into buffer + jsr ultoa + // printf_number_buffer(printf_buffer, format) + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // Print using format + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + ldx #format_min_length + jsr printf_number_buffer + // } + rts +} +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp($e) value, byte* zp($22) buffer) +ultoa: { + .const max_digits = $a + .label digit_value = $1d + .label buffer = $22 + .label digit = $d + .label value = $e + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + ldx #0 + txa + sta.z digit + __b1: + // for( char digit=0; digit= digit_value) + cpx #0 + bne __b5 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + __b4: + // for( char digit=0; digit= sub) + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + // *buffer = DIGITS[digit] + lda DIGITS,x + ldy #0 + sta (buffer),y + // } + rts + __b2: + // digit++; + inx // value -= sub lda.z value sec sbc.z sub sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 jmp __b1 } -// function to check conflicts -// If no conflict for desired postion returns 1 otherwise returns 0 -// place(byte zp($15) row, byte zp($16) column) -place: { - .label __0 = $17 - .label __3 = $18 - .label __4 = $11 - .label row = $15 - .label column = $16 - .label return = $b - .label i = $a - lda #1 - sta.z i +// 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 +// legal(byte zp($12) row, byte zp($1b) column) +legal: { + .label __3 = $21 + .label row = $12 + .label column = $1b + ldy #1 __b1: // row-1 ldx.z row dex - stx.z __0 - // for(i=1;i<=row-1;++i) - txa - cmp.z i + // for(char i=1;i<=row-1;++i) + sty.z $ff + cpx.z $ff bcs __b2 lda #1 - sta.z return rts __b4: lda #0 - sta.z return // } rts __b2: // if(board[i]==column) - //checking column and digonal conflicts - ldy.z i lda board,y cmp.z column beq __b4 // diff(board[i],column) lda board,y - sta.z diff.a - lda.z column - sta.z diff.b + ldx.z column jsr diff // diff(board[i],column) - lda.z diff.return_1 - sta.z diff.return + sta.z __3 // diff(i,row) - lda.z i - sta.z diff.a - lda.z row - sta.z diff.b + tya + ldx.z row jsr diff // diff(i,row) // if(diff(board[i],column)==diff(i,row)) - lda.z __3 - cmp.z __4 + cmp.z __3 bne __b3 jmp __b4 __b3: - // for(i=1;i<=row-1;++i) - inc.z i + // for(char i=1;i<=row-1;++i) + iny jmp __b1 } // Find the absolute difference between two unsigned chars -// diff(byte zp($11) a, byte zp($12) b) +// diff(byte register(A) a, byte register(X) b) diff: { - .label a = $11 - .label b = $12 - .label return = $18 - .label return_1 = $11 // if(aprintf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + ldx #format_min_length + jsr printf_number_buffer + // } + rts +} +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($13) value, byte* zp($15) buffer) +utoa: { + .const max_digits = 5 + .label digit_value = $22 + .label buffer = $15 + .label digit = $12 + .label value = $13 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + ldx #0 + lda #printf_uint.uvalue + sta.z value+1 + txa + sta.z digit + __b1: + // for( char digit=0; digit= digit_value) + cpx #0 + bne __b5 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + __b4: + // for( char digit=0; digit= sub) + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + // *buffer = DIGITS[digit] + lda DIGITS,x + ldy #0 + sta (buffer),y + // } + rts + __b2: + // digit++; + inx + // value -= sub + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + jmp __b1 +} +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) + ldx #' ' + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // printf_cursor_x = 0 + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + sta.z printf_cursor_y + // } rts } // The digits used for numbers DIGITS: .text "0123456789abcdef" - // Values of decimal digits - RADIX_DECIMAL_VALUES_CHAR: .byte $64, $a + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 // Values of decimal digits RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. board: .fill $14, 0 // Buffer used for stringified number being printed printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 diff --git a/src/test/ref/examples/eightqueens/eightqueens.cfg b/src/test/ref/examples/eightqueens/eightqueens.cfg index 500395ce8..0bd3b1851 100644 --- a/src/test/ref/examples/eightqueens/eightqueens.cfg +++ b/src/test/ref/examples/eightqueens/eightqueens.cfg @@ -7,655 +7,735 @@ [3] (byte*) printf_cursor_ptr ← (byte*) 1024 to:@2 @2: scope:[] from @1 - [4] (byte) count ← (byte) 0 - to:@3 -@3: scope:[] from @2 - [5] phi() - [6] call main + [4] phi() + [5] call main to:@end -@end: scope:[] from @3 - [7] phi() +@end: scope:[] from @2 + [6] phi() (void()) main() -main: scope:[main] from @3 - [8] phi() - [9] call printf_cls +main: scope:[main] from @2 + [7] phi() + [8] call printf_cls to:main::@1 main::@1: scope:[main] from main - [10] phi() - [11] call printf_str + [9] phi() + [10] call printf_str to:main::@2 main::@2: scope:[main] from main::@1 - [12] phi() - [13] call printf_str + [11] phi() + [12] call printf_str to:main::@3 main::@3: scope:[main] from main::@2 - [14] phi() - [15] call printf_uint + [13] phi() + [14] 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) + [15] phi() + [16] call queens to:main::@return main::@return: scope:[main] from main::@4 - [19] return + [17] 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#0 ← *((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 +(void()) queens() +queens: scope:[queens] from main::@4 + [18] phi() + to:queens::@1 +queens::@1: scope:[queens] from queens queens::@5 queens::@6 queens::@8 queens::@9 + [19] (dword) count#11 ← phi( queens/(dword) 0 queens::@5/(dword) count#13 queens::@6/(dword) count#11 queens::@8/(dword) count#11 queens::@9/(dword) count#11 ) + [19] (byte) queens::row#10 ← phi( queens/(byte) 1 queens::@5/(byte) queens::row#10 queens::@6/(byte) queens::row#1 queens::@8/(byte) queens::row#2 queens::@9/(byte) queens::row#10 ) + to:queens::@2 +queens::@2: scope:[queens] from queens::@1 + [20] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10) + [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 + to:queens::@7 +queens::@7: scope:[queens] from queens::@2 + [22] (byte) legal::row#0 ← (byte) queens::row#10 + [23] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10) + [24] call legal + [25] (byte) legal::return#0 ← (byte) legal::return#4 + to:queens::@9 +queens::@9: scope:[queens] from queens::@7 + [26] (byte~) queens::$2 ← (byte) legal::return#0 + [27] if((byte) 0!=(byte~) queens::$2) goto queens::@4 + to:queens::@1 +queens::@4: scope:[queens] from queens::@9 + [28] if((byte) queens::row#10==(byte) 8) goto queens::@5 + to:queens::@6 +queens::@6: scope:[queens] from queens::@4 + [29] (byte) queens::row#1 ← ++ (byte) queens::row#10 + to:queens::@1 +queens::@5: scope:[queens] from queens::@4 + [30] phi() + [31] call print + to:queens::@1 +queens::@3: scope:[queens] from queens::@2 + [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 + [33] if((byte) queens::row#10==(byte) 1) goto queens::@return + to:queens::@8 +queens::@8: scope:[queens] from queens::@3 + [34] (byte) queens::row#2 ← -- (byte) queens::row#10 + to:queens::@1 +queens::@return: scope:[queens] from queens::@3 + [35] return + to:@return + +(void()) print() +print: scope:[print] from queens::@5 + [36] (dword) count#13 ← ++ (dword) count#11 + [37] call printf_str + to:print::@11 +print::@11: scope:[print] from print + [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 + [39] call printf_ulong + to:print::@12 +print::@12: scope:[print] from print::@11 + [40] phi() + [41] call printf_str + to:print::@1 +print::@1: scope:[print] from print::@12 print::@13 + [42] (byte) print::i#2 ← phi( print::@12/(byte) 1 print::@13/(byte) print::i#1 ) + [43] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 + to:print::@3 +print::@3: scope:[print] from print::@1 print::@7 + [44] (byte) print::i1#2 ← phi( print::@1/(byte) 1 print::@7/(byte) print::i1#1 ) + [45] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 + to:print::@return +print::@return: scope:[print] from print::@3 + [46] return + to:@return +print::@4: scope:[print] from print::@3 + [47] phi() + [48] call printf_str + to:print::@14 +print::@14: scope:[print] from print::@4 + [49] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 + [50] call printf_uchar + to:print::@5 +print::@5: scope:[print] from print::@14 print::@9 + [51] (byte) print::j#2 ← phi( print::@9/(byte) print::j#1 print::@14/(byte) 1 ) + [52] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 + to:print::@7 +print::@7: scope:[print] from print::@5 + [53] (byte) print::i1#1 ← ++ (byte) print::i1#2 + to:print::@3 +print::@6: scope:[print] from print::@5 + [54] 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 + [55] phi() + [56] call printf_str + to:print::@9 +print::@9: scope:[print] from print::@10 print::@8 + [57] (byte) print::j#1 ← ++ (byte) print::j#2 + to:print::@5 +print::@8: scope:[print] from print::@6 + [58] phi() + [59] call printf_str + to:print::@9 +print::@2: scope:[print] from print::@1 + [60] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 + [61] call printf_uchar + to:print::@13 +print::@13: scope:[print] from print::@2 + [62] (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 + [63] (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 + [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [65] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 + [66] call uctoa + to:printf_uchar::@2 +printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1 + [67] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [68] call printf_number_buffer + to:printf_uchar::@return +printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2 + [69] 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 - [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 ) - [26] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uchar::@2/(byte) printf_number_buffer::buffer_sign#1 printf_uint::@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 ) - [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 ) - [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 ) - [26] (byte) printf_number_buffer::format_min_length#2 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_min_length#0 ) - [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 +printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@2 printf_uint::@2 printf_ulong::@2 + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [71] 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 + [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + [73] call strlen + [74] (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 + [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 + [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 + [77] 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 + [78] (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#2 - (signed byte) printf_number_buffer::len#2 - [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 + [79] (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 ) + [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 + [81] 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() + [82] 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 + [83] (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 ) + [84] 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 + [85] 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 + [86] 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 + [87] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 + [88] 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 + [89] 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 + [90] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 + [91] 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 + [92] 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 + [93] 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 + [94] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 + [95] 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 + [96] 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 + [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 + [98] 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 + [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + [100] 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 + [101] 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 + [102] 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 + [103] 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 + [104] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 + [105] 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 + [106] 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 ) + [107] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' ) + [107] (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 + [108] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 ) + [109] 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 + [110] 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 + [111] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 + [112] 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 + [113] (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 + [114] (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 ) + [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 + [116] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr + [117] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x + [118] 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 + [119] (byte) printf_cursor_x ← (byte) 0 + [120] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + [121] call printf_scroll to:printf_char::@return printf_char::@return: scope:[printf_char] from printf_char printf_char::@1 - [78] return + [122] 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 + [123] 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 + [124] phi() + [125] call memcpy to:printf_scroll::@2 printf_scroll::@2: scope:[printf_scroll] from printf_scroll::@1 - [82] phi() - [83] call memset + [126] phi() + [127] 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 + [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 + [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + [130] (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 + [131] 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 + [132] (byte) memset::c#4 ← phi( printf_cls/(byte) ' ' printf_scroll::@2/(byte) ' ' ) + [132] (void*) memset::str#3 ← phi( printf_cls/(void*) 1024 printf_scroll::@2/(void*)(number) $400+(number) $28*(number) $19-(number) $28 ) + [132] (word) memset::num#2 ← phi( printf_cls/(word)(number) $28*(number) $19 printf_scroll::@2/(byte) $28 ) + [133] 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 + [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [135] (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 + [136] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [137] 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 + [138] 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 + [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [140] (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() + [141] 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 + [142] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 ) + [142] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 ) + [143] 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 + [144] 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 + [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) + [146] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 + [147] (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 ) + [148] (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 ) + [149] (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 + [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) + [151] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 + [152] 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 + [153] return to:@return printf_str::@3: scope:[printf_str] from printf_str::@2 - [110] if((byte) printf_str::ch#0==(byte) ' + [154] 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 + [155] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + [156] call printf_char to:printf_str::@1 printf_str::@4: scope:[printf_str] from printf_str::@3 - [113] phi() - [114] call printf_ln + [157] phi() + [158] 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 + [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x + [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 + [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + [162] (byte) printf_cursor_x ← (byte) 0 + [163] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + [164] call printf_scroll to:printf_ln::@return printf_ln::@return: scope:[printf_ln] from printf_ln - [121] return + [165] return to:@return (byte*()) strupr((byte*) strupr::str) strupr: scope:[strupr] from printf_number_buffer::@11 - [122] phi() + [166] 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 + [167] (byte*) strupr::src#2 ← phi( strupr/(byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 ) + [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 to:strupr::@return strupr::@return: scope:[strupr] from strupr::@1 - [125] return + [169] 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 + [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) + [171] call toupper + [172] (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 + [173] (byte~) strupr::$0 ← (byte) toupper::return#3 + [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 + [175] (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 + [176] 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 + [177] 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' + [178] (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 + [179] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 ) + [180] return to:@return (word()) strlen((byte*) strlen::str) strlen: scope:[strlen] from printf_number_buffer::@6 - [137] phi() + [181] 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 + [182] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 ) + [182] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 ) + [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 to:strlen::@return strlen::@return: scope:[strlen] from strlen::@1 - [140] return + [184] 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 + [185] (word) strlen::len#1 ← ++ (word) strlen::len#2 + [186] (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) place::row#0 ← (byte) queen::r - [183] (byte) place::column#0 ← (byte) queen::column - [184] call place - [185] (byte) place::return#0 ← (byte) place::return#4 - to:queen::@7 -queen::@7: scope:[queen] from queen::@2 - [186] (byte~) queen::$1 ← (byte) place::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] (byte) count ← ++ (byte) count - [200] call printf_str - to:print::@11 -print::@11: scope:[print] from print - [201] (byte) printf_uchar::uvalue#0 ← (byte) count - [202] call printf_uchar - 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#2 ← (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#1 ← (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::@11 print::@14 print::@2 - [226] (byte) printf_uchar::uvalue#3 ← phi( print::@11/(byte) printf_uchar::uvalue#0 print::@14/(byte) printf_uchar::uvalue#2 print::@2/(byte) printf_uchar::uvalue#1 ) - 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#3 - [229] call uctoa - to:printf_uchar::@2 -printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1 - [230] (byte) printf_number_buffer::buffer_sign#1 ← *((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() + [187] 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) 3-(byte) 1) goto uctoa::@2 + [188] (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 ) + [188] (byte) uctoa::started#2 ← phi( uctoa::@4/(byte) uctoa::started#4 uctoa/(byte) 0 ) + [188] (byte) uctoa::value#2 ← phi( uctoa::@4/(byte) uctoa::value#6 uctoa/(byte) uctoa::value#1 ) + [188] (byte) uctoa::digit#2 ← phi( uctoa::@4/(byte) uctoa::digit#1 uctoa/(byte) 0 ) + [189] 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 + [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) + [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 + [192] *((byte*) uctoa::buffer#3) ← (byte) 0 to:uctoa::@return uctoa::@return: scope:[uctoa] from uctoa::@3 - [239] return + [193] return to:@return uctoa::@2: scope:[uctoa] from uctoa::@1 - [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_DECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) - [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 + [194] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) + [195] 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 + [196] 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 + [197] (byte*) uctoa::buffer#14 ← phi( uctoa::@7/(byte*) uctoa::buffer#11 uctoa::@6/(byte*) uctoa::buffer#4 ) + [197] (byte) uctoa::started#4 ← phi( uctoa::@7/(byte) uctoa::started#2 uctoa::@6/(byte) 1 ) + [197] (byte) uctoa::value#6 ← phi( uctoa::@7/(byte) uctoa::value#2 uctoa::@6/(byte) uctoa::value#0 ) + [198] (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 + [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 + [200] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 + [201] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 + [202] call uctoa_append + [203] (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 + [204] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + [205] (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() + [206] 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 + [207] (byte) uctoa_append::digit#2 ← phi( uctoa_append/(byte) 0 uctoa_append::@2/(byte) uctoa_append::digit#1 ) + [207] (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#0 uctoa_append::@2/(byte) uctoa_append::value#1 ) + [208] 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) + [209] *((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 + [210] 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 + [211] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 + [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 to:uctoa_append::@1 -(byte()) place((byte) place::row , (byte) place::column) -place: scope:[place] from queen::@2 - [259] phi() - to:place::@1 -place::@1: scope:[place] from place place::@3 - [260] (byte) place::i#3 ← phi( place/(byte) 1 place::@3/(byte) place::i#2 ) - [261] (byte~) place::$0 ← (byte) place::row#0 - (byte) 1 - [262] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 - to:place::@return -place::@return: scope:[place] from place::@1 place::@2 place::@6 - [263] (byte) place::return#4 ← phi( place::@1/(byte) 1 place::@2/(byte) 0 place::@6/(byte) 0 ) - [264] return +(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 + [213] phi() + to:printf_ulong::@1 +printf_ulong::@1: scope:[printf_ulong] from printf_ulong + [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 + [216] call ultoa + to:printf_ulong::@2 +printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1 + [217] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [218] call printf_number_buffer + to:printf_ulong::@return +printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2 + [219] return to:@return -place::@2: scope:[place] from place::@1 - [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return - to:place::@4 -place::@4: scope:[place] from place::@2 - [266] (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#3) - [267] (byte) diff::b#0 ← (byte) place::column#0 - [268] call diff - [269] (byte) diff::return#0 ← (byte) diff::return#4 - to:place::@5 -place::@5: scope:[place] from place::@4 - [270] (byte~) place::$3 ← (byte) diff::return#0 - [271] (byte) diff::a#1 ← (byte) place::i#3 - [272] (byte) diff::b#1 ← (byte) place::row#0 - [273] call diff - [274] (byte) diff::return#1 ← (byte) diff::return#4 - to:place::@6 -place::@6: scope:[place] from place::@5 - [275] (byte~) place::$4 ← (byte) diff::return#1 - [276] if((byte~) place::$3!=(byte~) place::$4) goto place::@3 - to:place::@return -place::@3: scope:[place] from place::@6 - [277] (byte) place::i#2 ← ++ (byte) place::i#3 - to:place::@1 + +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +ultoa: scope:[ultoa] from printf_ulong::@1 + [220] phi() + to:ultoa::@1 +ultoa::@1: scope:[ultoa] from ultoa ultoa::@4 + [221] (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 ) + [221] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 ) + [221] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 ) + [221] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 ) + [222] 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 + [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 + [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) + [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 + [226] *((byte*) ultoa::buffer#3) ← (byte) 0 + to:ultoa::@return +ultoa::@return: scope:[ultoa] from ultoa::@3 + [227] return + to:@return +ultoa::@2: scope:[ultoa] from ultoa::@1 + [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 + [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) + [230] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 + to:ultoa::@7 +ultoa::@7: scope:[ultoa] from ultoa::@2 + [231] 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 + [232] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 ) + [232] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 ) + [232] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 ) + [233] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 + to:ultoa::@1 +ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7 + [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 + [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 + [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 + [237] call ultoa_append + [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + to:ultoa::@6 +ultoa::@6: scope:[ultoa] from ultoa::@5 + [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + [240] (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 + [241] phi() + to:ultoa_append::@1 +ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2 + [242] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 ) + [242] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 ) + [243] 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 + [244] *((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 + [245] return + to:@return +ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1 + [246] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 + [247] (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 queens::@7 + [248] phi() + to:legal::@1 +legal::@1: scope:[legal] from legal legal::@3 + [249] (byte) legal::i#2 ← phi( legal/(byte) 1 legal::@3/(byte) legal::i#1 ) + [250] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 + [251] 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 + [252] (byte) legal::return#4 ← phi( legal::@1/(byte) 1 legal::@2/(byte) 0 legal::@6/(byte) 0 ) + [253] return + to:@return +legal::@2: scope:[legal] from legal::@1 + [254] 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 + [255] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) + [256] (byte) diff::b#0 ← (byte) legal::column#0 + [257] call diff + [258] (byte) diff::return#0 ← (byte) diff::return#4 + to:legal::@5 +legal::@5: scope:[legal] from legal::@4 + [259] (byte~) legal::$3 ← (byte) diff::return#0 + [260] (byte) diff::a#1 ← (byte) legal::i#2 + [261] (byte) diff::b#1 ← (byte) legal::row#0 + [262] call diff + [263] (byte) diff::return#1 ← (byte) diff::return#4 + to:legal::@6 +legal::@6: scope:[legal] from legal::@5 + [264] (byte~) legal::$4 ← (byte) diff::return#1 + [265] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 + to:legal::@return +legal::@3: scope:[legal] from legal::@6 + [266] (byte) legal::i#1 ← ++ (byte) legal::i#2 + to:legal::@1 (byte()) diff((byte) diff::a , (byte) diff::b) -diff: scope:[diff] from place::@4 place::@5 - [278] (byte) diff::b#2 ← phi( place::@4/(byte) diff::b#0 place::@5/(byte) diff::b#1 ) - [278] (byte) diff::a#2 ← phi( place::@4/(byte) diff::a#0 place::@5/(byte) diff::a#1 ) - [279] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 +diff: scope:[diff] from legal::@4 legal::@5 + [267] (byte) diff::b#2 ← phi( legal::@4/(byte) diff::b#0 legal::@5/(byte) diff::b#1 ) + [267] (byte) diff::a#2 ← phi( legal::@4/(byte) diff::a#0 legal::@5/(byte) diff::a#1 ) + [268] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 to:diff::@2 diff::@2: scope:[diff] from diff - [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 + [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 to:diff::@return diff::@return: scope:[diff] from diff::@1 diff::@2 - [281] (byte) diff::return#4 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 ) - [282] return + [270] (byte) diff::return#4 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 ) + [271] return to:@return diff::@1: scope:[diff] from diff - [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 + [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 to:diff::@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 + [273] phi() + to:printf_uint::@1 +printf_uint::@1: scope:[printf_uint] from printf_uint + [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [275] call utoa + to:printf_uint::@2 +printf_uint::@2: scope:[printf_uint] from printf_uint::@1 + [276] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [277] call printf_number_buffer + to:printf_uint::@return +printf_uint::@return: scope:[printf_uint] from printf_uint::@2 + [278] return + to:@return + +(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) +utoa: scope:[utoa] from printf_uint::@1 + [279] phi() + to:utoa::@1 +utoa::@1: scope:[utoa] from utoa utoa::@4 + [280] (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 ) + [280] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 ) + [280] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(const word) printf_uint::uvalue#0 ) + [280] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 ) + [281] 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 + [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 + [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) + [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 + [285] *((byte*) utoa::buffer#3) ← (byte) 0 + to:utoa::@return +utoa::@return: scope:[utoa] from utoa::@3 + [286] return + to:@return +utoa::@2: scope:[utoa] from utoa::@1 + [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 + [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) + [289] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 + to:utoa::@7 +utoa::@7: scope:[utoa] from utoa::@2 + [290] 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 + [291] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 ) + [291] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 ) + [291] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 ) + [292] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 + to:utoa::@1 +utoa::@5: scope:[utoa] from utoa::@2 utoa::@7 + [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 + [294] (word) utoa_append::value#0 ← (word) utoa::value#2 + [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 + [296] call utoa_append + [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + to:utoa::@6 +utoa::@6: scope:[utoa] from utoa::@5 + [298] (word) utoa::value#0 ← (word) utoa_append::return#0 + [299] (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 + [300] phi() + to:utoa_append::@1 +utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2 + [301] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 ) + [301] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 ) + [302] 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 + [303] *((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 + [304] return + to:@return +utoa_append::@2: scope:[utoa_append] from utoa_append::@1 + [305] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 + [306] (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 + [307] phi() + [308] call memset + to:printf_cls::@1 +printf_cls::@1: scope:[printf_cls] from printf_cls + [309] (byte*) printf_cursor_ptr ← (byte*) 1024 + [310] (byte) printf_cursor_x ← (byte) 0 + [311] (byte) printf_cursor_y ← (byte) 0 + to:printf_cls::@return +printf_cls::@return: scope:[printf_cls] from printf_cls::@1 + [312] return + to:@return diff --git a/src/test/ref/examples/eightqueens/eightqueens.log b/src/test/ref/examples/eightqueens/eightqueens.log index cf8079886..1146b722f 100644 --- a/src/test/ref/examples/eightqueens/eightqueens.log +++ b/src/test/ref/examples/eightqueens/eightqueens.log @@ -3,9 +3,9 @@ Fixing struct type size struct printf_buffer_number to 12 Fixing struct type SIZE_OF struct printf_buffer_number to 12 Fixing struct type SIZE_OF struct printf_buffer_number to 12 Added struct type cast to parameter value list call printf_uint (number) 8 (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } -Added struct type cast to parameter value list call printf_uchar (byte) count (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } -Added struct type cast to parameter value list call printf_uchar (byte) print::i (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } -Added struct type cast to parameter value list call printf_uchar (byte) print::i1 (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } +Added struct type cast to parameter value list call printf_ulong (dword) count (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) DECIMAL } +Added struct type cast to parameter value list call printf_uchar (byte) print::i (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) HEXADECIMAL } +Added struct type cast to parameter value list call printf_uchar (byte) print::i1 (struct printf_format_number){ (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (const byte) HEXADECIMAL } Created struct value member variable (byte) printf_slong::format_min_length Created struct value member variable (byte) printf_slong::format_justify_left Created struct value member variable (byte) printf_slong::format_sign_always @@ -76,9 +76,9 @@ Converted call struct value parameter to member unwinding (void~) printf_uint::$ Converted call struct value parameter to member unwinding (void~) printf_schar::$2 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (byte) printf_schar::format_min_length (byte) printf_schar::format_justify_left (byte) printf_schar::format_sign_always (byte) printf_schar::format_zero_padding (byte) printf_schar::format_upper_case (byte) printf_schar::format_radix Converted call struct value parameter to member unwinding (void~) printf_uchar::$4 ← call printf_number_buffer *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS (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 Converted call struct value parameter to member unwinding call printf_uint (number) 8 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL -Converted call struct value parameter to member unwinding call printf_uchar (byte) count (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL -Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL -Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i1 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL +Converted call struct value parameter to member unwinding call printf_ulong (dword) count (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) DECIMAL +Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) HEXADECIMAL +Converted call struct value parameter to member unwinding call printf_uchar (byte) print::i1 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (byte) 0 (const byte) HEXADECIMAL Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) Replacing struct member reference (struct printf_buffer_number) printf_buffer.sign with member unwinding reference *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) Replacing struct member reference (struct printf_format_number) printf_slong::format.sign_always with member unwinding reference (byte) printf_slong::format_sign_always @@ -134,12 +134,6 @@ Eliminating unused variable with no statement (void~) print::$2 Eliminating unused variable with no statement (void~) print::$4 Eliminating unused variable with no statement (void~) print::$7 Eliminating unused variable with no statement (void~) print::$8 -Converting PHI-variable modified inside __stackcall procedure queen() to load/store (byte) count -Calling convention STACK_CALL adding prepare/execute/finalize for call queen (number) 1 -Calling convention STACK_CALL adding prepare/execute/finalize for call queen (number~) queen::$4 -Calling convention STACK_CALL replacing param((byte) queen::row) with stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -Calling convention STACK_CALL adding stack push stackpush(byte) ← 1 -Calling convention STACK_CALL adding stack push stackpush(byte) ← queen::$4 CONTROL FLOW GRAPH SSA @begin: scope:[] from @@ -669,6 +663,185 @@ utoa_append::@return: scope:[utoa_append] from utoa_append::@3 (word) utoa_append::return#2 ← (word) utoa_append::return#4 return to:@return + +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +ultoa: scope:[ultoa] from printf_ulong::@3 + (byte*) ultoa::buffer#21 ← phi( printf_ulong::@3/(byte*) ultoa::buffer#5 ) + (dword) ultoa::value#12 ← phi( printf_ulong::@3/(dword) ultoa::value#1 ) + (byte) ultoa::radix#1 ← phi( printf_ulong::@3/(byte) ultoa::radix#0 ) + (byte) ultoa::max_digits#0 ← (byte) 0 + (dword*) ultoa::digit_values#0 ← (dword*) 0 + (bool~) ultoa::$0 ← (byte) ultoa::radix#1 == (const byte) DECIMAL + if((bool~) ultoa::$0) goto ultoa::@1 + to:ultoa::@6 +ultoa::@1: scope:[ultoa] from ultoa + (byte*) ultoa::buffer#17 ← phi( ultoa/(byte*) ultoa::buffer#21 ) + (dword) ultoa::value#8 ← phi( ultoa/(dword) ultoa::value#12 ) + (byte) ultoa::max_digits#1 ← (number) $a + (dword*) ultoa::digit_values#1 ← (const dword*) RADIX_DECIMAL_VALUES_LONG + to:ultoa::@5 +ultoa::@6: scope:[ultoa] from ultoa + (dword) ultoa::value#13 ← phi( ultoa/(dword) ultoa::value#12 ) + (byte*) ultoa::buffer#16 ← phi( ultoa/(byte*) ultoa::buffer#21 ) + (byte) ultoa::radix#2 ← phi( ultoa/(byte) ultoa::radix#1 ) + (bool~) ultoa::$1 ← (byte) ultoa::radix#2 == (const byte) HEXADECIMAL + if((bool~) ultoa::$1) goto ultoa::@2 + to:ultoa::@7 +ultoa::@2: scope:[ultoa] from ultoa::@6 + (byte*) ultoa::buffer#18 ← phi( ultoa::@6/(byte*) ultoa::buffer#16 ) + (dword) ultoa::value#9 ← phi( ultoa::@6/(dword) ultoa::value#13 ) + (byte) ultoa::max_digits#2 ← (number) 8 + (dword*) ultoa::digit_values#2 ← (const dword*) RADIX_HEXADECIMAL_VALUES_LONG + to:ultoa::@5 +ultoa::@7: scope:[ultoa] from ultoa::@6 + (dword) ultoa::value#14 ← phi( ultoa::@6/(dword) ultoa::value#13 ) + (byte*) ultoa::buffer#13 ← phi( ultoa::@6/(byte*) ultoa::buffer#16 ) + (byte) ultoa::radix#3 ← phi( ultoa::@6/(byte) ultoa::radix#2 ) + (bool~) ultoa::$2 ← (byte) ultoa::radix#3 == (const byte) OCTAL + if((bool~) ultoa::$2) goto ultoa::@3 + to:ultoa::@8 +ultoa::@3: scope:[ultoa] from ultoa::@7 + (byte*) ultoa::buffer#19 ← phi( ultoa::@7/(byte*) ultoa::buffer#13 ) + (dword) ultoa::value#10 ← phi( ultoa::@7/(dword) ultoa::value#14 ) + (byte) ultoa::max_digits#3 ← (number) $b + (dword*) ultoa::digit_values#3 ← (const dword*) RADIX_OCTAL_VALUES_LONG + to:ultoa::@5 +ultoa::@8: scope:[ultoa] from ultoa::@7 + (dword) ultoa::value#15 ← phi( ultoa::@7/(dword) ultoa::value#14 ) + (byte*) ultoa::buffer#10 ← phi( ultoa::@7/(byte*) ultoa::buffer#13 ) + (byte) ultoa::radix#4 ← phi( ultoa::@7/(byte) ultoa::radix#3 ) + (bool~) ultoa::$3 ← (byte) ultoa::radix#4 == (const byte) BINARY + if((bool~) ultoa::$3) goto ultoa::@4 + to:ultoa::@9 +ultoa::@4: scope:[ultoa] from ultoa::@8 + (byte*) ultoa::buffer#20 ← phi( ultoa::@8/(byte*) ultoa::buffer#10 ) + (dword) ultoa::value#11 ← phi( ultoa::@8/(dword) ultoa::value#15 ) + (byte) ultoa::max_digits#4 ← (number) $20 + (dword*) ultoa::digit_values#4 ← (const dword*) RADIX_BINARY_VALUES_LONG + to:ultoa::@5 +ultoa::@9: scope:[ultoa] from ultoa::@8 + (byte*) ultoa::buffer#6 ← phi( ultoa::@8/(byte*) ultoa::buffer#10 ) + *((byte*) ultoa::buffer#6) ← (byte) 'e' + (byte*) ultoa::buffer#0 ← ++ (byte*) ultoa::buffer#6 + *((byte*) ultoa::buffer#0) ← (byte) 'r' + (byte*) ultoa::buffer#1 ← ++ (byte*) ultoa::buffer#0 + *((byte*) ultoa::buffer#1) ← (byte) 'r' + (byte*) ultoa::buffer#2 ← ++ (byte*) ultoa::buffer#1 + *((byte*) ultoa::buffer#2) ← (number) 0 + to:ultoa::@return +ultoa::@return: scope:[ultoa] from ultoa::@12 ultoa::@9 + return + to:@return +ultoa::@5: scope:[ultoa] from ultoa::@1 ultoa::@2 ultoa::@3 ultoa::@4 + (byte*) ultoa::buffer#15 ← phi( ultoa::@1/(byte*) ultoa::buffer#17 ultoa::@2/(byte*) ultoa::buffer#18 ultoa::@3/(byte*) ultoa::buffer#19 ultoa::@4/(byte*) ultoa::buffer#20 ) + (dword) ultoa::value#7 ← phi( ultoa::@1/(dword) ultoa::value#8 ultoa::@2/(dword) ultoa::value#9 ultoa::@3/(dword) ultoa::value#10 ultoa::@4/(dword) ultoa::value#11 ) + (dword*) ultoa::digit_values#8 ← phi( ultoa::@1/(dword*) ultoa::digit_values#1 ultoa::@2/(dword*) ultoa::digit_values#2 ultoa::@3/(dword*) ultoa::digit_values#3 ultoa::@4/(dword*) ultoa::digit_values#4 ) + (byte) ultoa::max_digits#7 ← phi( ultoa::@1/(byte) ultoa::max_digits#1 ultoa::@2/(byte) ultoa::max_digits#2 ultoa::@3/(byte) ultoa::max_digits#3 ultoa::@4/(byte) ultoa::max_digits#4 ) + (byte) ultoa::started#0 ← (byte) 0 + (byte) ultoa::digit#0 ← (byte) 0 + to:ultoa::@10 +ultoa::@10: scope:[ultoa] from ultoa::@13 ultoa::@5 + (byte*) ultoa::buffer#11 ← phi( ultoa::@13/(byte*) ultoa::buffer#14 ultoa::@5/(byte*) ultoa::buffer#15 ) + (byte) ultoa::started#3 ← phi( ultoa::@13/(byte) ultoa::started#4 ultoa::@5/(byte) ultoa::started#0 ) + (dword) ultoa::value#5 ← phi( ultoa::@13/(dword) ultoa::value#6 ultoa::@5/(dword) ultoa::value#7 ) + (dword*) ultoa::digit_values#6 ← phi( ultoa::@13/(dword*) ultoa::digit_values#7 ultoa::@5/(dword*) ultoa::digit_values#8 ) + (byte) ultoa::digit#2 ← phi( ultoa::@13/(byte) ultoa::digit#1 ultoa::@5/(byte) ultoa::digit#0 ) + (byte) ultoa::max_digits#5 ← phi( ultoa::@13/(byte) ultoa::max_digits#6 ultoa::@5/(byte) ultoa::max_digits#7 ) + (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (number) 1 + (bool~) ultoa::$5 ← (byte) ultoa::digit#2 < (number~) ultoa::$4 + if((bool~) ultoa::$5) goto ultoa::@11 + to:ultoa::@12 +ultoa::@11: scope:[ultoa] from ultoa::@10 + (byte) ultoa::max_digits#8 ← phi( ultoa::@10/(byte) ultoa::max_digits#5 ) + (byte*) ultoa::buffer#12 ← phi( ultoa::@10/(byte*) ultoa::buffer#11 ) + (byte) ultoa::started#2 ← phi( ultoa::@10/(byte) ultoa::started#3 ) + (dword) ultoa::value#2 ← phi( ultoa::@10/(dword) ultoa::value#5 ) + (dword*) ultoa::digit_values#5 ← phi( ultoa::@10/(dword*) ultoa::digit_values#6 ) + (byte) ultoa::digit#3 ← phi( ultoa::@10/(byte) ultoa::digit#2 ) + (byte~) ultoa::$10 ← (byte) ultoa::digit#3 * (const byte) SIZEOF_DWORD + (dword) ultoa::digit_value#0 ← *((dword*) ultoa::digit_values#5 + (byte~) ultoa::$10) + (bool~) ultoa::$6 ← (dword) ultoa::value#2 >= (dword) ultoa::digit_value#0 + (bool~) ultoa::$7 ← (byte) ultoa::started#2 || (bool~) ultoa::$6 + (bool~) ultoa::$8 ← ! (bool~) ultoa::$7 + if((bool~) ultoa::$8) goto ultoa::@13 + to:ultoa::@14 +ultoa::@12: scope:[ultoa] from ultoa::@10 + (byte*) ultoa::buffer#7 ← phi( ultoa::@10/(byte*) ultoa::buffer#11 ) + (dword) ultoa::value#3 ← phi( ultoa::@10/(dword) ultoa::value#5 ) + (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#3 + *((byte*) ultoa::buffer#7) ← *((const byte*) DIGITS + (byte~) ultoa::$11) + (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#7 + *((byte*) ultoa::buffer#3) ← (number) 0 + to:ultoa::@return +ultoa::@13: scope:[ultoa] from ultoa::@11 ultoa::@15 + (byte*) ultoa::buffer#14 ← phi( ultoa::@11/(byte*) ultoa::buffer#12 ultoa::@15/(byte*) ultoa::buffer#4 ) + (byte) ultoa::started#4 ← phi( ultoa::@11/(byte) ultoa::started#2 ultoa::@15/(byte) ultoa::started#1 ) + (dword) ultoa::value#6 ← phi( ultoa::@11/(dword) ultoa::value#2 ultoa::@15/(dword) ultoa::value#0 ) + (dword*) ultoa::digit_values#7 ← phi( ultoa::@11/(dword*) ultoa::digit_values#5 ultoa::@15/(dword*) ultoa::digit_values#9 ) + (byte) ultoa::max_digits#6 ← phi( ultoa::@11/(byte) ultoa::max_digits#8 ultoa::@15/(byte) ultoa::max_digits#9 ) + (byte) ultoa::digit#4 ← phi( ultoa::@11/(byte) ultoa::digit#3 ultoa::@15/(byte) ultoa::digit#5 ) + (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#4 + to:ultoa::@10 +ultoa::@14: scope:[ultoa] from ultoa::@11 + (dword*) ultoa::digit_values#10 ← phi( ultoa::@11/(dword*) ultoa::digit_values#5 ) + (byte) ultoa::max_digits#10 ← phi( ultoa::@11/(byte) ultoa::max_digits#8 ) + (byte) ultoa::digit#6 ← phi( ultoa::@11/(byte) ultoa::digit#3 ) + (dword) ultoa::digit_value#1 ← phi( ultoa::@11/(dword) ultoa::digit_value#0 ) + (dword) ultoa::value#4 ← phi( ultoa::@11/(dword) ultoa::value#2 ) + (byte*) ultoa::buffer#8 ← phi( ultoa::@11/(byte*) ultoa::buffer#12 ) + (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#8 + (dword) ultoa_append::value#0 ← (dword) ultoa::value#4 + (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#1 + call ultoa_append + (dword) ultoa_append::return#0 ← (dword) ultoa_append::return#2 + to:ultoa::@15 +ultoa::@15: scope:[ultoa] from ultoa::@14 + (dword*) ultoa::digit_values#9 ← phi( ultoa::@14/(dword*) ultoa::digit_values#10 ) + (byte) ultoa::max_digits#9 ← phi( ultoa::@14/(byte) ultoa::max_digits#10 ) + (byte) ultoa::digit#5 ← phi( ultoa::@14/(byte) ultoa::digit#6 ) + (byte*) ultoa::buffer#9 ← phi( ultoa::@14/(byte*) ultoa::buffer#8 ) + (dword) ultoa_append::return#3 ← phi( ultoa::@14/(dword) ultoa_append::return#0 ) + (dword~) ultoa::$9 ← (dword) ultoa_append::return#3 + (dword) ultoa::value#0 ← (dword~) ultoa::$9 + (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#9 + (byte) ultoa::started#1 ← (number) 1 + to:ultoa::@13 + +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +ultoa_append: scope:[ultoa_append] from ultoa::@14 + (byte*) ultoa_append::buffer#3 ← phi( ultoa::@14/(byte*) ultoa_append::buffer#0 ) + (dword) ultoa_append::sub#3 ← phi( ultoa::@14/(dword) ultoa_append::sub#0 ) + (dword) ultoa_append::value#5 ← phi( ultoa::@14/(dword) ultoa_append::value#0 ) + (byte) ultoa_append::digit#0 ← (byte) 0 + to:ultoa_append::@1 +ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2 + (byte*) ultoa_append::buffer#2 ← phi( ultoa_append/(byte*) ultoa_append::buffer#3 ultoa_append::@2/(byte*) ultoa_append::buffer#4 ) + (byte) ultoa_append::digit#4 ← phi( ultoa_append/(byte) ultoa_append::digit#0 ultoa_append::@2/(byte) ultoa_append::digit#1 ) + (dword) ultoa_append::sub#1 ← phi( ultoa_append/(dword) ultoa_append::sub#3 ultoa_append::@2/(dword) ultoa_append::sub#2 ) + (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#5 ultoa_append::@2/(dword) ultoa_append::value#1 ) + (bool~) ultoa_append::$0 ← (dword) ultoa_append::value#2 >= (dword) ultoa_append::sub#1 + if((bool~) ultoa_append::$0) goto ultoa_append::@2 + to:ultoa_append::@3 +ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1 + (byte*) ultoa_append::buffer#4 ← phi( ultoa_append::@1/(byte*) ultoa_append::buffer#2 ) + (dword) ultoa_append::sub#2 ← phi( ultoa_append::@1/(dword) ultoa_append::sub#1 ) + (dword) ultoa_append::value#3 ← phi( ultoa_append::@1/(dword) ultoa_append::value#2 ) + (byte) ultoa_append::digit#2 ← phi( ultoa_append::@1/(byte) ultoa_append::digit#4 ) + (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 + (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#3 - (dword) ultoa_append::sub#2 + to:ultoa_append::@1 +ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1 + (dword) ultoa_append::value#4 ← phi( ultoa_append::@1/(dword) ultoa_append::value#2 ) + (byte*) ultoa_append::buffer#1 ← phi( ultoa_append::@1/(byte*) ultoa_append::buffer#2 ) + (byte) ultoa_append::digit#3 ← phi( ultoa_append::@1/(byte) ultoa_append::digit#4 ) + *((byte*) ultoa_append::buffer#1) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#3) + (dword) ultoa_append::return#1 ← (dword) ultoa_append::value#4 + to:ultoa_append::@return +ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3 + (dword) ultoa_append::return#4 ← phi( ultoa_append::@3/(dword) ultoa_append::return#1 ) + (dword) ultoa_append::return#2 ← (dword) ultoa_append::return#4 + return + to:@return @1: scope:[] from @begin (byte) printf_cursor_x ← (byte) 0 (byte) printf_cursor_y ← (byte) 0 @@ -830,6 +1003,76 @@ printf_str::@return: scope:[printf_str] from printf_str::@1 printf_str::@2 return to:@return +(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::@12 + (byte) printf_ulong::format_upper_case#5 ← phi( print::@12/(byte) printf_ulong::format_upper_case#0 ) + (byte) printf_ulong::format_zero_padding#5 ← phi( print::@12/(byte) printf_ulong::format_zero_padding#0 ) + (byte) printf_ulong::format_justify_left#5 ← phi( print::@12/(byte) printf_ulong::format_justify_left#0 ) + (byte) printf_ulong::format_min_length#5 ← phi( print::@12/(byte) printf_ulong::format_min_length#0 ) + (byte) printf_ulong::format_radix#5 ← phi( print::@12/(byte) printf_ulong::format_radix#0 ) + (dword) printf_ulong::uvalue#4 ← phi( print::@12/(dword) printf_ulong::uvalue#0 ) + (byte) printf_ulong::format_sign_always#1 ← phi( print::@12/(byte) printf_ulong::format_sign_always#0 ) + (bool~) printf_ulong::$5 ← (number) 0 != (byte) printf_ulong::format_sign_always#1 + if((bool~) printf_ulong::$5) goto printf_ulong::@1 + to:printf_ulong::@2 +printf_ulong::@1: scope:[printf_ulong] from printf_ulong + (byte) printf_ulong::format_upper_case#3 ← phi( printf_ulong/(byte) printf_ulong::format_upper_case#5 ) + (byte) printf_ulong::format_zero_padding#3 ← phi( printf_ulong/(byte) printf_ulong::format_zero_padding#5 ) + (byte) printf_ulong::format_sign_always#4 ← phi( printf_ulong/(byte) printf_ulong::format_sign_always#1 ) + (byte) printf_ulong::format_justify_left#3 ← phi( printf_ulong/(byte) printf_ulong::format_justify_left#5 ) + (byte) printf_ulong::format_min_length#3 ← phi( printf_ulong/(byte) printf_ulong::format_min_length#5 ) + (byte) printf_ulong::format_radix#3 ← phi( printf_ulong/(byte) printf_ulong::format_radix#5 ) + (dword) printf_ulong::uvalue#2 ← phi( printf_ulong/(dword) printf_ulong::uvalue#4 ) + (byte~) printf_ulong::$1 ← (byte) '+' + to:printf_ulong::@3 +printf_ulong::@2: scope:[printf_ulong] from printf_ulong + (byte) printf_ulong::format_upper_case#4 ← phi( printf_ulong/(byte) printf_ulong::format_upper_case#5 ) + (byte) printf_ulong::format_zero_padding#4 ← phi( printf_ulong/(byte) printf_ulong::format_zero_padding#5 ) + (byte) printf_ulong::format_sign_always#5 ← phi( printf_ulong/(byte) printf_ulong::format_sign_always#1 ) + (byte) printf_ulong::format_justify_left#4 ← phi( printf_ulong/(byte) printf_ulong::format_justify_left#5 ) + (byte) printf_ulong::format_min_length#4 ← phi( printf_ulong/(byte) printf_ulong::format_min_length#5 ) + (byte) printf_ulong::format_radix#4 ← phi( printf_ulong/(byte) printf_ulong::format_radix#5 ) + (dword) printf_ulong::uvalue#3 ← phi( printf_ulong/(dword) printf_ulong::uvalue#4 ) + (number~) printf_ulong::$0 ← (number) 0 + to:printf_ulong::@3 +printf_ulong::@3: scope:[printf_ulong] from printf_ulong::@1 printf_ulong::@2 + (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (number~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) + *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (number~) printf_ulong::$2 + (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#1 + (byte*) ultoa::buffer#5 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) ultoa::radix#0 ← (byte) printf_ulong::format_radix#1 + call ultoa + to:printf_ulong::@4 +printf_ulong::@4: scope:[printf_ulong] from printf_ulong::@3 + (byte) printf_ulong::format_radix#2 ← phi( printf_ulong::@3/(byte) printf_ulong::format_radix#1 ) + (byte) printf_ulong::format_upper_case#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_upper_case#2 ) + (byte) printf_ulong::format_zero_padding#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_zero_padding#2 ) + (byte) printf_ulong::format_sign_always#2 ← phi( printf_ulong::@3/(byte) printf_ulong::format_sign_always#3 ) + (byte) printf_ulong::format_justify_left#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_justify_left#2 ) + (byte) printf_ulong::format_min_length#1 ← phi( printf_ulong::@3/(byte) printf_ulong::format_min_length#2 ) + (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#0 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#0 ← (byte) printf_ulong::format_min_length#1 + (byte) printf_number_buffer::format_justify_left#0 ← (byte) printf_ulong::format_justify_left#1 + (byte) printf_number_buffer::format_sign_always#0 ← (byte) printf_ulong::format_sign_always#2 + (byte) printf_number_buffer::format_zero_padding#0 ← (byte) printf_ulong::format_zero_padding#1 + (byte) printf_number_buffer::format_upper_case#0 ← (byte) printf_ulong::format_upper_case#1 + (byte) printf_number_buffer::format_radix#0 ← (byte) printf_ulong::format_radix#2 + call printf_number_buffer + to:printf_ulong::@5 +printf_ulong::@5: scope:[printf_ulong] from printf_ulong::@4 + to:printf_ulong::@return +printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@5 + 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 (byte) printf_uint::format_upper_case#5 ← phi( main::@3/(byte) printf_uint::format_upper_case#0 ) @@ -884,14 +1127,14 @@ printf_uint::@4: scope:[printf_uint] from printf_uint::@3 (byte) printf_uint::format_sign_always#2 ← phi( printf_uint::@3/(byte) printf_uint::format_sign_always#3 ) (byte) printf_uint::format_justify_left#1 ← phi( printf_uint::@3/(byte) printf_uint::format_justify_left#2 ) (byte) printf_uint::format_min_length#1 ← phi( printf_uint::@3/(byte) printf_uint::format_min_length#2 ) - (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) - (byte*) printf_number_buffer::buffer_digits#0 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - (byte) printf_number_buffer::format_min_length#0 ← (byte) printf_uint::format_min_length#1 - (byte) printf_number_buffer::format_justify_left#0 ← (byte) printf_uint::format_justify_left#1 - (byte) printf_number_buffer::format_sign_always#0 ← (byte) printf_uint::format_sign_always#2 - (byte) printf_number_buffer::format_zero_padding#0 ← (byte) printf_uint::format_zero_padding#1 - (byte) printf_number_buffer::format_upper_case#0 ← (byte) printf_uint::format_upper_case#1 - (byte) printf_number_buffer::format_radix#0 ← (byte) printf_uint::format_radix#2 + (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#1 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#1 ← (byte) printf_uint::format_min_length#1 + (byte) printf_number_buffer::format_justify_left#1 ← (byte) printf_uint::format_justify_left#1 + (byte) printf_number_buffer::format_sign_always#1 ← (byte) printf_uint::format_sign_always#2 + (byte) printf_number_buffer::format_zero_padding#1 ← (byte) printf_uint::format_zero_padding#1 + (byte) printf_number_buffer::format_upper_case#1 ← (byte) printf_uint::format_upper_case#1 + (byte) printf_number_buffer::format_radix#1 ← (byte) printf_uint::format_radix#2 call printf_number_buffer to:printf_uint::@5 printf_uint::@5: scope:[printf_uint] from printf_uint::@4 @@ -901,67 +1144,67 @@ printf_uint::@return: scope:[printf_uint] from printf_uint::@5 to:@return (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::@12 print::@16 print::@2 - (byte) printf_uchar::format_upper_case#7 ← phi( print::@12/(byte) printf_uchar::format_upper_case#0 print::@16/(byte) printf_uchar::format_upper_case#2 print::@2/(byte) printf_uchar::format_upper_case#1 ) - (byte) printf_uchar::format_zero_padding#7 ← phi( print::@12/(byte) printf_uchar::format_zero_padding#0 print::@16/(byte) printf_uchar::format_zero_padding#2 print::@2/(byte) printf_uchar::format_zero_padding#1 ) - (byte) printf_uchar::format_justify_left#7 ← phi( print::@12/(byte) printf_uchar::format_justify_left#0 print::@16/(byte) printf_uchar::format_justify_left#2 print::@2/(byte) printf_uchar::format_justify_left#1 ) - (byte) printf_uchar::format_min_length#7 ← phi( print::@12/(byte) printf_uchar::format_min_length#0 print::@16/(byte) printf_uchar::format_min_length#2 print::@2/(byte) printf_uchar::format_min_length#1 ) - (byte) printf_uchar::format_radix#7 ← phi( print::@12/(byte) printf_uchar::format_radix#0 print::@16/(byte) printf_uchar::format_radix#2 print::@2/(byte) printf_uchar::format_radix#1 ) - (byte) printf_uchar::uvalue#6 ← phi( print::@12/(byte) printf_uchar::uvalue#0 print::@16/(byte) printf_uchar::uvalue#2 print::@2/(byte) printf_uchar::uvalue#1 ) - (byte) printf_uchar::format_sign_always#3 ← phi( print::@12/(byte) printf_uchar::format_sign_always#0 print::@16/(byte) printf_uchar::format_sign_always#2 print::@2/(byte) printf_uchar::format_sign_always#1 ) - (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#3 +printf_uchar: scope:[printf_uchar] from print::@16 print::@2 + (byte) printf_uchar::format_upper_case#6 ← phi( print::@16/(byte) printf_uchar::format_upper_case#1 print::@2/(byte) printf_uchar::format_upper_case#0 ) + (byte) printf_uchar::format_zero_padding#6 ← phi( print::@16/(byte) printf_uchar::format_zero_padding#1 print::@2/(byte) printf_uchar::format_zero_padding#0 ) + (byte) printf_uchar::format_justify_left#6 ← phi( print::@16/(byte) printf_uchar::format_justify_left#1 print::@2/(byte) printf_uchar::format_justify_left#0 ) + (byte) printf_uchar::format_min_length#6 ← phi( print::@16/(byte) printf_uchar::format_min_length#1 print::@2/(byte) printf_uchar::format_min_length#0 ) + (byte) printf_uchar::format_radix#6 ← phi( print::@16/(byte) printf_uchar::format_radix#1 print::@2/(byte) printf_uchar::format_radix#0 ) + (byte) printf_uchar::uvalue#5 ← phi( print::@16/(byte) printf_uchar::uvalue#1 print::@2/(byte) printf_uchar::uvalue#0 ) + (byte) printf_uchar::format_sign_always#2 ← phi( print::@16/(byte) printf_uchar::format_sign_always#1 print::@2/(byte) printf_uchar::format_sign_always#0 ) + (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#2 if((bool~) printf_uchar::$5) goto printf_uchar::@1 to:printf_uchar::@2 printf_uchar::@1: scope:[printf_uchar] from printf_uchar - (byte) printf_uchar::format_upper_case#5 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#7 ) - (byte) printf_uchar::format_zero_padding#5 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#7 ) - (byte) printf_uchar::format_sign_always#6 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#3 ) - (byte) printf_uchar::format_justify_left#5 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#7 ) - (byte) printf_uchar::format_min_length#5 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#7 ) - (byte) printf_uchar::format_radix#5 ← phi( printf_uchar/(byte) printf_uchar::format_radix#7 ) - (byte) printf_uchar::uvalue#4 ← phi( printf_uchar/(byte) printf_uchar::uvalue#6 ) + (byte) printf_uchar::format_upper_case#4 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#6 ) + (byte) printf_uchar::format_zero_padding#4 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#6 ) + (byte) printf_uchar::format_sign_always#5 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#2 ) + (byte) printf_uchar::format_justify_left#4 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#6 ) + (byte) printf_uchar::format_min_length#4 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#6 ) + (byte) printf_uchar::format_radix#4 ← phi( printf_uchar/(byte) printf_uchar::format_radix#6 ) + (byte) printf_uchar::uvalue#3 ← phi( printf_uchar/(byte) printf_uchar::uvalue#5 ) (byte~) printf_uchar::$1 ← (byte) '+' to:printf_uchar::@3 printf_uchar::@2: scope:[printf_uchar] from printf_uchar - (byte) printf_uchar::format_upper_case#6 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#7 ) - (byte) printf_uchar::format_zero_padding#6 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#7 ) - (byte) printf_uchar::format_sign_always#7 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#3 ) - (byte) printf_uchar::format_justify_left#6 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#7 ) - (byte) printf_uchar::format_min_length#6 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#7 ) - (byte) printf_uchar::format_radix#6 ← phi( printf_uchar/(byte) printf_uchar::format_radix#7 ) - (byte) printf_uchar::uvalue#5 ← phi( printf_uchar/(byte) printf_uchar::uvalue#6 ) + (byte) printf_uchar::format_upper_case#5 ← phi( printf_uchar/(byte) printf_uchar::format_upper_case#6 ) + (byte) printf_uchar::format_zero_padding#5 ← phi( printf_uchar/(byte) printf_uchar::format_zero_padding#6 ) + (byte) printf_uchar::format_sign_always#6 ← phi( printf_uchar/(byte) printf_uchar::format_sign_always#2 ) + (byte) printf_uchar::format_justify_left#5 ← phi( printf_uchar/(byte) printf_uchar::format_justify_left#6 ) + (byte) printf_uchar::format_min_length#5 ← phi( printf_uchar/(byte) printf_uchar::format_min_length#6 ) + (byte) printf_uchar::format_radix#5 ← phi( printf_uchar/(byte) printf_uchar::format_radix#6 ) + (byte) printf_uchar::uvalue#4 ← phi( printf_uchar/(byte) printf_uchar::uvalue#5 ) (number~) printf_uchar::$0 ← (number) 0 to:printf_uchar::@3 printf_uchar::@3: scope:[printf_uchar] from printf_uchar::@1 printf_uchar::@2 - (byte) printf_uchar::format_upper_case#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#5 printf_uchar::@2/(byte) printf_uchar::format_upper_case#6 ) - (byte) printf_uchar::format_zero_padding#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#5 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#6 ) - (byte) printf_uchar::format_sign_always#5 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#6 printf_uchar::@2/(byte) printf_uchar::format_sign_always#7 ) - (byte) printf_uchar::format_justify_left#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#5 printf_uchar::@2/(byte) printf_uchar::format_justify_left#6 ) - (byte) printf_uchar::format_min_length#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#5 printf_uchar::@2/(byte) printf_uchar::format_min_length#6 ) - (byte) printf_uchar::format_radix#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#5 printf_uchar::@2/(byte) printf_uchar::format_radix#6 ) - (byte) printf_uchar::uvalue#3 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#4 printf_uchar::@2/(byte) printf_uchar::uvalue#5 ) + (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) (number~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (number~) printf_uchar::$2 - (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#3 + (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 (byte*) uctoa::buffer#5 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - (byte) uctoa::radix#0 ← (byte) printf_uchar::format_radix#3 + (byte) uctoa::radix#0 ← (byte) printf_uchar::format_radix#2 call uctoa to:printf_uchar::@4 printf_uchar::@4: scope:[printf_uchar] from printf_uchar::@3 - (byte) printf_uchar::format_radix#4 ← phi( printf_uchar::@3/(byte) printf_uchar::format_radix#3 ) - (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_upper_case#4 ) - (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_zero_padding#4 ) - (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@3/(byte) printf_uchar::format_sign_always#5 ) - (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_justify_left#4 ) - (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_min_length#4 ) - (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) - (byte*) printf_number_buffer::buffer_digits#1 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - (byte) printf_number_buffer::format_min_length#1 ← (byte) printf_uchar::format_min_length#3 - (byte) printf_number_buffer::format_justify_left#1 ← (byte) printf_uchar::format_justify_left#3 - (byte) printf_number_buffer::format_sign_always#1 ← (byte) printf_uchar::format_sign_always#4 - (byte) printf_number_buffer::format_zero_padding#1 ← (byte) printf_uchar::format_zero_padding#3 - (byte) printf_number_buffer::format_upper_case#1 ← (byte) printf_uchar::format_upper_case#3 - (byte) printf_number_buffer::format_radix#1 ← (byte) printf_uchar::format_radix#4 + (byte) printf_uchar::format_radix#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_radix#2 ) + (byte) printf_uchar::format_upper_case#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_upper_case#3 ) + (byte) printf_uchar::format_zero_padding#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_zero_padding#3 ) + (byte) printf_uchar::format_sign_always#3 ← phi( printf_uchar::@3/(byte) printf_uchar::format_sign_always#4 ) + (byte) printf_uchar::format_justify_left#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_justify_left#3 ) + (byte) printf_uchar::format_min_length#2 ← phi( printf_uchar::@3/(byte) printf_uchar::format_min_length#3 ) + (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) + (byte*) printf_number_buffer::buffer_digits#2 ← (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + (byte) printf_number_buffer::format_min_length#2 ← (byte) printf_uchar::format_min_length#2 + (byte) printf_number_buffer::format_justify_left#2 ← (byte) printf_uchar::format_justify_left#2 + (byte) printf_number_buffer::format_sign_always#2 ← (byte) printf_uchar::format_sign_always#3 + (byte) printf_number_buffer::format_zero_padding#2 ← (byte) printf_uchar::format_zero_padding#2 + (byte) printf_number_buffer::format_upper_case#2 ← (byte) printf_uchar::format_upper_case#2 + (byte) printf_number_buffer::format_radix#2 ← (byte) printf_uchar::format_radix#3 call printf_number_buffer to:printf_uchar::@5 printf_uchar::@5: scope:[printf_uchar] from printf_uchar::@4 @@ -971,28 +1214,28 @@ printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@5 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::@4 printf_uint::@4 - (byte) printf_number_buffer::format_upper_case#11 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_upper_case#1 printf_uint::@4/(byte) printf_number_buffer::format_upper_case#0 ) - (byte) printf_number_buffer::buffer_sign#8 ← phi( printf_uchar::@4/(byte) printf_number_buffer::buffer_sign#1 printf_uint::@4/(byte) printf_number_buffer::buffer_sign#0 ) - (byte*) printf_number_buffer::buffer_digits#5 ← phi( printf_uchar::@4/(byte*) printf_number_buffer::buffer_digits#1 printf_uint::@4/(byte*) printf_number_buffer::buffer_digits#0 ) - (byte) printf_number_buffer::format_zero_padding#5 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_zero_padding#1 printf_uint::@4/(byte) printf_number_buffer::format_zero_padding#0 ) - (byte) printf_number_buffer::format_justify_left#4 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_justify_left#1 printf_uint::@4/(byte) printf_number_buffer::format_justify_left#0 ) - (byte) printf_number_buffer::format_min_length#2 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_min_length#1 printf_uint::@4/(byte) printf_number_buffer::format_min_length#0 ) +printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@4 printf_uint::@4 printf_ulong::@4 + (byte) printf_number_buffer::format_upper_case#12 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_upper_case#2 printf_uint::@4/(byte) printf_number_buffer::format_upper_case#1 printf_ulong::@4/(byte) printf_number_buffer::format_upper_case#0 ) + (byte) printf_number_buffer::buffer_sign#9 ← phi( printf_uchar::@4/(byte) printf_number_buffer::buffer_sign#2 printf_uint::@4/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@4/(byte) printf_number_buffer::buffer_sign#0 ) + (byte*) printf_number_buffer::buffer_digits#6 ← phi( printf_uchar::@4/(byte*) printf_number_buffer::buffer_digits#2 printf_uint::@4/(byte*) printf_number_buffer::buffer_digits#1 printf_ulong::@4/(byte*) printf_number_buffer::buffer_digits#0 ) + (byte) printf_number_buffer::format_zero_padding#6 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_zero_padding#2 printf_uint::@4/(byte) printf_number_buffer::format_zero_padding#1 printf_ulong::@4/(byte) printf_number_buffer::format_zero_padding#0 ) + (byte) printf_number_buffer::format_justify_left#5 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_justify_left#2 printf_uint::@4/(byte) printf_number_buffer::format_justify_left#1 printf_ulong::@4/(byte) printf_number_buffer::format_justify_left#0 ) + (byte) printf_number_buffer::format_min_length#3 ← phi( printf_uchar::@4/(byte) printf_number_buffer::format_min_length#2 printf_uint::@4/(byte) printf_number_buffer::format_min_length#1 printf_ulong::@4/(byte) printf_number_buffer::format_min_length#0 ) (signed byte) printf_number_buffer::padding#0 ← (signed byte) 0 - (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#2 + (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#3 (bool~) printf_number_buffer::$0 ← ! (bool~) printf_number_buffer::$26 if((bool~) printf_number_buffer::$0) goto printf_number_buffer::@1 to:printf_number_buffer::@6 printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@14 - (byte*) printf_number_buffer::buffer_digits#13 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#5 printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#16 printf_number_buffer::@14/(byte*) printf_number_buffer::buffer_digits#17 ) - (byte) printf_number_buffer::format_upper_case#8 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#11 printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#12 printf_number_buffer::@14/(byte) printf_number_buffer::format_upper_case#13 ) - (byte) printf_number_buffer::buffer_sign#6 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#8 printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#9 printf_number_buffer::@14/(byte) printf_number_buffer::buffer_sign#10 ) + (byte*) printf_number_buffer::buffer_digits#14 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#6 printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#17 printf_number_buffer::@14/(byte*) printf_number_buffer::buffer_digits#18 ) + (byte) printf_number_buffer::format_upper_case#9 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#12 printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#13 printf_number_buffer::@14/(byte) printf_number_buffer::format_upper_case#14 ) + (byte) printf_number_buffer::buffer_sign#7 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#9 printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#10 printf_number_buffer::@14/(byte) printf_number_buffer::buffer_sign#11 ) (signed byte) printf_number_buffer::padding#3 ← phi( printf_number_buffer/(signed byte) printf_number_buffer::padding#0 printf_number_buffer::@13/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@14/(signed byte) printf_number_buffer::padding#2 ) - (byte) printf_number_buffer::format_zero_padding#2 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#5 printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#6 printf_number_buffer::@14/(byte) printf_number_buffer::format_zero_padding#7 ) - (byte) printf_number_buffer::format_justify_left#2 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#4 printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#5 printf_number_buffer::@14/(byte) printf_number_buffer::format_justify_left#6 ) - (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#2 + (byte) printf_number_buffer::format_zero_padding#3 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#6 printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#7 printf_number_buffer::@14/(byte) printf_number_buffer::format_zero_padding#8 ) + (byte) printf_number_buffer::format_justify_left#3 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#5 printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#6 printf_number_buffer::@14/(byte) printf_number_buffer::format_justify_left#7 ) + (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#3 (bool~) printf_number_buffer::$1 ← ! (bool~) printf_number_buffer::$27 - (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#2 + (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#3 (bool~) printf_number_buffer::$2 ← ! (bool~) printf_number_buffer::$28 (bool~) printf_number_buffer::$3 ← (bool~) printf_number_buffer::$1 && (bool~) printf_number_buffer::$2 (bool~) printf_number_buffer::$4 ← (bool~) printf_number_buffer::$3 && (signed byte) printf_number_buffer::padding#3 @@ -1000,39 +1243,39 @@ printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffe if((bool~) printf_number_buffer::$5) goto printf_number_buffer::@2 to:printf_number_buffer::@8 printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer - (byte) printf_number_buffer::format_upper_case#17 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#11 ) - (byte) printf_number_buffer::format_zero_padding#17 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#5 ) - (byte) printf_number_buffer::format_justify_left#12 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#4 ) - (byte) printf_number_buffer::format_min_length#6 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_min_length#2 ) - (byte) printf_number_buffer::buffer_sign#5 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#8 ) - (byte*) printf_number_buffer::buffer_digits#2 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#5 ) - (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#2 + (byte) printf_number_buffer::format_upper_case#18 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_upper_case#12 ) + (byte) printf_number_buffer::format_zero_padding#18 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_zero_padding#6 ) + (byte) printf_number_buffer::format_justify_left#13 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_justify_left#5 ) + (byte) printf_number_buffer::format_min_length#7 ← phi( printf_number_buffer/(byte) printf_number_buffer::format_min_length#3 ) + (byte) printf_number_buffer::buffer_sign#6 ← phi( printf_number_buffer/(byte) printf_number_buffer::buffer_sign#9 ) + (byte*) printf_number_buffer::buffer_digits#3 ← phi( printf_number_buffer/(byte*) printf_number_buffer::buffer_digits#6 ) + (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#3 call strlen (word) strlen::return#2 ← (word) strlen::return#1 to:printf_number_buffer::@15 printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@6 - (byte*) printf_number_buffer::buffer_digits#19 ← phi( printf_number_buffer::@6/(byte*) printf_number_buffer::buffer_digits#2 ) - (byte) printf_number_buffer::format_upper_case#15 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_upper_case#17 ) - (byte) printf_number_buffer::format_zero_padding#11 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_zero_padding#17 ) - (byte) printf_number_buffer::format_justify_left#8 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_justify_left#12 ) - (byte) printf_number_buffer::format_min_length#4 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_min_length#6 ) - (byte) printf_number_buffer::buffer_sign#2 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::buffer_sign#5 ) + (byte*) printf_number_buffer::buffer_digits#20 ← phi( printf_number_buffer::@6/(byte*) printf_number_buffer::buffer_digits#3 ) + (byte) printf_number_buffer::format_upper_case#16 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_upper_case#18 ) + (byte) printf_number_buffer::format_zero_padding#12 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_zero_padding#18 ) + (byte) printf_number_buffer::format_justify_left#9 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_justify_left#13 ) + (byte) printf_number_buffer::format_min_length#5 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::format_min_length#7 ) + (byte) printf_number_buffer::buffer_sign#3 ← phi( printf_number_buffer::@6/(byte) printf_number_buffer::buffer_sign#6 ) (word) strlen::return#4 ← phi( printf_number_buffer::@6/(word) strlen::return#2 ) (word~) printf_number_buffer::$19 ← (word) strlen::return#4 (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 - (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#2 + (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 (bool~) printf_number_buffer::$20 ← ! (bool~) printf_number_buffer::$29 if((bool~) printf_number_buffer::$20) goto printf_number_buffer::@13 to:printf_number_buffer::@7 printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@15 printf_number_buffer::@7 - (byte*) printf_number_buffer::buffer_digits#16 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#19 printf_number_buffer::@7/(byte*) printf_number_buffer::buffer_digits#20 ) - (byte) printf_number_buffer::format_upper_case#12 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#15 printf_number_buffer::@7/(byte) printf_number_buffer::format_upper_case#16 ) - (byte) printf_number_buffer::buffer_sign#9 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#2 printf_number_buffer::@7/(byte) printf_number_buffer::buffer_sign#12 ) - (byte) printf_number_buffer::format_zero_padding#6 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#11 printf_number_buffer::@7/(byte) printf_number_buffer::format_zero_padding#12 ) - (byte) printf_number_buffer::format_justify_left#5 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#8 printf_number_buffer::@7/(byte) printf_number_buffer::format_justify_left#9 ) + (byte*) printf_number_buffer::buffer_digits#17 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#20 printf_number_buffer::@7/(byte*) printf_number_buffer::buffer_digits#21 ) + (byte) printf_number_buffer::format_upper_case#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#16 printf_number_buffer::@7/(byte) printf_number_buffer::format_upper_case#17 ) + (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#3 printf_number_buffer::@7/(byte) printf_number_buffer::buffer_sign#13 ) + (byte) printf_number_buffer::format_zero_padding#7 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#12 printf_number_buffer::@7/(byte) printf_number_buffer::format_zero_padding#13 ) + (byte) printf_number_buffer::format_justify_left#6 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#9 printf_number_buffer::@7/(byte) printf_number_buffer::format_justify_left#10 ) (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@15/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 ) - (byte) printf_number_buffer::format_min_length#3 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#4 printf_number_buffer::@7/(byte) printf_number_buffer::format_min_length#5 ) - (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 + (byte) printf_number_buffer::format_min_length#4 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#5 printf_number_buffer::@7/(byte) printf_number_buffer::format_min_length#6 ) + (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#4 (signed byte~) printf_number_buffer::$21 ← (signed byte~) printf_number_buffer::$25 - (signed byte) printf_number_buffer::len#2 (signed byte) printf_number_buffer::padding#1 ← (signed byte~) printf_number_buffer::$21 (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (number) 0 @@ -1040,95 +1283,95 @@ printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buff if((bool~) printf_number_buffer::$23) goto printf_number_buffer::@1 to:printf_number_buffer::@14 printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@15 - (byte*) printf_number_buffer::buffer_digits#20 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#19 ) - (byte) printf_number_buffer::format_upper_case#16 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#15 ) - (byte) printf_number_buffer::buffer_sign#12 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#2 ) - (byte) printf_number_buffer::format_zero_padding#12 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#11 ) - (byte) printf_number_buffer::format_justify_left#9 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#8 ) - (byte) printf_number_buffer::format_min_length#5 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#4 ) + (byte*) printf_number_buffer::buffer_digits#21 ← phi( printf_number_buffer::@15/(byte*) printf_number_buffer::buffer_digits#20 ) + (byte) printf_number_buffer::format_upper_case#17 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_upper_case#16 ) + (byte) printf_number_buffer::buffer_sign#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::buffer_sign#3 ) + (byte) printf_number_buffer::format_zero_padding#13 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_zero_padding#12 ) + (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_justify_left#9 ) + (byte) printf_number_buffer::format_min_length#6 ← phi( printf_number_buffer::@15/(byte) printf_number_buffer::format_min_length#5 ) (signed byte) printf_number_buffer::len#3 ← phi( printf_number_buffer::@15/(signed byte) printf_number_buffer::len#0 ) (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#3 to:printf_number_buffer::@13 printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@13 - (byte*) printf_number_buffer::buffer_digits#17 ← phi( printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#16 ) - (byte) printf_number_buffer::format_upper_case#13 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#12 ) - (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#9 ) - (byte) printf_number_buffer::format_zero_padding#7 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#6 ) - (byte) printf_number_buffer::format_justify_left#6 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#5 ) + (byte*) printf_number_buffer::buffer_digits#18 ← phi( printf_number_buffer::@13/(byte*) printf_number_buffer::buffer_digits#17 ) + (byte) printf_number_buffer::format_upper_case#14 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_upper_case#13 ) + (byte) printf_number_buffer::buffer_sign#11 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::buffer_sign#10 ) + (byte) printf_number_buffer::format_zero_padding#8 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_zero_padding#7 ) + (byte) printf_number_buffer::format_justify_left#7 ← phi( printf_number_buffer::@13/(byte) printf_number_buffer::format_justify_left#6 ) (signed byte) printf_number_buffer::padding#2 ← (number) 0 to:printf_number_buffer::@1 printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 - (byte) printf_number_buffer::format_justify_left#17 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#2 printf_number_buffer::@16/(byte) printf_number_buffer::format_justify_left#19 ) - (byte*) printf_number_buffer::buffer_digits#11 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#13 printf_number_buffer::@16/(byte*) printf_number_buffer::buffer_digits#14 ) - (byte) printf_number_buffer::format_upper_case#6 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#8 printf_number_buffer::@16/(byte) printf_number_buffer::format_upper_case#9 ) + (byte) printf_number_buffer::format_justify_left#18 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#3 printf_number_buffer::@16/(byte) printf_number_buffer::format_justify_left#20 ) + (byte*) printf_number_buffer::buffer_digits#12 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#14 printf_number_buffer::@16/(byte*) printf_number_buffer::buffer_digits#15 ) + (byte) printf_number_buffer::format_upper_case#7 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#9 printf_number_buffer::@16/(byte) printf_number_buffer::format_upper_case#10 ) (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer::@1/(signed byte) printf_number_buffer::padding#3 printf_number_buffer::@16/(signed byte) printf_number_buffer::padding#12 ) - (byte) printf_number_buffer::format_zero_padding#9 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#2 printf_number_buffer::@16/(byte) printf_number_buffer::format_zero_padding#13 ) - (byte) printf_number_buffer::buffer_sign#3 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#6 printf_number_buffer::@16/(byte) printf_number_buffer::buffer_sign#7 ) - (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 + (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#3 printf_number_buffer::@16/(byte) printf_number_buffer::format_zero_padding#14 ) + (byte) printf_number_buffer::buffer_sign#4 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#7 printf_number_buffer::@16/(byte) printf_number_buffer::buffer_sign#8 ) + (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#4 (bool~) printf_number_buffer::$7 ← ! (bool~) printf_number_buffer::$30 if((bool~) printf_number_buffer::$7) goto printf_number_buffer::@3 to:printf_number_buffer::@9 printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@1 - (byte) printf_number_buffer::format_justify_left#21 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#2 ) - (byte*) printf_number_buffer::buffer_digits#18 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#13 ) - (byte) printf_number_buffer::format_upper_case#14 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#8 ) - (byte) printf_number_buffer::format_zero_padding#18 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#2 ) - (byte) printf_number_buffer::buffer_sign#11 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#6 ) + (byte) printf_number_buffer::format_justify_left#22 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_justify_left#3 ) + (byte*) printf_number_buffer::buffer_digits#19 ← phi( printf_number_buffer::@1/(byte*) printf_number_buffer::buffer_digits#14 ) + (byte) printf_number_buffer::format_upper_case#15 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_upper_case#9 ) + (byte) printf_number_buffer::format_zero_padding#19 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::format_zero_padding#3 ) + (byte) printf_number_buffer::buffer_sign#12 ← phi( printf_number_buffer::@1/(byte) printf_number_buffer::buffer_sign#7 ) (signed byte) printf_number_buffer::padding#4 ← phi( printf_number_buffer::@1/(signed byte) printf_number_buffer::padding#3 ) (byte) printf_padding::pad#0 ← (byte) ' ' (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#4 call printf_padding to:printf_number_buffer::@16 printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@8 - (byte) printf_number_buffer::format_justify_left#19 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_justify_left#21 ) - (byte*) printf_number_buffer::buffer_digits#14 ← phi( printf_number_buffer::@8/(byte*) printf_number_buffer::buffer_digits#18 ) - (byte) printf_number_buffer::format_upper_case#9 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_upper_case#14 ) + (byte) printf_number_buffer::format_justify_left#20 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_justify_left#22 ) + (byte*) printf_number_buffer::buffer_digits#15 ← phi( printf_number_buffer::@8/(byte*) printf_number_buffer::buffer_digits#19 ) + (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_upper_case#15 ) (signed byte) printf_number_buffer::padding#12 ← phi( printf_number_buffer::@8/(signed byte) printf_number_buffer::padding#4 ) - (byte) printf_number_buffer::format_zero_padding#13 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_zero_padding#18 ) - (byte) printf_number_buffer::buffer_sign#7 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::buffer_sign#11 ) + (byte) printf_number_buffer::format_zero_padding#14 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::format_zero_padding#19 ) + (byte) printf_number_buffer::buffer_sign#8 ← phi( printf_number_buffer::@8/(byte) printf_number_buffer::buffer_sign#12 ) to:printf_number_buffer::@2 printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@17 printf_number_buffer::@2 - (byte) printf_number_buffer::format_justify_left#14 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_justify_left#16 printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#17 ) - (byte*) printf_number_buffer::buffer_digits#9 ← phi( printf_number_buffer::@17/(byte*) printf_number_buffer::buffer_digits#10 printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#11 ) - (byte) printf_number_buffer::format_upper_case#4 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_upper_case#5 printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#6 ) + (byte) printf_number_buffer::format_justify_left#15 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_justify_left#17 printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#18 ) + (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_number_buffer::@17/(byte*) printf_number_buffer::buffer_digits#11 printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#12 ) + (byte) printf_number_buffer::format_upper_case#5 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_upper_case#6 printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#7 ) (signed byte) printf_number_buffer::padding#5 ← phi( printf_number_buffer::@17/(signed byte) printf_number_buffer::padding#9 printf_number_buffer::@2/(signed byte) printf_number_buffer::padding#10 ) - (byte) printf_number_buffer::format_zero_padding#3 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_zero_padding#8 printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#9 ) - (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#3 && (signed byte) printf_number_buffer::padding#5 + (byte) printf_number_buffer::format_zero_padding#4 ← phi( printf_number_buffer::@17/(byte) printf_number_buffer::format_zero_padding#9 printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#10 ) + (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#4 && (signed byte) printf_number_buffer::padding#5 (bool~) printf_number_buffer::$10 ← ! (bool~) printf_number_buffer::$9 if((bool~) printf_number_buffer::$10) goto printf_number_buffer::@4 to:printf_number_buffer::@10 printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2 - (byte) printf_number_buffer::format_justify_left#20 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#17 ) - (byte*) printf_number_buffer::buffer_digits#15 ← phi( printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#11 ) - (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#6 ) + (byte) printf_number_buffer::format_justify_left#21 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_justify_left#18 ) + (byte*) printf_number_buffer::buffer_digits#16 ← phi( printf_number_buffer::@2/(byte*) printf_number_buffer::buffer_digits#12 ) + (byte) printf_number_buffer::format_upper_case#11 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_upper_case#7 ) (signed byte) printf_number_buffer::padding#13 ← phi( printf_number_buffer::@2/(signed byte) printf_number_buffer::padding#10 ) - (byte) printf_number_buffer::format_zero_padding#14 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#9 ) - (byte) printf_number_buffer::buffer_sign#4 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::buffer_sign#3 ) - (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#4 + (byte) printf_number_buffer::format_zero_padding#15 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::format_zero_padding#10 ) + (byte) printf_number_buffer::buffer_sign#5 ← phi( printf_number_buffer::@2/(byte) printf_number_buffer::buffer_sign#4 ) + (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#5 call printf_char to:printf_number_buffer::@17 printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@9 - (byte) printf_number_buffer::format_justify_left#16 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_justify_left#20 ) - (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_number_buffer::@9/(byte*) printf_number_buffer::buffer_digits#15 ) - (byte) printf_number_buffer::format_upper_case#5 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_upper_case#10 ) + (byte) printf_number_buffer::format_justify_left#17 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_justify_left#21 ) + (byte*) printf_number_buffer::buffer_digits#11 ← phi( printf_number_buffer::@9/(byte*) printf_number_buffer::buffer_digits#16 ) + (byte) printf_number_buffer::format_upper_case#6 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_upper_case#11 ) (signed byte) printf_number_buffer::padding#9 ← phi( printf_number_buffer::@9/(signed byte) printf_number_buffer::padding#13 ) - (byte) printf_number_buffer::format_zero_padding#8 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_zero_padding#14 ) + (byte) printf_number_buffer::format_zero_padding#9 ← phi( printf_number_buffer::@9/(byte) printf_number_buffer::format_zero_padding#15 ) to:printf_number_buffer::@3 printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@18 printf_number_buffer::@3 (signed byte) printf_number_buffer::padding#15 ← phi( printf_number_buffer::@18/(signed byte) printf_number_buffer::padding#16 printf_number_buffer::@3/(signed byte) printf_number_buffer::padding#5 ) - (byte) printf_number_buffer::format_justify_left#11 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_justify_left#13 printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#14 ) - (byte) printf_number_buffer::format_zero_padding#16 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_zero_padding#19 printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#3 ) - (byte*) printf_number_buffer::buffer_digits#7 ← phi( printf_number_buffer::@18/(byte*) printf_number_buffer::buffer_digits#8 printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#9 ) - (byte) printf_number_buffer::format_upper_case#2 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_upper_case#3 printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#4 ) - (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#2 + (byte) printf_number_buffer::format_justify_left#12 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_justify_left#14 printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#15 ) + (byte) printf_number_buffer::format_zero_padding#17 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_zero_padding#20 printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#4 ) + (byte*) printf_number_buffer::buffer_digits#8 ← phi( printf_number_buffer::@18/(byte*) printf_number_buffer::buffer_digits#9 printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#10 ) + (byte) printf_number_buffer::format_upper_case#3 ← phi( printf_number_buffer::@18/(byte) printf_number_buffer::format_upper_case#4 printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#5 ) + (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#3 (bool~) printf_number_buffer::$12 ← ! (bool~) printf_number_buffer::$31 if((bool~) printf_number_buffer::$12) goto printf_number_buffer::@5 to:printf_number_buffer::@11 printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@3 - (byte) printf_number_buffer::format_justify_left#18 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#14 ) - (byte) printf_number_buffer::format_zero_padding#21 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#3 ) - (byte*) printf_number_buffer::buffer_digits#12 ← phi( printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#9 ) - (byte) printf_number_buffer::format_upper_case#7 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#4 ) + (byte) printf_number_buffer::format_justify_left#19 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_justify_left#15 ) + (byte) printf_number_buffer::format_zero_padding#22 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_zero_padding#4 ) + (byte*) printf_number_buffer::buffer_digits#13 ← phi( printf_number_buffer::@3/(byte*) printf_number_buffer::buffer_digits#10 ) + (byte) printf_number_buffer::format_upper_case#8 ← phi( printf_number_buffer::@3/(byte) printf_number_buffer::format_upper_case#5 ) (signed byte) printf_number_buffer::padding#6 ← phi( printf_number_buffer::@3/(signed byte) printf_number_buffer::padding#5 ) (byte) printf_padding::pad#1 ← (byte) '0' (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#6 @@ -1136,44 +1379,44 @@ printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buff to:printf_number_buffer::@18 printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@10 (signed byte) printf_number_buffer::padding#16 ← phi( printf_number_buffer::@10/(signed byte) printf_number_buffer::padding#6 ) - (byte) printf_number_buffer::format_justify_left#13 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_justify_left#18 ) - (byte) printf_number_buffer::format_zero_padding#19 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_zero_padding#21 ) - (byte*) printf_number_buffer::buffer_digits#8 ← phi( printf_number_buffer::@10/(byte*) printf_number_buffer::buffer_digits#12 ) - (byte) printf_number_buffer::format_upper_case#3 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_upper_case#7 ) + (byte) printf_number_buffer::format_justify_left#14 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_justify_left#19 ) + (byte) printf_number_buffer::format_zero_padding#20 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_zero_padding#22 ) + (byte*) printf_number_buffer::buffer_digits#9 ← phi( printf_number_buffer::@10/(byte*) printf_number_buffer::buffer_digits#13 ) + (byte) printf_number_buffer::format_upper_case#4 ← phi( printf_number_buffer::@10/(byte) printf_number_buffer::format_upper_case#8 ) to:printf_number_buffer::@4 printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@20 printf_number_buffer::@4 (signed byte) printf_number_buffer::padding#11 ← phi( printf_number_buffer::@20/(signed byte) printf_number_buffer::padding#14 printf_number_buffer::@4/(signed byte) printf_number_buffer::padding#15 ) - (byte) printf_number_buffer::format_justify_left#7 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_justify_left#10 printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#11 ) - (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_zero_padding#15 printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#16 ) - (byte*) printf_number_buffer::buffer_digits#3 ← phi( printf_number_buffer::@20/(byte*) printf_number_buffer::buffer_digits#6 printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#7 ) - (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#3 + (byte) printf_number_buffer::format_justify_left#8 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_justify_left#11 printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#12 ) + (byte) printf_number_buffer::format_zero_padding#11 ← phi( printf_number_buffer::@20/(byte) printf_number_buffer::format_zero_padding#16 printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#17 ) + (byte*) printf_number_buffer::buffer_digits#4 ← phi( printf_number_buffer::@20/(byte*) printf_number_buffer::buffer_digits#7 printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#8 ) + (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#4 call printf_str to:printf_number_buffer::@19 printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@5 (signed byte) printf_number_buffer::padding#7 ← phi( printf_number_buffer::@5/(signed byte) printf_number_buffer::padding#11 ) - (byte) printf_number_buffer::format_justify_left#3 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_justify_left#7 ) - (byte) printf_number_buffer::format_zero_padding#4 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_zero_padding#10 ) - (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#4 + (byte) printf_number_buffer::format_justify_left#4 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_justify_left#8 ) + (byte) printf_number_buffer::format_zero_padding#5 ← phi( printf_number_buffer::@5/(byte) printf_number_buffer::format_zero_padding#11 ) + (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#5 (bool~) printf_number_buffer::$14 ← ! (bool~) printf_number_buffer::$32 - (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#3 && (bool~) printf_number_buffer::$14 + (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#4 && (bool~) printf_number_buffer::$14 (bool~) printf_number_buffer::$16 ← (bool~) printf_number_buffer::$15 && (signed byte) printf_number_buffer::padding#7 (bool~) printf_number_buffer::$17 ← ! (bool~) printf_number_buffer::$16 if((bool~) printf_number_buffer::$17) goto printf_number_buffer::@return to:printf_number_buffer::@12 printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4 (signed byte) printf_number_buffer::padding#17 ← phi( printf_number_buffer::@4/(signed byte) printf_number_buffer::padding#15 ) - (byte) printf_number_buffer::format_justify_left#15 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#11 ) - (byte) printf_number_buffer::format_zero_padding#20 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#16 ) - (byte*) printf_number_buffer::buffer_digits#4 ← phi( printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#7 ) - (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#4 + (byte) printf_number_buffer::format_justify_left#16 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_justify_left#12 ) + (byte) printf_number_buffer::format_zero_padding#21 ← phi( printf_number_buffer::@4/(byte) printf_number_buffer::format_zero_padding#17 ) + (byte*) printf_number_buffer::buffer_digits#5 ← phi( printf_number_buffer::@4/(byte*) printf_number_buffer::buffer_digits#8 ) + (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#5 call strupr (byte*) strupr::return#2 ← (byte*) strupr::return#1 to:printf_number_buffer::@20 printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@11 (signed byte) printf_number_buffer::padding#14 ← phi( printf_number_buffer::@11/(signed byte) printf_number_buffer::padding#17 ) - (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_justify_left#15 ) - (byte) printf_number_buffer::format_zero_padding#15 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_zero_padding#20 ) - (byte*) printf_number_buffer::buffer_digits#6 ← phi( printf_number_buffer::@11/(byte*) printf_number_buffer::buffer_digits#4 ) + (byte) printf_number_buffer::format_justify_left#11 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_justify_left#16 ) + (byte) printf_number_buffer::format_zero_padding#16 ← phi( printf_number_buffer::@11/(byte) printf_number_buffer::format_zero_padding#21 ) + (byte*) printf_number_buffer::buffer_digits#7 ← phi( printf_number_buffer::@11/(byte*) printf_number_buffer::buffer_digits#5 ) to:printf_number_buffer::@5 printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19 (signed byte) printf_number_buffer::padding#8 ← phi( printf_number_buffer::@19/(signed byte) printf_number_buffer::padding#7 ) @@ -1187,22 +1430,26 @@ printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_ return to:@return @2: scope:[] from @1 - (byte) count ← (byte) 0 + (dword) count#0 ← (dword) 0 to:@3 (void()) main() main: scope:[main] from @3 + (dword) count#40 ← phi( @3/(dword) count#21 ) call printf_cls to:main::@1 main::@1: scope:[main] from main + (dword) count#35 ← phi( main/(dword) count#40 ) (byte*) printf_str::str#2 ← (const byte*) main::str call printf_str to:main::@2 main::@2: scope:[main] from main::@1 + (dword) count#31 ← phi( main::@1/(dword) count#35 ) (byte*) printf_str::str#3 ← (const byte*) main::str1 call printf_str to:main::@3 main::@3: scope:[main] from main::@2 + (dword) count#22 ← phi( main::@2/(dword) count#31 ) (word) printf_uint::uvalue#0 ← (number) 8 (byte) printf_uint::format_min_length#0 ← (byte) 0 (byte) printf_uint::format_justify_left#0 ← (byte) 0 @@ -1213,139 +1460,167 @@ main::@3: scope:[main] from main::@2 call printf_uint to:main::@4 main::@4: scope:[main] from main::@3 - stackpush(byte) ← (number) 1 - callexecute queen - sideeffect stackpullbytes((number) 1) + (dword) count#16 ← phi( main::@3/(dword) count#22 ) + call queens + to:main::@5 +main::@5: scope:[main] from main::@4 + (dword) count#8 ← phi( main::@4/(dword) count#4 ) + (dword) count#1 ← (dword) count#8 to:main::@return -main::@return: scope:[main] from main::@4 +main::@return: scope:[main] from main::@5 + (dword) count#9 ← phi( main::@5/(dword) count#1 ) + (dword) count#2 ← (dword) count#9 return to:@return -__stackcall (void()) queen((byte) queen::row) -queen: scope:[queen] from - (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) - (byte) queen::r ← (byte) queen::row#0 - (byte) queen::column ← (byte) 1 - to:queen::@1 -queen::@1: scope:[queen] from queen queen::@3 - (bool~) queen::$0 ← (byte) queen::column <= (number) 8 - if((bool~) queen::$0) goto queen::@2 - to:queen::@return -queen::@2: scope:[queen] from queen::@1 - (byte) place::row#0 ← (byte) queen::r - (byte) place::column#0 ← (byte) queen::column - call place - (byte) place::return#0 ← (byte) place::return#4 - to:queen::@7 -queen::@7: scope:[queen] from queen::@2 - (byte) place::return#5 ← phi( queen::@2/(byte) place::return#0 ) - (byte~) queen::$1 ← (byte) place::return#5 - (bool~) queen::$7 ← (number) 0 != (byte~) queen::$1 - (bool~) queen::$2 ← ! (bool~) queen::$7 - if((bool~) queen::$2) goto queen::@3 - to:queen::@5 -queen::@3: scope:[queen] from queen::@6 queen::@7 queen::@8 - (byte) queen::column ← ++ (byte) queen::column - to:queen::@1 -queen::@5: scope:[queen] from queen::@7 - *((const byte*) board + (byte) queen::r) ← (byte) queen::column - (bool~) queen::$3 ← (byte) queen::r == (number) 8 - if((bool~) queen::$3) goto queen::@4 - to:queen::@6 -queen::@4: scope:[queen] from queen::@5 +(void()) queens() +queens: scope:[queens] from main::@4 + (dword) count#23 ← phi( main::@4/(dword) count#16 ) + (byte) queens::row#0 ← (byte) 1 + to:queens::@1 +queens::@1: scope:[queens] from queens queens::@10 queens::@6 queens::@8 queens::@9 + (dword) count#18 ← phi( queens/(dword) count#23 queens::@10/(dword) count#3 queens::@6/(dword) count#24 queens::@8/(dword) count#25 queens::@9/(dword) count#26 ) + (byte) queens::row#9 ← phi( queens/(byte) queens::row#0 queens::@10/(byte) queens::row#11 queens::@6/(byte) queens::row#1 queens::@8/(byte) queens::row#2 queens::@9/(byte) queens::row#10 ) + if(true) goto queens::@2 + to:queens::@return +queens::@2: scope:[queens] from queens::@1 + (dword) count#27 ← phi( queens::@1/(dword) count#18 ) + (byte) queens::row#3 ← phi( queens::@1/(byte) queens::row#9 ) + *((const byte*) board + (byte) queens::row#3) ← ++ *((const byte*) board + (byte) queens::row#3) + (bool~) queens::$1 ← *((const byte*) board + (byte) queens::row#3) == (number) 8+(number) 1 + if((bool~) queens::$1) goto queens::@3 + to:queens::@7 +queens::@3: scope:[queens] from queens::@2 + (dword) count#19 ← phi( queens::@2/(dword) count#27 ) + (byte) queens::row#4 ← phi( queens::@2/(byte) queens::row#3 ) + *((const byte*) board + (byte) queens::row#4) ← (number) 0 + (bool~) queens::$5 ← (byte) queens::row#4 == (number) 1 + if((bool~) queens::$5) goto queens::@return + to:queens::@8 +queens::@7: scope:[queens] from queens::@2 + (dword) count#32 ← phi( queens::@2/(dword) count#27 ) + (byte) queens::row#5 ← phi( queens::@2/(byte) queens::row#3 ) + (byte) legal::row#0 ← (byte) queens::row#5 + (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#5) + call legal + (byte) legal::return#0 ← (byte) legal::return#4 + to:queens::@9 +queens::@9: scope:[queens] from queens::@7 + (dword) count#26 ← phi( queens::@7/(dword) count#32 ) + (byte) queens::row#10 ← phi( queens::@7/(byte) queens::row#5 ) + (byte) legal::return#5 ← phi( queens::@7/(byte) legal::return#0 ) + (byte~) queens::$2 ← (byte) legal::return#5 + (bool~) queens::$6 ← (number) 0 != (byte~) queens::$2 + if((bool~) queens::$6) goto queens::@4 + to:queens::@1 +queens::@4: scope:[queens] from queens::@9 + (dword) count#28 ← phi( queens::@9/(dword) count#26 ) + (byte) queens::row#6 ← phi( queens::@9/(byte) queens::row#10 ) + (bool~) queens::$3 ← (byte) queens::row#6 == (number) 8 + if((bool~) queens::$3) goto queens::@5 + to:queens::@6 +queens::@5: scope:[queens] from queens::@4 + (byte) queens::row#12 ← phi( queens::@4/(byte) queens::row#6 ) + (dword) count#17 ← phi( queens::@4/(dword) count#28 ) call print - to:queen::@8 -queen::@8: scope:[queen] from queen::@4 - to:queen::@3 -queen::@6: scope:[queen] from queen::@5 - asm { ldacolumn pha ldar pha } - (number~) queen::$4 ← (byte) queen::r + (number) 1 - stackpush(byte) ← (number~) queen::$4 - callexecute queen - sideeffect stackpullbytes((number) 1) - asm { pla star pla stacolumn } - to:queen::@3 -queen::@return: scope:[queen] from queen::@1 + to:queens::@10 +queens::@10: scope:[queens] from queens::@5 + (byte) queens::row#11 ← phi( queens::@5/(byte) queens::row#12 ) + (dword) count#10 ← phi( queens::@5/(dword) count#6 ) + (dword) count#3 ← (dword) count#10 + to:queens::@1 +queens::@6: scope:[queens] from queens::@4 + (dword) count#24 ← phi( queens::@4/(dword) count#28 ) + (byte) queens::row#7 ← phi( queens::@4/(byte) queens::row#6 ) + (byte) queens::row#1 ← ++ (byte) queens::row#7 + to:queens::@1 +queens::@8: scope:[queens] from queens::@3 + (dword) count#25 ← phi( queens::@3/(dword) count#19 ) + (byte) queens::row#8 ← phi( queens::@3/(byte) queens::row#4 ) + (byte) queens::row#2 ← -- (byte) queens::row#8 + to:queens::@1 +queens::@return: scope:[queens] from queens::@1 queens::@3 + (dword) count#11 ← phi( queens::@1/(dword) count#18 queens::@3/(dword) count#19 ) + (dword) count#4 ← (dword) count#11 return to:@return -(byte()) place((byte) place::row , (byte) place::column) -place: scope:[place] from queen::@2 - (byte) place::column#4 ← phi( queen::@2/(byte) place::column#0 ) - (byte) place::row#3 ← phi( queen::@2/(byte) place::row#0 ) - (byte) place::i#0 ← (byte) 0 - (byte) place::i#1 ← (number) 1 - to:place::@1 -place::@1: scope:[place] from place place::@5 - (byte) place::column#3 ← phi( place/(byte) place::column#4 place::@5/(byte) place::column#5 ) - (byte) place::i#3 ← phi( place/(byte) place::i#1 place::@5/(byte) place::i#2 ) - (byte) place::row#1 ← phi( place/(byte) place::row#3 place::@5/(byte) place::row#4 ) - (number~) place::$0 ← (byte) place::row#1 - (number) 1 - (bool~) place::$1 ← (byte) place::i#3 <= (number~) place::$0 - if((bool~) place::$1) goto place::@2 - to:place::@3 -place::@2: scope:[place] from place::@1 - (byte) place::row#6 ← phi( place::@1/(byte) place::row#1 ) - (byte) place::column#1 ← phi( place::@1/(byte) place::column#3 ) - (byte) place::i#4 ← phi( place::@1/(byte) place::i#3 ) - (bool~) place::$2 ← *((const byte*) board + (byte) place::i#4) == (byte) place::column#1 - if((bool~) place::$2) goto place::@4 - to:place::@6 -place::@3: scope:[place] from place::@1 - (byte) place::return#1 ← (number) 1 - to:place::@return -place::@4: scope:[place] from place::@2 - (byte) place::return#2 ← (number) 0 - to:place::@return -place::@6: scope:[place] from place::@2 - (byte) place::row#5 ← phi( place::@2/(byte) place::row#6 ) - (byte) place::column#2 ← phi( place::@2/(byte) place::column#1 ) - (byte) place::i#5 ← phi( place::@2/(byte) place::i#4 ) - (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#5) - (byte) diff::b#0 ← (byte) place::column#2 +(byte()) legal((byte) legal::row , (byte) legal::column) +legal: scope:[legal] from queens::@7 + (byte) legal::column#4 ← phi( queens::@7/(byte) legal::column#0 ) + (byte) legal::row#3 ← phi( queens::@7/(byte) legal::row#0 ) + (byte) legal::i#0 ← (byte) 1 + to:legal::@1 +legal::@1: scope:[legal] from legal legal::@5 + (byte) legal::column#3 ← phi( legal/(byte) legal::column#4 legal::@5/(byte) legal::column#5 ) + (byte) legal::i#2 ← phi( legal/(byte) legal::i#0 legal::@5/(byte) legal::i#1 ) + (byte) legal::row#1 ← phi( legal/(byte) legal::row#3 legal::@5/(byte) legal::row#4 ) + (number~) legal::$0 ← (byte) legal::row#1 - (number) 1 + (bool~) legal::$1 ← (byte) legal::i#2 <= (number~) legal::$0 + if((bool~) legal::$1) goto legal::@2 + to:legal::@3 +legal::@2: scope:[legal] from legal::@1 + (byte) legal::row#6 ← phi( legal::@1/(byte) legal::row#1 ) + (byte) legal::column#1 ← phi( legal::@1/(byte) legal::column#3 ) + (byte) legal::i#3 ← phi( legal::@1/(byte) legal::i#2 ) + (bool~) legal::$2 ← *((const byte*) board + (byte) legal::i#3) == (byte) legal::column#1 + if((bool~) legal::$2) goto legal::@4 + to:legal::@6 +legal::@3: scope:[legal] from legal::@1 + (byte) legal::return#1 ← (number) 1 + to:legal::@return +legal::@4: scope:[legal] from legal::@2 + (byte) legal::return#2 ← (number) 0 + to:legal::@return +legal::@6: scope:[legal] from legal::@2 + (byte) legal::row#5 ← phi( legal::@2/(byte) legal::row#6 ) + (byte) legal::column#2 ← phi( legal::@2/(byte) legal::column#1 ) + (byte) legal::i#4 ← phi( legal::@2/(byte) legal::i#3 ) + (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#4) + (byte) diff::b#0 ← (byte) legal::column#2 call diff (byte) diff::return#0 ← (byte) diff::return#4 - to:place::@8 -place::@8: scope:[place] from place::@6 - (byte) place::column#7 ← phi( place::@6/(byte) place::column#2 ) - (byte) place::row#2 ← phi( place::@6/(byte) place::row#5 ) - (byte) place::i#6 ← phi( place::@6/(byte) place::i#5 ) - (byte) diff::return#5 ← phi( place::@6/(byte) diff::return#0 ) - (byte~) place::$3 ← (byte) diff::return#5 - (byte) diff::a#1 ← (byte) place::i#6 - (byte) diff::b#1 ← (byte) place::row#2 + to:legal::@8 +legal::@8: scope:[legal] from legal::@6 + (byte) legal::column#7 ← phi( legal::@6/(byte) legal::column#2 ) + (byte) legal::row#2 ← phi( legal::@6/(byte) legal::row#5 ) + (byte) legal::i#5 ← phi( legal::@6/(byte) legal::i#4 ) + (byte) diff::return#5 ← phi( legal::@6/(byte) diff::return#0 ) + (byte~) legal::$3 ← (byte) diff::return#5 + (byte) diff::a#1 ← (byte) legal::i#5 + (byte) diff::b#1 ← (byte) legal::row#2 call diff (byte) diff::return#1 ← (byte) diff::return#4 - to:place::@9 -place::@9: scope:[place] from place::@8 - (byte) place::column#6 ← phi( place::@8/(byte) place::column#7 ) - (byte) place::row#7 ← phi( place::@8/(byte) place::row#2 ) - (byte) place::i#8 ← phi( place::@8/(byte) place::i#6 ) - (byte) diff::return#6 ← phi( place::@8/(byte) diff::return#1 ) - (byte~) place::$4 ← (byte) diff::return#6 - (bool~) place::$5 ← (byte~) place::$3 == (byte~) place::$4 - (bool~) place::$6 ← ! (bool~) place::$5 - if((bool~) place::$6) goto place::@5 - to:place::@7 -place::@7: scope:[place] from place::@9 - (byte) place::return#3 ← (number) 0 - to:place::@return -place::@return: scope:[place] from place::@3 place::@4 place::@7 - (byte) place::return#6 ← phi( place::@3/(byte) place::return#1 place::@4/(byte) place::return#2 place::@7/(byte) place::return#3 ) - (byte) place::return#4 ← (byte) place::return#6 + to:legal::@9 +legal::@9: scope:[legal] from legal::@8 + (byte) legal::column#6 ← phi( legal::@8/(byte) legal::column#7 ) + (byte) legal::row#7 ← phi( legal::@8/(byte) legal::row#2 ) + (byte) legal::i#7 ← phi( legal::@8/(byte) legal::i#5 ) + (byte) diff::return#6 ← phi( legal::@8/(byte) diff::return#1 ) + (byte~) legal::$4 ← (byte) diff::return#6 + (bool~) legal::$5 ← (byte~) legal::$3 == (byte~) legal::$4 + (bool~) legal::$6 ← ! (bool~) legal::$5 + if((bool~) legal::$6) goto legal::@5 + to:legal::@7 +legal::@7: scope:[legal] from legal::@9 + (byte) legal::return#3 ← (number) 0 + to:legal::@return +legal::@return: scope:[legal] from legal::@3 legal::@4 legal::@7 + (byte) legal::return#6 ← phi( legal::@3/(byte) legal::return#1 legal::@4/(byte) legal::return#2 legal::@7/(byte) legal::return#3 ) + (byte) legal::return#4 ← (byte) legal::return#6 return to:@return -place::@5: scope:[place] from place::@9 - (byte) place::column#5 ← phi( place::@9/(byte) place::column#6 ) - (byte) place::row#4 ← phi( place::@9/(byte) place::row#7 ) - (byte) place::i#7 ← phi( place::@9/(byte) place::i#8 ) - (byte) place::i#2 ← ++ (byte) place::i#7 - to:place::@1 +legal::@5: scope:[legal] from legal::@9 + (byte) legal::column#5 ← phi( legal::@9/(byte) legal::column#6 ) + (byte) legal::row#4 ← phi( legal::@9/(byte) legal::row#7 ) + (byte) legal::i#6 ← phi( legal::@9/(byte) legal::i#7 ) + (byte) legal::i#1 ← ++ (byte) legal::i#6 + to:legal::@1 (byte()) diff((byte) diff::a , (byte) diff::b) -diff: scope:[diff] from place::@6 place::@8 - (byte) diff::b#2 ← phi( place::@6/(byte) diff::b#0 place::@8/(byte) diff::b#1 ) - (byte) diff::a#2 ← phi( place::@6/(byte) diff::a#0 place::@8/(byte) diff::a#1 ) +diff: scope:[diff] from legal::@6 legal::@8 + (byte) diff::b#2 ← phi( legal::@6/(byte) diff::b#0 legal::@8/(byte) diff::b#1 ) + (byte) diff::a#2 ← phi( legal::@6/(byte) diff::a#0 legal::@8/(byte) diff::a#1 ) (bool~) diff::$0 ← (byte) diff::a#2 < (byte) diff::b#2 if((bool~) diff::$0) goto diff::@1 to:diff::@2 @@ -1368,124 +1643,149 @@ diff::@return: scope:[diff] from diff::@1 diff::@2 to:@return (void()) print() -print: scope:[print] from queen::@4 - (byte) count ← ++ (byte) count +print: scope:[print] from queens::@5 + (dword) count#12 ← phi( queens::@5/(dword) count#17 ) + (dword) count#5 ← ++ (dword) count#12 (byte*) printf_str::str#4 ← (const byte*) print::str call printf_str to:print::@12 print::@12: scope:[print] from print - (byte) printf_uchar::uvalue#0 ← (byte) count - (byte) printf_uchar::format_min_length#0 ← (byte) 0 - (byte) printf_uchar::format_justify_left#0 ← (byte) 0 - (byte) printf_uchar::format_sign_always#0 ← (byte) 0 - (byte) printf_uchar::format_zero_padding#0 ← (byte) 0 - (byte) printf_uchar::format_upper_case#0 ← (byte) 0 - (byte) printf_uchar::format_radix#0 ← (const byte) DECIMAL - call printf_uchar + (dword) count#13 ← phi( print/(dword) count#5 ) + (dword) printf_ulong::uvalue#0 ← (dword) count#13 + (byte) printf_ulong::format_min_length#0 ← (byte) 0 + (byte) printf_ulong::format_justify_left#0 ← (byte) 0 + (byte) printf_ulong::format_sign_always#0 ← (byte) 0 + (byte) printf_ulong::format_zero_padding#0 ← (byte) 0 + (byte) printf_ulong::format_upper_case#0 ← (byte) 0 + (byte) printf_ulong::format_radix#0 ← (const byte) DECIMAL + call printf_ulong to:print::@13 print::@13: scope:[print] from print::@12 + (dword) count#41 ← phi( print::@12/(dword) count#13 ) (byte*) printf_str::str#5 ← (const byte*) print::str1 call printf_str to:print::@14 print::@14: scope:[print] from print::@13 + (dword) count#36 ← phi( print::@13/(dword) count#41 ) (byte) print::i#0 ← (byte) 1 to:print::@1 print::@1: scope:[print] from print::@14 print::@15 + (dword) count#33 ← phi( print::@14/(dword) count#36 print::@15/(dword) count#37 ) (byte) print::i#2 ← phi( print::@14/(byte) print::i#0 print::@15/(byte) print::i#1 ) (bool~) print::$1 ← (byte) print::i#2 <= (number) 8 if((bool~) print::$1) goto print::@2 to:print::@3 print::@2: scope:[print] from print::@1 + (dword) count#42 ← phi( print::@1/(dword) count#33 ) (byte) print::i#3 ← phi( print::@1/(byte) print::i#2 ) - (byte) printf_uchar::uvalue#1 ← (byte) print::i#3 - (byte) printf_uchar::format_min_length#1 ← (byte) 0 - (byte) printf_uchar::format_justify_left#1 ← (byte) 0 - (byte) printf_uchar::format_sign_always#1 ← (byte) 0 - (byte) printf_uchar::format_zero_padding#1 ← (byte) 0 - (byte) printf_uchar::format_upper_case#1 ← (byte) 0 - (byte) printf_uchar::format_radix#1 ← (const byte) DECIMAL + (byte) printf_uchar::uvalue#0 ← (byte) print::i#3 + (byte) printf_uchar::format_min_length#0 ← (byte) 0 + (byte) printf_uchar::format_justify_left#0 ← (byte) 0 + (byte) printf_uchar::format_sign_always#0 ← (byte) 0 + (byte) printf_uchar::format_zero_padding#0 ← (byte) 0 + (byte) printf_uchar::format_upper_case#0 ← (byte) 0 + (byte) printf_uchar::format_radix#0 ← (const byte) HEXADECIMAL call printf_uchar to:print::@15 print::@15: scope:[print] from print::@2 + (dword) count#37 ← phi( print::@2/(dword) count#42 ) (byte) print::i#4 ← phi( print::@2/(byte) print::i#3 ) (byte) print::i#1 ← ++ (byte) print::i#4 to:print::@1 print::@3: scope:[print] from print::@1 + (dword) count#29 ← phi( print::@1/(dword) count#33 ) (byte) print::i1#0 ← (byte) 1 to:print::@4 print::@4: scope:[print] from print::@3 print::@8 + (dword) count#20 ← phi( print::@3/(dword) count#29 print::@8/(dword) count#30 ) (byte) print::i1#2 ← phi( print::@3/(byte) print::i1#0 print::@8/(byte) print::i1#1 ) (bool~) print::$3 ← (byte) print::i1#2 <= (number) 8 if((bool~) print::$3) goto print::@5 to:print::@return print::@5: scope:[print] from print::@4 + (dword) count#46 ← phi( print::@4/(dword) count#20 ) (byte) print::i1#6 ← phi( print::@4/(byte) print::i1#2 ) (byte*) printf_str::str#6 ← (const byte*) print::str2 call printf_str to:print::@16 print::@16: scope:[print] from print::@5 + (dword) count#43 ← phi( print::@5/(dword) count#46 ) (byte) print::i1#3 ← phi( print::@5/(byte) print::i1#6 ) - (byte) printf_uchar::uvalue#2 ← (byte) print::i1#3 - (byte) printf_uchar::format_min_length#2 ← (byte) 0 - (byte) printf_uchar::format_justify_left#2 ← (byte) 0 - (byte) printf_uchar::format_sign_always#2 ← (byte) 0 - (byte) printf_uchar::format_zero_padding#2 ← (byte) 0 - (byte) printf_uchar::format_upper_case#2 ← (byte) 0 - (byte) printf_uchar::format_radix#2 ← (const byte) DECIMAL + (byte) printf_uchar::uvalue#1 ← (byte) print::i1#3 + (byte) printf_uchar::format_min_length#1 ← (byte) 0 + (byte) printf_uchar::format_justify_left#1 ← (byte) 0 + (byte) printf_uchar::format_sign_always#1 ← (byte) 0 + (byte) printf_uchar::format_zero_padding#1 ← (byte) 0 + (byte) printf_uchar::format_upper_case#1 ← (byte) 0 + (byte) printf_uchar::format_radix#1 ← (const byte) HEXADECIMAL call printf_uchar to:print::@17 print::@17: scope:[print] from print::@16 + (dword) count#39 ← phi( print::@16/(dword) count#43 ) (byte) print::i1#9 ← phi( print::@16/(byte) print::i1#3 ) (byte) print::j#0 ← (byte) 1 to:print::@6 print::@6: scope:[print] from print::@10 print::@17 + (dword) count#34 ← phi( print::@10/(dword) count#38 print::@17/(dword) count#39 ) (byte) print::i1#7 ← phi( print::@10/(byte) print::i1#8 print::@17/(byte) print::i1#9 ) (byte) print::j#2 ← phi( print::@10/(byte) print::j#1 print::@17/(byte) print::j#0 ) (bool~) print::$5 ← (byte) print::j#2 <= (number) 8 if((bool~) print::$5) goto print::@7 to:print::@8 print::@7: scope:[print] from print::@6 + (dword) count#49 ← phi( print::@6/(dword) count#34 ) (byte) print::j#3 ← phi( print::@6/(byte) print::j#2 ) (byte) print::i1#4 ← phi( print::@6/(byte) print::i1#7 ) (bool~) print::$6 ← *((const byte*) board + (byte) print::i1#4) == (byte) print::j#3 if((bool~) print::$6) goto print::@9 to:print::@11 print::@8: scope:[print] from print::@6 + (dword) count#30 ← phi( print::@6/(dword) count#34 ) (byte) print::i1#5 ← phi( print::@6/(byte) print::i1#7 ) (byte) print::i1#1 ← ++ (byte) print::i1#5 to:print::@4 print::@9: scope:[print] from print::@7 + (dword) count#47 ← phi( print::@7/(dword) count#49 ) (byte) print::i1#12 ← phi( print::@7/(byte) print::i1#4 ) (byte) print::j#7 ← phi( print::@7/(byte) print::j#3 ) (byte*) printf_str::str#7 ← (const byte*) print::str3 call printf_str to:print::@18 print::@18: scope:[print] from print::@9 + (dword) count#44 ← phi( print::@9/(dword) count#47 ) (byte) print::i1#10 ← phi( print::@9/(byte) print::i1#12 ) (byte) print::j#5 ← phi( print::@9/(byte) print::j#7 ) to:print::@10 print::@11: scope:[print] from print::@7 + (dword) count#48 ← phi( print::@7/(dword) count#49 ) (byte) print::i1#13 ← phi( print::@7/(byte) print::i1#4 ) (byte) print::j#8 ← phi( print::@7/(byte) print::j#3 ) (byte*) printf_str::str#8 ← (const byte*) print::str4 call printf_str to:print::@19 print::@19: scope:[print] from print::@11 + (dword) count#45 ← phi( print::@11/(dword) count#48 ) (byte) print::i1#11 ← phi( print::@11/(byte) print::i1#13 ) (byte) print::j#6 ← phi( print::@11/(byte) print::j#8 ) to:print::@10 print::@10: scope:[print] from print::@18 print::@19 + (dword) count#38 ← phi( print::@18/(dword) count#44 print::@19/(dword) count#45 ) (byte) print::i1#8 ← phi( print::@18/(byte) print::i1#10 print::@19/(byte) print::i1#11 ) (byte) print::j#4 ← phi( print::@18/(byte) print::j#5 print::@19/(byte) print::j#6 ) (byte) print::j#1 ← ++ (byte) print::j#4 to:print::@6 print::@return: scope:[print] from print::@4 + (dword) count#14 ← phi( print::@4/(dword) count#20 ) + (dword) count#6 ← (dword) count#14 return to:@return @3: scope:[] from @2 + (dword) count#21 ← phi( @2/(dword) count#0 ) call main to:@4 @4: scope:[] from @3 + (dword) count#15 ← phi( @3/(dword) count#2 ) + (dword) count#7 ← (dword) count#15 to:@end @end: scope:[] from @4 @@ -1509,16 +1809,70 @@ SYMBOL TABLE SSA (const byte) RADIX::OCTAL = (number) 8 (const word*) RADIX_BINARY_VALUES[] = { (word) $8000, (word) $4000, (word) $2000, (word) $1000, (word) $800, (word) $400, (word) $200, (word) $100, (word) $80, (word) $40, (word) $20, (word) $10, (word) 8, (word) 4, (word) 2 } (const byte*) RADIX_BINARY_VALUES_CHAR[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2 } +(const dword*) RADIX_BINARY_VALUES_LONG[] = { (dword) $80000000, (dword) $40000000, (dword) $20000000, (dword) $10000000, (dword) $8000000, (dword) $4000000, (dword) $2000000, (dword) $1000000, (dword) $800000, (dword) $400000, (dword) $200000, (dword) $100000, (dword) $80000, (dword) $40000, (dword) $20000, (dword) $10000, (dword) $8000, (dword) $4000, (dword) $2000, (dword) $1000, (dword) $800, (dword) $400, (dword) $200, (dword) $100, (dword) $80, (dword) $40, (dword) $20, (dword) $10, (dword) 8, (dword) 4, (dword) 2 } (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 word*) RADIX_HEXADECIMAL_VALUES[] = { (word) $1000, (word) $100, (word) $10 } (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR[] = { (byte) $10 } +(const dword*) RADIX_HEXADECIMAL_VALUES_LONG[] = { (dword) $10000000, (dword) $1000000, (dword) $100000, (dword) $10000, (dword) $1000, (dword) $100, (dword) $10 } (const word*) RADIX_OCTAL_VALUES[] = { (word) $8000, (word) $1000, (word) $200, (word) $40, (word) 8 } (const byte*) RADIX_OCTAL_VALUES_CHAR[] = { (byte) $40, (byte) 8 } +(const dword*) RADIX_OCTAL_VALUES_LONG[] = { (dword) $40000000, (dword) $8000000, (dword) $1000000, (dword) $200000, (dword) $40000, (dword) $8000, (dword) $1000, (dword) $200, (dword) $40, (dword) 8 } +(const byte) SIZEOF_DWORD = (byte) 4 (const byte) SIZEOF_WORD = (byte) 2 -(const word) STACK_BASE = (word) $103 (const byte*) board[(number) $14] = { fill( $14, 0) } -(byte) count loadstore +(dword) count +(dword) count#0 +(dword) count#1 +(dword) count#10 +(dword) count#11 +(dword) count#12 +(dword) count#13 +(dword) count#14 +(dword) count#15 +(dword) count#16 +(dword) count#17 +(dword) count#18 +(dword) count#19 +(dword) count#2 +(dword) count#20 +(dword) count#21 +(dword) count#22 +(dword) count#23 +(dword) count#24 +(dword) count#25 +(dword) count#26 +(dword) count#27 +(dword) count#28 +(dword) count#29 +(dword) count#3 +(dword) count#30 +(dword) count#31 +(dword) count#32 +(dword) count#33 +(dword) count#34 +(dword) count#35 +(dword) count#36 +(dword) count#37 +(dword) count#38 +(dword) count#39 +(dword) count#4 +(dword) count#40 +(dword) count#41 +(dword) count#42 +(dword) count#43 +(dword) count#44 +(dword) count#45 +(dword) count#46 +(dword) count#47 +(dword) count#48 +(dword) count#49 +(dword) count#5 +(dword) count#6 +(dword) count#7 +(dword) count#8 +(dword) count#9 (byte()) diff((byte) diff::a , (byte) diff::b) (bool~) diff::$0 (byte~) diff::$1 @@ -1547,16 +1901,69 @@ SYMBOL TABLE SSA (byte) diff::return#5 (byte) diff::return#6 (byte) diff::return#7 +(byte()) legal((byte) legal::row , (byte) legal::column) +(number~) legal::$0 +(bool~) legal::$1 +(bool~) legal::$2 +(byte~) legal::$3 +(byte~) legal::$4 +(bool~) legal::$5 +(bool~) legal::$6 +(label) legal::@1 +(label) legal::@2 +(label) legal::@3 +(label) legal::@4 +(label) legal::@5 +(label) legal::@6 +(label) legal::@7 +(label) legal::@8 +(label) legal::@9 +(label) legal::@return +(byte) legal::column +(byte) legal::column#0 +(byte) legal::column#1 +(byte) legal::column#2 +(byte) legal::column#3 +(byte) legal::column#4 +(byte) legal::column#5 +(byte) legal::column#6 +(byte) legal::column#7 +(byte) legal::i +(byte) legal::i#0 +(byte) legal::i#1 +(byte) legal::i#2 +(byte) legal::i#3 +(byte) legal::i#4 +(byte) legal::i#5 +(byte) legal::i#6 +(byte) legal::i#7 +(byte) legal::return +(byte) legal::return#0 +(byte) legal::return#1 +(byte) legal::return#2 +(byte) legal::return#3 +(byte) legal::return#4 +(byte) legal::return#5 +(byte) legal::return#6 +(byte) legal::row +(byte) legal::row#0 +(byte) legal::row#1 +(byte) legal::row#2 +(byte) legal::row#3 +(byte) legal::row#4 +(byte) legal::row#5 +(byte) legal::row#6 +(byte) legal::row#7 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 +(label) main::@5 (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) (byte*~) memcpy::$0 (bool~) memcpy::$1 @@ -1642,60 +2049,6 @@ Number of Queens:" (void*) memset::str#4 (void*) memset::str#5 (void*) memset::str#6 -(byte()) place((byte) place::row , (byte) place::column) -(number~) place::$0 -(bool~) place::$1 -(bool~) place::$2 -(byte~) place::$3 -(byte~) place::$4 -(bool~) place::$5 -(bool~) place::$6 -(label) place::@1 -(label) place::@2 -(label) place::@3 -(label) place::@4 -(label) place::@5 -(label) place::@6 -(label) place::@7 -(label) place::@8 -(label) place::@9 -(label) place::@return -(byte) place::column -(byte) place::column#0 -(byte) place::column#1 -(byte) place::column#2 -(byte) place::column#3 -(byte) place::column#4 -(byte) place::column#5 -(byte) place::column#6 -(byte) place::column#7 -(byte) place::i -(byte) place::i#0 -(byte) place::i#1 -(byte) place::i#2 -(byte) place::i#3 -(byte) place::i#4 -(byte) place::i#5 -(byte) place::i#6 -(byte) place::i#7 -(byte) place::i#8 -(byte) place::return -(byte) place::return#0 -(byte) place::return#1 -(byte) place::return#2 -(byte) place::return#3 -(byte) place::return#4 -(byte) place::return#5 -(byte) place::return#6 -(byte) place::row -(byte) place::row#0 -(byte) place::row#1 -(byte) place::row#2 -(byte) place::row#3 -(byte) place::row#4 -(byte) place::row#5 -(byte) place::row#6 -(byte) place::row#7 (void()) print() (bool~) print::$1 (bool~) print::$3 @@ -1752,8 +2105,8 @@ Number of Queens:" (byte) print::j#6 (byte) print::j#7 (byte) print::j#8 -(const byte*) print::str[(byte) $b] = (byte*) " -Solution " +(const byte*) print::str[(byte) 3] = (byte*) " +#" (const byte*) print::str1[(byte) 4] = (byte*) ": " (const byte*) print::str2[(byte) 2] = (byte*) " @@ -1859,6 +2212,7 @@ Solution " (byte*) printf_number_buffer::buffer_digits#19 (byte*) printf_number_buffer::buffer_digits#2 (byte*) printf_number_buffer::buffer_digits#20 +(byte*) printf_number_buffer::buffer_digits#21 (byte*) printf_number_buffer::buffer_digits#3 (byte*) printf_number_buffer::buffer_digits#4 (byte*) printf_number_buffer::buffer_digits#5 @@ -1872,6 +2226,7 @@ Solution " (byte) printf_number_buffer::buffer_sign#10 (byte) printf_number_buffer::buffer_sign#11 (byte) printf_number_buffer::buffer_sign#12 +(byte) printf_number_buffer::buffer_sign#13 (byte) printf_number_buffer::buffer_sign#2 (byte) printf_number_buffer::buffer_sign#3 (byte) printf_number_buffer::buffer_sign#4 @@ -1897,6 +2252,7 @@ Solution " (byte) printf_number_buffer::format_justify_left#2 (byte) printf_number_buffer::format_justify_left#20 (byte) printf_number_buffer::format_justify_left#21 +(byte) printf_number_buffer::format_justify_left#22 (byte) printf_number_buffer::format_justify_left#3 (byte) printf_number_buffer::format_justify_left#4 (byte) printf_number_buffer::format_justify_left#5 @@ -1912,12 +2268,15 @@ Solution " (byte) printf_number_buffer::format_min_length#4 (byte) printf_number_buffer::format_min_length#5 (byte) printf_number_buffer::format_min_length#6 +(byte) printf_number_buffer::format_min_length#7 (byte) printf_number_buffer::format_radix (byte) printf_number_buffer::format_radix#0 (byte) printf_number_buffer::format_radix#1 +(byte) printf_number_buffer::format_radix#2 (byte) printf_number_buffer::format_sign_always (byte) printf_number_buffer::format_sign_always#0 (byte) printf_number_buffer::format_sign_always#1 +(byte) printf_number_buffer::format_sign_always#2 (byte) printf_number_buffer::format_upper_case (byte) printf_number_buffer::format_upper_case#0 (byte) printf_number_buffer::format_upper_case#1 @@ -1929,6 +2288,7 @@ Solution " (byte) printf_number_buffer::format_upper_case#15 (byte) printf_number_buffer::format_upper_case#16 (byte) printf_number_buffer::format_upper_case#17 +(byte) printf_number_buffer::format_upper_case#18 (byte) printf_number_buffer::format_upper_case#2 (byte) printf_number_buffer::format_upper_case#3 (byte) printf_number_buffer::format_upper_case#4 @@ -1953,6 +2313,7 @@ Solution " (byte) printf_number_buffer::format_zero_padding#2 (byte) printf_number_buffer::format_zero_padding#20 (byte) printf_number_buffer::format_zero_padding#21 +(byte) printf_number_buffer::format_zero_padding#22 (byte) printf_number_buffer::format_zero_padding#3 (byte) printf_number_buffer::format_zero_padding#4 (byte) printf_number_buffer::format_zero_padding#5 @@ -2074,7 +2435,6 @@ Solution " (byte) printf_uchar::format_justify_left#4 (byte) printf_uchar::format_justify_left#5 (byte) printf_uchar::format_justify_left#6 -(byte) printf_uchar::format_justify_left#7 (byte) printf_uchar::format_min_length (byte) printf_uchar::format_min_length#0 (byte) printf_uchar::format_min_length#1 @@ -2083,7 +2443,6 @@ Solution " (byte) printf_uchar::format_min_length#4 (byte) printf_uchar::format_min_length#5 (byte) printf_uchar::format_min_length#6 -(byte) printf_uchar::format_min_length#7 (byte) printf_uchar::format_radix (byte) printf_uchar::format_radix#0 (byte) printf_uchar::format_radix#1 @@ -2092,7 +2451,6 @@ Solution " (byte) printf_uchar::format_radix#4 (byte) printf_uchar::format_radix#5 (byte) printf_uchar::format_radix#6 -(byte) printf_uchar::format_radix#7 (byte) printf_uchar::format_sign_always (byte) printf_uchar::format_sign_always#0 (byte) printf_uchar::format_sign_always#1 @@ -2101,7 +2459,6 @@ Solution " (byte) printf_uchar::format_sign_always#4 (byte) printf_uchar::format_sign_always#5 (byte) printf_uchar::format_sign_always#6 -(byte) printf_uchar::format_sign_always#7 (byte) printf_uchar::format_upper_case (byte) printf_uchar::format_upper_case#0 (byte) printf_uchar::format_upper_case#1 @@ -2110,7 +2467,6 @@ Solution " (byte) printf_uchar::format_upper_case#4 (byte) printf_uchar::format_upper_case#5 (byte) printf_uchar::format_upper_case#6 -(byte) printf_uchar::format_upper_case#7 (byte) printf_uchar::format_zero_padding (byte) printf_uchar::format_zero_padding#0 (byte) printf_uchar::format_zero_padding#1 @@ -2119,7 +2475,6 @@ Solution " (byte) printf_uchar::format_zero_padding#4 (byte) printf_uchar::format_zero_padding#5 (byte) printf_uchar::format_zero_padding#6 -(byte) printf_uchar::format_zero_padding#7 (byte) printf_uchar::uvalue (byte) printf_uchar::uvalue#0 (byte) printf_uchar::uvalue#1 @@ -2127,7 +2482,6 @@ Solution " (byte) printf_uchar::uvalue#3 (byte) printf_uchar::uvalue#4 (byte) printf_uchar::uvalue#5 -(byte) printf_uchar::uvalue#6 (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) (number~) printf_uint::$0 (byte~) printf_uint::$1 @@ -2188,27 +2542,97 @@ Solution " (word) printf_uint::uvalue#2 (word) printf_uint::uvalue#3 (word) printf_uint::uvalue#4 -__stackcall (void()) queen((byte) queen::row) -(bool~) queen::$0 -(byte~) queen::$1 -(bool~) queen::$2 -(bool~) queen::$3 -(number~) queen::$4 -(bool~) queen::$7 -(label) queen::@1 -(label) queen::@2 -(label) queen::@3 -(label) queen::@4 -(label) queen::@5 -(label) queen::@6 -(label) queen::@7 -(label) queen::@8 -(label) queen::@return -(const byte) queen::OFFSET_STACK_ROW = (byte) 0 -(byte) queen::column loadstore -(byte) queen::r loadstore -(byte) queen::row -(byte) queen::row#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) +(number~) printf_ulong::$0 +(byte~) printf_ulong::$1 +(number~) printf_ulong::$2 +(bool~) printf_ulong::$5 +(label) printf_ulong::@1 +(label) printf_ulong::@2 +(label) printf_ulong::@3 +(label) printf_ulong::@4 +(label) printf_ulong::@5 +(label) printf_ulong::@return +(struct printf_format_number) printf_ulong::format +(byte) printf_ulong::format_justify_left +(byte) printf_ulong::format_justify_left#0 +(byte) printf_ulong::format_justify_left#1 +(byte) printf_ulong::format_justify_left#2 +(byte) printf_ulong::format_justify_left#3 +(byte) printf_ulong::format_justify_left#4 +(byte) printf_ulong::format_justify_left#5 +(byte) printf_ulong::format_min_length +(byte) printf_ulong::format_min_length#0 +(byte) printf_ulong::format_min_length#1 +(byte) printf_ulong::format_min_length#2 +(byte) printf_ulong::format_min_length#3 +(byte) printf_ulong::format_min_length#4 +(byte) printf_ulong::format_min_length#5 +(byte) printf_ulong::format_radix +(byte) printf_ulong::format_radix#0 +(byte) printf_ulong::format_radix#1 +(byte) printf_ulong::format_radix#2 +(byte) printf_ulong::format_radix#3 +(byte) printf_ulong::format_radix#4 +(byte) printf_ulong::format_radix#5 +(byte) printf_ulong::format_sign_always +(byte) printf_ulong::format_sign_always#0 +(byte) printf_ulong::format_sign_always#1 +(byte) printf_ulong::format_sign_always#2 +(byte) printf_ulong::format_sign_always#3 +(byte) printf_ulong::format_sign_always#4 +(byte) printf_ulong::format_sign_always#5 +(byte) printf_ulong::format_upper_case +(byte) printf_ulong::format_upper_case#0 +(byte) printf_ulong::format_upper_case#1 +(byte) printf_ulong::format_upper_case#2 +(byte) printf_ulong::format_upper_case#3 +(byte) printf_ulong::format_upper_case#4 +(byte) printf_ulong::format_upper_case#5 +(byte) printf_ulong::format_zero_padding +(byte) printf_ulong::format_zero_padding#0 +(byte) printf_ulong::format_zero_padding#1 +(byte) printf_ulong::format_zero_padding#2 +(byte) printf_ulong::format_zero_padding#3 +(byte) printf_ulong::format_zero_padding#4 +(byte) printf_ulong::format_zero_padding#5 +(dword) printf_ulong::uvalue +(dword) printf_ulong::uvalue#0 +(dword) printf_ulong::uvalue#1 +(dword) printf_ulong::uvalue#2 +(dword) printf_ulong::uvalue#3 +(dword) printf_ulong::uvalue#4 +(void()) queens() +(bool~) queens::$1 +(byte~) queens::$2 +(bool~) queens::$3 +(bool~) queens::$5 +(bool~) queens::$6 +(label) queens::@1 +(label) queens::@10 +(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#0 +(byte) queens::row#1 +(byte) queens::row#10 +(byte) queens::row#11 +(byte) queens::row#12 +(byte) queens::row#2 +(byte) queens::row#3 +(byte) queens::row#4 +(byte) queens::row#5 +(byte) queens::row#6 +(byte) queens::row#7 +(byte) queens::row#8 +(byte) queens::row#9 (word()) strlen((byte*) strlen::str) (bool~) strlen::$0 (label) strlen::@1 @@ -2430,6 +2854,158 @@ __stackcall (void()) queen((byte) queen::row) (byte) uctoa_append::value#3 (byte) uctoa_append::value#4 (byte) uctoa_append::value#5 +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +(bool~) ultoa::$0 +(bool~) ultoa::$1 +(byte~) ultoa::$10 +(byte~) ultoa::$11 +(bool~) ultoa::$2 +(bool~) ultoa::$3 +(number~) ultoa::$4 +(bool~) ultoa::$5 +(bool~) ultoa::$6 +(bool~) ultoa::$7 +(bool~) ultoa::$8 +(dword~) ultoa::$9 +(label) ultoa::@1 +(label) ultoa::@10 +(label) ultoa::@11 +(label) ultoa::@12 +(label) ultoa::@13 +(label) ultoa::@14 +(label) ultoa::@15 +(label) ultoa::@2 +(label) ultoa::@3 +(label) ultoa::@4 +(label) ultoa::@5 +(label) ultoa::@6 +(label) ultoa::@7 +(label) ultoa::@8 +(label) ultoa::@9 +(label) ultoa::@return +(byte*) ultoa::buffer +(byte*) ultoa::buffer#0 +(byte*) ultoa::buffer#1 +(byte*) ultoa::buffer#10 +(byte*) ultoa::buffer#11 +(byte*) ultoa::buffer#12 +(byte*) ultoa::buffer#13 +(byte*) ultoa::buffer#14 +(byte*) ultoa::buffer#15 +(byte*) ultoa::buffer#16 +(byte*) ultoa::buffer#17 +(byte*) ultoa::buffer#18 +(byte*) ultoa::buffer#19 +(byte*) ultoa::buffer#2 +(byte*) ultoa::buffer#20 +(byte*) ultoa::buffer#21 +(byte*) ultoa::buffer#3 +(byte*) ultoa::buffer#4 +(byte*) ultoa::buffer#5 +(byte*) ultoa::buffer#6 +(byte*) ultoa::buffer#7 +(byte*) ultoa::buffer#8 +(byte*) ultoa::buffer#9 +(byte) ultoa::digit +(byte) ultoa::digit#0 +(byte) ultoa::digit#1 +(byte) ultoa::digit#2 +(byte) ultoa::digit#3 +(byte) ultoa::digit#4 +(byte) ultoa::digit#5 +(byte) ultoa::digit#6 +(dword) ultoa::digit_value +(dword) ultoa::digit_value#0 +(dword) ultoa::digit_value#1 +(dword*) ultoa::digit_values +(dword*) ultoa::digit_values#0 +(dword*) ultoa::digit_values#1 +(dword*) ultoa::digit_values#10 +(dword*) ultoa::digit_values#2 +(dword*) ultoa::digit_values#3 +(dword*) ultoa::digit_values#4 +(dword*) ultoa::digit_values#5 +(dword*) ultoa::digit_values#6 +(dword*) ultoa::digit_values#7 +(dword*) ultoa::digit_values#8 +(dword*) ultoa::digit_values#9 +(byte) ultoa::max_digits +(byte) ultoa::max_digits#0 +(byte) ultoa::max_digits#1 +(byte) ultoa::max_digits#10 +(byte) ultoa::max_digits#2 +(byte) ultoa::max_digits#3 +(byte) ultoa::max_digits#4 +(byte) ultoa::max_digits#5 +(byte) ultoa::max_digits#6 +(byte) ultoa::max_digits#7 +(byte) ultoa::max_digits#8 +(byte) ultoa::max_digits#9 +(byte) ultoa::radix +(byte) ultoa::radix#0 +(byte) ultoa::radix#1 +(byte) ultoa::radix#2 +(byte) ultoa::radix#3 +(byte) ultoa::radix#4 +(byte) ultoa::started +(byte) ultoa::started#0 +(byte) ultoa::started#1 +(byte) ultoa::started#2 +(byte) ultoa::started#3 +(byte) ultoa::started#4 +(dword) ultoa::value +(dword) ultoa::value#0 +(dword) ultoa::value#1 +(dword) ultoa::value#10 +(dword) ultoa::value#11 +(dword) ultoa::value#12 +(dword) ultoa::value#13 +(dword) ultoa::value#14 +(dword) ultoa::value#15 +(dword) ultoa::value#2 +(dword) ultoa::value#3 +(dword) ultoa::value#4 +(dword) ultoa::value#5 +(dword) ultoa::value#6 +(dword) ultoa::value#7 +(dword) ultoa::value#8 +(dword) ultoa::value#9 +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +(bool~) ultoa_append::$0 +(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 +(byte*) ultoa_append::buffer#1 +(byte*) ultoa_append::buffer#2 +(byte*) ultoa_append::buffer#3 +(byte*) ultoa_append::buffer#4 +(byte) ultoa_append::digit +(byte) ultoa_append::digit#0 +(byte) ultoa_append::digit#1 +(byte) ultoa_append::digit#2 +(byte) ultoa_append::digit#3 +(byte) ultoa_append::digit#4 +(dword) ultoa_append::return +(dword) ultoa_append::return#0 +(dword) ultoa_append::return#1 +(dword) ultoa_append::return#2 +(dword) ultoa_append::return#3 +(dword) ultoa_append::return#4 +(dword) ultoa_append::sub +(dword) ultoa_append::sub#0 +(dword) ultoa_append::sub#1 +(dword) ultoa_append::sub#2 +(dword) ultoa_append::sub#3 +(dword) ultoa_append::value +(dword) ultoa_append::value#0 +(dword) ultoa_append::value#1 +(dword) ultoa_append::value#2 +(dword) ultoa_append::value#3 +(dword) ultoa_append::value#4 +(dword) ultoa_append::value#5 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) (bool~) utoa::$0 (bool~) utoa::$1 @@ -2604,6 +3180,15 @@ Adding number conversion cast (unumber) 1 in (number~) utoa::$4 ← (byte) utoa: Adding number conversion cast (unumber) utoa::$4 in (number~) utoa::$4 ← (byte) utoa::max_digits#5 - (unumber)(number) 1 Adding number conversion cast (unumber) 0 in *((byte*) utoa::buffer#3) ← (number) 0 Adding number conversion cast (unumber) 1 in (byte) utoa::started#1 ← (number) 1 +Adding number conversion cast (unumber) $a in (byte) ultoa::max_digits#1 ← (number) $a +Adding number conversion cast (unumber) 8 in (byte) ultoa::max_digits#2 ← (number) 8 +Adding number conversion cast (unumber) $b in (byte) ultoa::max_digits#3 ← (number) $b +Adding number conversion cast (unumber) $20 in (byte) ultoa::max_digits#4 ← (number) $20 +Adding number conversion cast (unumber) 0 in *((byte*) ultoa::buffer#2) ← (number) 0 +Adding number conversion cast (unumber) 1 in (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (number) 1 +Adding number conversion cast (unumber) ultoa::$4 in (number~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (unumber)(number) 1 +Adding number conversion cast (unumber) 0 in *((byte*) ultoa::buffer#3) ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) ultoa::started#1 ← (number) 1 Adding number conversion cast (unumber) $28*$19 in (word) memset::num#0 ← (number) $28*(number) $19 Adding number conversion cast (unumber) 0 in (byte) printf_cursor_x ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) printf_cursor_y ← (number) 0 @@ -2616,6 +3201,23 @@ Adding number conversion cast (unumber) $28*$19-$28 in (word) memcpy::num#0 ← Adding number conversion cast (unumber) $28 in (word) memset::num#1 ← (number) $28 Adding number conversion cast (unumber) $28 in (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (number) $28 Adding number conversion cast (unumber) 0 in (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (number) 0 +Adding number conversion cast (unumber) 0 in (bool~) printf_ulong::$5 ← (number) 0 != (byte) printf_ulong::format_sign_always#1 +Adding number conversion cast (unumber) printf_ulong::$2 in (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (number~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) +Adding number conversion cast (unumber) printf_ulong::$0 in (byte) printf_ulong::format_upper_case#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_upper_case#3 printf_ulong::@2/(byte) printf_ulong::format_upper_case#4 ) + (byte) printf_ulong::format_zero_padding#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_zero_padding#3 printf_ulong::@2/(byte) printf_ulong::format_zero_padding#4 ) + (byte) printf_ulong::format_sign_always#3 ← phi( printf_ulong::@1/(byte) printf_ulong::format_sign_always#4 printf_ulong::@2/(byte) printf_ulong::format_sign_always#5 ) + (byte) printf_ulong::format_justify_left#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_justify_left#3 printf_ulong::@2/(byte) printf_ulong::format_justify_left#4 ) + (byte) printf_ulong::format_min_length#2 ← phi( printf_ulong::@1/(byte) printf_ulong::format_min_length#3 printf_ulong::@2/(byte) printf_ulong::format_min_length#4 ) + (byte) printf_ulong::format_radix#1 ← phi( printf_ulong::@1/(byte) printf_ulong::format_radix#3 printf_ulong::@2/(byte) printf_ulong::format_radix#4 ) + (dword) printf_ulong::uvalue#1 ← phi( printf_ulong::@1/(dword) printf_ulong::uvalue#2 printf_ulong::@2/(dword) printf_ulong::uvalue#3 ) + (unumber~) printf_ulong::$2 ← phi( printf_ulong::@1/(byte~) printf_ulong::$1 printf_ulong::@2/(number~) printf_ulong::$0 ) Adding number conversion cast (unumber) 0 in (bool~) printf_uint::$5 ← (number) 0 != (byte) printf_uint::format_sign_always#1 Adding number conversion cast (unumber) printf_uint::$2 in (byte) printf_uint::format_upper_case#2 ← phi( printf_uint::@1/(byte) printf_uint::format_upper_case#3 printf_uint::@2/(byte) printf_uint::format_upper_case#4 ) (byte) printf_uint::format_zero_padding#2 ← phi( printf_uint::@1/(byte) printf_uint::format_zero_padding#3 printf_uint::@2/(byte) printf_uint::format_zero_padding#4 ) @@ -2633,49 +3235,48 @@ Adding number conversion cast (unumber) printf_uint::$0 in (byte) printf_uint::f (byte) printf_uint::format_radix#1 ← phi( printf_uint::@1/(byte) printf_uint::format_radix#3 printf_uint::@2/(byte) printf_uint::format_radix#4 ) (word) printf_uint::uvalue#1 ← phi( printf_uint::@1/(word) printf_uint::uvalue#2 printf_uint::@2/(word) printf_uint::uvalue#3 ) (unumber~) printf_uint::$2 ← phi( printf_uint::@1/(byte~) printf_uint::$1 printf_uint::@2/(number~) printf_uint::$0 ) -Adding number conversion cast (unumber) 0 in (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#3 -Adding number conversion cast (unumber) printf_uchar::$2 in (byte) printf_uchar::format_upper_case#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#5 printf_uchar::@2/(byte) printf_uchar::format_upper_case#6 ) - (byte) printf_uchar::format_zero_padding#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#5 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#6 ) - (byte) printf_uchar::format_sign_always#5 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#6 printf_uchar::@2/(byte) printf_uchar::format_sign_always#7 ) - (byte) printf_uchar::format_justify_left#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#5 printf_uchar::@2/(byte) printf_uchar::format_justify_left#6 ) - (byte) printf_uchar::format_min_length#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#5 printf_uchar::@2/(byte) printf_uchar::format_min_length#6 ) - (byte) printf_uchar::format_radix#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#5 printf_uchar::@2/(byte) printf_uchar::format_radix#6 ) - (byte) printf_uchar::uvalue#3 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#4 printf_uchar::@2/(byte) printf_uchar::uvalue#5 ) +Adding number conversion cast (unumber) 0 in (bool~) printf_uchar::$5 ← (number) 0 != (byte) printf_uchar::format_sign_always#2 +Adding number conversion cast (unumber) printf_uchar::$2 in (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) (number~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) -Adding number conversion cast (unumber) printf_uchar::$0 in (byte) printf_uchar::format_upper_case#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#5 printf_uchar::@2/(byte) printf_uchar::format_upper_case#6 ) - (byte) printf_uchar::format_zero_padding#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#5 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#6 ) - (byte) printf_uchar::format_sign_always#5 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#6 printf_uchar::@2/(byte) printf_uchar::format_sign_always#7 ) - (byte) printf_uchar::format_justify_left#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#5 printf_uchar::@2/(byte) printf_uchar::format_justify_left#6 ) - (byte) printf_uchar::format_min_length#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#5 printf_uchar::@2/(byte) printf_uchar::format_min_length#6 ) - (byte) printf_uchar::format_radix#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#5 printf_uchar::@2/(byte) printf_uchar::format_radix#6 ) - (byte) printf_uchar::uvalue#3 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#4 printf_uchar::@2/(byte) printf_uchar::uvalue#5 ) +Adding number conversion cast (unumber) printf_uchar::$0 in (byte) printf_uchar::format_upper_case#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_upper_case#4 printf_uchar::@2/(byte) printf_uchar::format_upper_case#5 ) + (byte) printf_uchar::format_zero_padding#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_zero_padding#4 printf_uchar::@2/(byte) printf_uchar::format_zero_padding#5 ) + (byte) printf_uchar::format_sign_always#4 ← phi( printf_uchar::@1/(byte) printf_uchar::format_sign_always#5 printf_uchar::@2/(byte) printf_uchar::format_sign_always#6 ) + (byte) printf_uchar::format_justify_left#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_justify_left#4 printf_uchar::@2/(byte) printf_uchar::format_justify_left#5 ) + (byte) printf_uchar::format_min_length#3 ← phi( printf_uchar::@1/(byte) printf_uchar::format_min_length#4 printf_uchar::@2/(byte) printf_uchar::format_min_length#5 ) + (byte) printf_uchar::format_radix#2 ← phi( printf_uchar::@1/(byte) printf_uchar::format_radix#4 printf_uchar::@2/(byte) printf_uchar::format_radix#5 ) + (byte) printf_uchar::uvalue#2 ← phi( printf_uchar::@1/(byte) printf_uchar::uvalue#3 printf_uchar::@2/(byte) printf_uchar::uvalue#4 ) (unumber~) printf_uchar::$2 ← phi( printf_uchar::@1/(byte~) printf_uchar::$1 printf_uchar::@2/(number~) printf_uchar::$0 ) -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#2 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#2 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#2 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#2 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$26 ← (number) 0 != (byte) printf_number_buffer::format_min_length#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$27 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$28 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$29 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 Adding number conversion cast (snumber) 0 in (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (number) 0 Adding number conversion cast (snumber) 0 in (signed byte) printf_number_buffer::padding#2 ← (number) 0 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#3 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#2 -Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#4 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$30 ← (number) 0 != (byte) printf_number_buffer::buffer_sign#4 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$31 ← (number) 0 != (byte) printf_number_buffer::format_upper_case#3 +Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$32 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#5 Adding number conversion cast (unumber) 8 in (word) printf_uint::uvalue#0 ← (number) 8 -Adding number conversion cast (unumber) 1 in stackpush(byte) ← (number) 1 -Adding number conversion cast (unumber) 8 in (bool~) queen::$0 ← (byte) queen::column <= (number) 8 -Adding number conversion cast (unumber) 0 in (bool~) queen::$7 ← (number) 0 != (byte~) queen::$1 -Adding number conversion cast (unumber) 8 in (bool~) queen::$3 ← (byte) queen::r == (number) 8 -Adding number conversion cast (unumber) 1 in (number~) queen::$4 ← (byte) queen::r + (number) 1 -Adding number conversion cast (unumber) queen::$4 in (number~) queen::$4 ← (byte) queen::r + (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (byte) place::i#1 ← (number) 1 -Adding number conversion cast (unumber) 1 in (number~) place::$0 ← (byte) place::row#1 - (number) 1 -Adding number conversion cast (unumber) place::$0 in (number~) place::$0 ← (byte) place::row#1 - (unumber)(number) 1 -Adding number conversion cast (unumber) 1 in (byte) place::return#1 ← (number) 1 -Adding number conversion cast (unumber) 0 in (byte) place::return#2 ← (number) 0 -Adding number conversion cast (unumber) 0 in (byte) place::return#3 ← (number) 0 +Adding number conversion cast (unumber) 8+1 in (bool~) queens::$1 ← *((const byte*) board + (byte) queens::row#3) == (number) 8+(number) 1 +Adding number conversion cast (unumber) 0 in *((const byte*) board + (byte) queens::row#4) ← (number) 0 +Adding number conversion cast (unumber) 1 in (bool~) queens::$5 ← (byte) queens::row#4 == (number) 1 +Adding number conversion cast (unumber) 0 in (bool~) queens::$6 ← (number) 0 != (byte~) queens::$2 +Adding number conversion cast (unumber) 8 in (bool~) queens::$3 ← (byte) queens::row#6 == (number) 8 +Adding number conversion cast (unumber) 1 in (number~) legal::$0 ← (byte) legal::row#1 - (number) 1 +Adding number conversion cast (unumber) legal::$0 in (number~) legal::$0 ← (byte) legal::row#1 - (unumber)(number) 1 +Adding number conversion cast (unumber) 1 in (byte) legal::return#1 ← (number) 1 +Adding number conversion cast (unumber) 0 in (byte) legal::return#2 ← (number) 0 +Adding number conversion cast (unumber) 0 in (byte) legal::return#3 ← (number) 0 Adding number conversion cast (unumber) 8 in (bool~) print::$1 ← (byte) print::i#2 <= (number) 8 Adding number conversion cast (unumber) 8 in (bool~) print::$3 ← (byte) print::i1#2 <= (number) 8 Adding number conversion cast (unumber) 8 in (bool~) print::$5 ← (byte) print::j#2 <= (number) 8 Successful SSA optimization PassNAddNumberTypeConversions +Adding number conversion cast (unumber) 0 in (unumber~) printf_ulong::$0 ← (number) 0 Adding number conversion cast (unumber) 0 in (unumber~) printf_uint::$0 ← (number) 0 Adding number conversion cast (unumber) 0 in (unumber~) printf_uchar::$0 ← (number) 0 Successful SSA optimization PassNAddNumberTypeConversions @@ -2696,6 +3297,13 @@ Inlining cast (byte) utoa::max_digits#4 ← (unumber)(number) $10 Inlining cast *((byte*) utoa::buffer#2) ← (unumber)(number) 0 Inlining cast *((byte*) utoa::buffer#3) ← (unumber)(number) 0 Inlining cast (byte) utoa::started#1 ← (unumber)(number) 1 +Inlining cast (byte) ultoa::max_digits#1 ← (unumber)(number) $a +Inlining cast (byte) ultoa::max_digits#2 ← (unumber)(number) 8 +Inlining cast (byte) ultoa::max_digits#3 ← (unumber)(number) $b +Inlining cast (byte) ultoa::max_digits#4 ← (unumber)(number) $20 +Inlining cast *((byte*) ultoa::buffer#2) ← (unumber)(number) 0 +Inlining cast *((byte*) ultoa::buffer#3) ← (unumber)(number) 0 +Inlining cast (byte) ultoa::started#1 ← (unumber)(number) 1 Inlining cast (word) memset::num#0 ← (unumber)(number) $28*(number) $19 Inlining cast (byte*) printf_cursor_ptr ← (byte*)(number) $400 Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 @@ -2704,15 +3312,15 @@ Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 Inlining cast (byte) printf_cursor_x ← (unumber)(number) 0 Inlining cast (word) memcpy::num#0 ← (unumber)(number) $28*(number) $19-(number) $28 Inlining cast (word) memset::num#1 ← (unumber)(number) $28 +Inlining cast (unumber~) printf_ulong::$0 ← (unumber)(number) 0 Inlining cast (unumber~) printf_uint::$0 ← (unumber)(number) 0 Inlining cast (unumber~) printf_uchar::$0 ← (unumber)(number) 0 Inlining cast (signed byte) printf_number_buffer::padding#2 ← (snumber)(number) 0 Inlining cast (word) printf_uint::uvalue#0 ← (unumber)(number) 8 -Inlining cast stackpush(byte) ← (unumber)(number) 1 -Inlining cast (byte) place::i#1 ← (unumber)(number) 1 -Inlining cast (byte) place::return#1 ← (unumber)(number) 1 -Inlining cast (byte) place::return#2 ← (unumber)(number) 0 -Inlining cast (byte) place::return#3 ← (unumber)(number) 0 +Inlining cast *((const byte*) board + (byte) queens::row#4) ← (unumber)(number) 0 +Inlining cast (byte) legal::return#1 ← (unumber)(number) 1 +Inlining cast (byte) legal::return#2 ← (unumber)(number) 0 +Inlining cast (byte) legal::return#3 ← (unumber)(number) 0 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 Simplifying constant integer cast 0 @@ -2734,6 +3342,14 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 1 +Simplifying constant integer cast $a +Simplifying constant integer cast 8 +Simplifying constant integer cast $b +Simplifying constant integer cast $20 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (void*) 1024 Simplifying constant pointer cast (byte*) 1024 @@ -2761,13 +3377,13 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 -Simplifying constant integer cast 8 -Simplifying constant integer cast 1 -Simplifying constant integer cast 8 +Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 8 +Simplifying constant integer cast 0 Simplifying constant integer cast 1 -Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 8 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 0 @@ -2795,6 +3411,14 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) $a +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) $b +Finalized unsigned number type (byte) $20 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $28 @@ -2813,20 +3437,20 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 Finalized signed number type (signed byte) 0 Finalized signed number type (signed byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 1 -Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 8 @@ -2835,29 +3459,29 @@ Finalized unsigned number type (byte) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) uctoa::$4 ← (byte) uctoa::max_digits#5 - (byte) 1 Inferred type updated to byte in (unumber~) utoa::$4 ← (byte) utoa::max_digits#5 - (byte) 1 +Inferred type updated to byte in (unumber~) ultoa::$4 ← (byte) ultoa::max_digits#5 - (byte) 1 +Inferred type updated to byte in (unumber~) printf_ulong::$0 ← (byte) 0 +Inferred type updated to byte for (unumber~) printf_ulong::$2 Inferred type updated to byte in (unumber~) printf_uint::$0 ← (byte) 0 Inferred type updated to byte for (unumber~) printf_uint::$2 Inferred type updated to byte in (unumber~) printf_uchar::$0 ← (byte) 0 Inferred type updated to byte for (unumber~) printf_uchar::$2 -Inferred type updated to byte in (unumber~) queen::$4 ← (byte) queen::r + (byte) 1 -Inferred type updated to byte in (unumber~) place::$0 ← (byte) place::row#1 - (byte) 1 +Inferred type updated to byte in (unumber~) legal::$0 ← (byte) legal::row#1 - (byte) 1 Inversing boolean not [33] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [32] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 -Inversing boolean not [260] (bool~) printf_char::$1 ← (byte) printf_cursor_x != (byte) $28 from [259] (bool~) printf_char::$0 ← (byte) printf_cursor_x == (byte) $28 -Inversing boolean not [274] (bool~) printf_scroll::$1 ← (byte) printf_cursor_y != (byte) $19 from [273] (bool~) printf_scroll::$0 ← (byte) printf_cursor_y == (byte) $19 -Inversing boolean not [308] (bool~) printf_str::$1 ← (byte) printf_str::ch#0 != (byte) 0 from [307] (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (byte) 0 -Inversing boolean not [372] (bool~) printf_number_buffer::$0 ← (byte) 0 == (byte) printf_number_buffer::format_min_length#2 from [371] (bool~) printf_number_buffer::$26 ← (byte) 0 != (byte) printf_number_buffer::format_min_length#2 -Inversing boolean not [376] (bool~) printf_number_buffer::$1 ← (byte) 0 == (byte) printf_number_buffer::format_justify_left#2 from [375] (bool~) printf_number_buffer::$27 ← (byte) 0 != (byte) printf_number_buffer::format_justify_left#2 -Inversing boolean not [378] (bool~) printf_number_buffer::$2 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#2 from [377] (bool~) printf_number_buffer::$28 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#2 -Inversing boolean not [391] (bool~) printf_number_buffer::$20 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#2 from [390] (bool~) printf_number_buffer::$29 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#2 -Inversing boolean not [398] (bool~) printf_number_buffer::$23 ← (signed byte) printf_number_buffer::padding#1 >= (signed byte) 0 from [397] (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (signed byte) 0 -Inversing boolean not [406] (bool~) printf_number_buffer::$7 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#3 from [405] (bool~) printf_number_buffer::$30 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#3 -Inversing boolean not [423] (bool~) printf_number_buffer::$12 ← (byte) 0 == (byte) printf_number_buffer::format_upper_case#2 from [422] (bool~) printf_number_buffer::$31 ← (byte) 0 != (byte) printf_number_buffer::format_upper_case#2 -Inversing boolean not [435] (bool~) printf_number_buffer::$14 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#4 from [434] (bool~) printf_number_buffer::$32 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#4 -Inversing boolean not [480] (bool~) queen::$2 ← (byte) 0 == (byte~) queen::$1 from [479] (bool~) queen::$7 ← (byte) 0 != (byte~) queen::$1 -Inversing boolean not [520] (bool~) place::$6 ← (byte~) place::$3 != (byte~) place::$4 from [519] (bool~) place::$5 ← (byte~) place::$3 == (byte~) place::$4 +Inversing boolean not [341] (bool~) printf_char::$1 ← (byte) printf_cursor_x != (byte) $28 from [340] (bool~) printf_char::$0 ← (byte) printf_cursor_x == (byte) $28 +Inversing boolean not [355] (bool~) printf_scroll::$1 ← (byte) printf_cursor_y != (byte) $19 from [354] (bool~) printf_scroll::$0 ← (byte) printf_cursor_y == (byte) $19 +Inversing boolean not [389] (bool~) printf_str::$1 ← (byte) printf_str::ch#0 != (byte) 0 from [388] (bool~) printf_str::$0 ← (byte) printf_str::ch#0 == (byte) 0 +Inversing boolean not [477] (bool~) printf_number_buffer::$0 ← (byte) 0 == (byte) printf_number_buffer::format_min_length#3 from [476] (bool~) printf_number_buffer::$26 ← (byte) 0 != (byte) printf_number_buffer::format_min_length#3 +Inversing boolean not [481] (bool~) printf_number_buffer::$1 ← (byte) 0 == (byte) printf_number_buffer::format_justify_left#3 from [480] (bool~) printf_number_buffer::$27 ← (byte) 0 != (byte) printf_number_buffer::format_justify_left#3 +Inversing boolean not [483] (bool~) printf_number_buffer::$2 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#3 from [482] (bool~) printf_number_buffer::$28 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#3 +Inversing boolean not [496] (bool~) printf_number_buffer::$20 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#3 from [495] (bool~) printf_number_buffer::$29 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#3 +Inversing boolean not [503] (bool~) printf_number_buffer::$23 ← (signed byte) printf_number_buffer::padding#1 >= (signed byte) 0 from [502] (bool~) printf_number_buffer::$22 ← (signed byte) printf_number_buffer::padding#1 < (signed byte) 0 +Inversing boolean not [511] (bool~) printf_number_buffer::$7 ← (byte) 0 == (byte) printf_number_buffer::buffer_sign#4 from [510] (bool~) printf_number_buffer::$30 ← (byte) 0 != (byte) printf_number_buffer::buffer_sign#4 +Inversing boolean not [528] (bool~) printf_number_buffer::$12 ← (byte) 0 == (byte) printf_number_buffer::format_upper_case#3 from [527] (bool~) printf_number_buffer::$31 ← (byte) 0 != (byte) printf_number_buffer::format_upper_case#3 +Inversing boolean not [540] (bool~) printf_number_buffer::$14 ← (byte) 0 == (byte) printf_number_buffer::format_zero_padding#5 from [539] (bool~) printf_number_buffer::$32 ← (byte) 0 != (byte) printf_number_buffer::format_zero_padding#5 +Inversing boolean not [640] (bool~) legal::$6 ← (byte~) legal::$3 != (byte~) legal::$4 from [639] (bool~) legal::$5 ← (byte~) legal::$3 == (byte~) legal::$4 Successful SSA optimization Pass2UnaryNotSimplification Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Alias toupper::ch#1 = toupper::ch#2 toupper::ch#3 toupper::return#1 Alias toupper::return#0 = toupper::$3 Alias toupper::return#2 = toupper::return#4 @@ -2913,12 +3537,41 @@ Alias utoa_append::digit#2 = utoa_append::digit#4 utoa_append::digit#3 Alias utoa_append::value#2 = utoa_append::value#3 utoa_append::value#4 utoa_append::return#1 utoa_append::return#4 utoa_append::return#2 Alias utoa_append::sub#1 = utoa_append::sub#2 Alias utoa_append::buffer#1 = utoa_append::buffer#4 utoa_append::buffer#2 +Alias ultoa::value#10 = ultoa::value#8 ultoa::value#12 ultoa::value#13 ultoa::value#9 ultoa::value#14 ultoa::value#15 ultoa::value#11 +Alias ultoa::buffer#10 = ultoa::buffer#17 ultoa::buffer#21 ultoa::buffer#16 ultoa::buffer#18 ultoa::buffer#13 ultoa::buffer#19 ultoa::buffer#20 ultoa::buffer#6 +Alias ultoa::radix#1 = ultoa::radix#2 ultoa::radix#3 ultoa::radix#4 +Alias ultoa::digit#2 = ultoa::digit#3 ultoa::digit#6 ultoa::digit#5 +Alias ultoa::digit_values#10 = ultoa::digit_values#5 ultoa::digit_values#6 ultoa::digit_values#9 +Alias ultoa::value#2 = ultoa::value#5 ultoa::value#3 ultoa::value#4 +Alias ultoa::started#2 = ultoa::started#3 +Alias ultoa::buffer#11 = ultoa::buffer#12 ultoa::buffer#7 ultoa::buffer#8 ultoa::buffer#9 +Alias ultoa::max_digits#10 = ultoa::max_digits#8 ultoa::max_digits#5 ultoa::max_digits#9 +Alias ultoa::digit_value#0 = ultoa::digit_value#1 +Alias ultoa_append::return#0 = ultoa_append::return#3 +Alias ultoa::value#0 = ultoa::$9 +Alias ultoa_append::digit#2 = ultoa_append::digit#4 ultoa_append::digit#3 +Alias ultoa_append::value#2 = ultoa_append::value#3 ultoa_append::value#4 ultoa_append::return#1 ultoa_append::return#4 ultoa_append::return#2 +Alias ultoa_append::sub#1 = ultoa_append::sub#2 +Alias ultoa_append::buffer#1 = ultoa_append::buffer#4 ultoa_append::buffer#2 Alias printf_padding::pad#3 = printf_padding::pad#4 printf_padding::pad#6 Alias printf_padding::i#2 = printf_padding::i#4 printf_padding::i#3 Alias printf_padding::length#3 = printf_padding::length#6 printf_padding::length#5 Alias printf_str::str#10 = printf_str::str#9 Alias printf_str::ch#0 = printf_str::ch#1 printf_str::ch#2 Alias printf_str::str#0 = printf_str::str#16 printf_str::str#14 printf_str::str#12 printf_str::str#15 printf_str::str#13 +Alias printf_ulong::uvalue#2 = printf_ulong::uvalue#4 printf_ulong::uvalue#3 +Alias printf_ulong::format_radix#3 = printf_ulong::format_radix#5 printf_ulong::format_radix#4 +Alias printf_ulong::format_min_length#3 = printf_ulong::format_min_length#5 printf_ulong::format_min_length#4 +Alias printf_ulong::format_justify_left#3 = printf_ulong::format_justify_left#5 printf_ulong::format_justify_left#4 +Alias printf_ulong::format_sign_always#1 = printf_ulong::format_sign_always#4 printf_ulong::format_sign_always#5 +Alias printf_ulong::format_zero_padding#3 = printf_ulong::format_zero_padding#5 printf_ulong::format_zero_padding#4 +Alias printf_ulong::format_upper_case#3 = printf_ulong::format_upper_case#5 printf_ulong::format_upper_case#4 +Alias printf_ulong::format_min_length#1 = printf_ulong::format_min_length#2 +Alias printf_ulong::format_justify_left#1 = printf_ulong::format_justify_left#2 +Alias printf_ulong::format_sign_always#2 = printf_ulong::format_sign_always#3 +Alias printf_ulong::format_zero_padding#1 = printf_ulong::format_zero_padding#2 +Alias printf_ulong::format_upper_case#1 = printf_ulong::format_upper_case#2 +Alias printf_ulong::format_radix#1 = printf_ulong::format_radix#2 Alias printf_uint::uvalue#2 = printf_uint::uvalue#4 printf_uint::uvalue#3 Alias printf_uint::format_radix#3 = printf_uint::format_radix#5 printf_uint::format_radix#4 Alias printf_uint::format_min_length#3 = printf_uint::format_min_length#5 printf_uint::format_min_length#4 @@ -2932,76 +3585,87 @@ Alias printf_uint::format_sign_always#2 = printf_uint::format_sign_always#3 Alias printf_uint::format_zero_padding#1 = printf_uint::format_zero_padding#2 Alias printf_uint::format_upper_case#1 = printf_uint::format_upper_case#2 Alias printf_uint::format_radix#1 = printf_uint::format_radix#2 -Alias printf_uchar::uvalue#4 = printf_uchar::uvalue#6 printf_uchar::uvalue#5 -Alias printf_uchar::format_radix#5 = printf_uchar::format_radix#7 printf_uchar::format_radix#6 -Alias printf_uchar::format_min_length#5 = printf_uchar::format_min_length#7 printf_uchar::format_min_length#6 -Alias printf_uchar::format_justify_left#5 = printf_uchar::format_justify_left#7 printf_uchar::format_justify_left#6 -Alias printf_uchar::format_sign_always#3 = printf_uchar::format_sign_always#6 printf_uchar::format_sign_always#7 -Alias printf_uchar::format_zero_padding#5 = printf_uchar::format_zero_padding#7 printf_uchar::format_zero_padding#6 -Alias printf_uchar::format_upper_case#5 = printf_uchar::format_upper_case#7 printf_uchar::format_upper_case#6 -Alias printf_uchar::format_min_length#3 = printf_uchar::format_min_length#4 -Alias printf_uchar::format_justify_left#3 = printf_uchar::format_justify_left#4 -Alias printf_uchar::format_sign_always#4 = printf_uchar::format_sign_always#5 -Alias printf_uchar::format_zero_padding#3 = printf_uchar::format_zero_padding#4 -Alias printf_uchar::format_upper_case#3 = printf_uchar::format_upper_case#4 -Alias printf_uchar::format_radix#3 = printf_uchar::format_radix#4 -Alias printf_number_buffer::buffer_digits#19 = printf_number_buffer::buffer_digits#2 printf_number_buffer::buffer_digits#5 printf_number_buffer::buffer_digits#20 -Alias printf_number_buffer::buffer_sign#12 = printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#8 printf_number_buffer::buffer_sign#2 -Alias printf_number_buffer::format_min_length#2 = printf_number_buffer::format_min_length#6 printf_number_buffer::format_min_length#4 printf_number_buffer::format_min_length#5 -Alias printf_number_buffer::format_justify_left#12 = printf_number_buffer::format_justify_left#4 printf_number_buffer::format_justify_left#8 printf_number_buffer::format_justify_left#9 -Alias printf_number_buffer::format_zero_padding#11 = printf_number_buffer::format_zero_padding#17 printf_number_buffer::format_zero_padding#5 printf_number_buffer::format_zero_padding#12 -Alias printf_number_buffer::format_upper_case#11 = printf_number_buffer::format_upper_case#17 printf_number_buffer::format_upper_case#15 printf_number_buffer::format_upper_case#16 +Alias printf_uchar::uvalue#3 = printf_uchar::uvalue#5 printf_uchar::uvalue#4 +Alias printf_uchar::format_radix#4 = printf_uchar::format_radix#6 printf_uchar::format_radix#5 +Alias printf_uchar::format_min_length#4 = printf_uchar::format_min_length#6 printf_uchar::format_min_length#5 +Alias printf_uchar::format_justify_left#4 = printf_uchar::format_justify_left#6 printf_uchar::format_justify_left#5 +Alias printf_uchar::format_sign_always#2 = printf_uchar::format_sign_always#5 printf_uchar::format_sign_always#6 +Alias printf_uchar::format_zero_padding#4 = printf_uchar::format_zero_padding#6 printf_uchar::format_zero_padding#5 +Alias printf_uchar::format_upper_case#4 = printf_uchar::format_upper_case#6 printf_uchar::format_upper_case#5 +Alias printf_uchar::format_min_length#2 = printf_uchar::format_min_length#3 +Alias printf_uchar::format_justify_left#2 = printf_uchar::format_justify_left#3 +Alias printf_uchar::format_sign_always#3 = printf_uchar::format_sign_always#4 +Alias printf_uchar::format_zero_padding#2 = printf_uchar::format_zero_padding#3 +Alias printf_uchar::format_upper_case#2 = printf_uchar::format_upper_case#3 +Alias printf_uchar::format_radix#2 = printf_uchar::format_radix#3 +Alias printf_number_buffer::buffer_digits#20 = printf_number_buffer::buffer_digits#3 printf_number_buffer::buffer_digits#6 printf_number_buffer::buffer_digits#21 +Alias printf_number_buffer::buffer_sign#13 = printf_number_buffer::buffer_sign#6 printf_number_buffer::buffer_sign#9 printf_number_buffer::buffer_sign#3 +Alias printf_number_buffer::format_min_length#3 = printf_number_buffer::format_min_length#7 printf_number_buffer::format_min_length#5 printf_number_buffer::format_min_length#6 +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#13 printf_number_buffer::format_justify_left#5 printf_number_buffer::format_justify_left#9 +Alias printf_number_buffer::format_zero_padding#12 = printf_number_buffer::format_zero_padding#18 printf_number_buffer::format_zero_padding#6 printf_number_buffer::format_zero_padding#13 +Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#18 printf_number_buffer::format_upper_case#16 printf_number_buffer::format_upper_case#17 Alias strlen::return#2 = strlen::return#4 Alias printf_number_buffer::padding#1 = printf_number_buffer::$21 Alias printf_number_buffer::len#0 = printf_number_buffer::len#3 -Alias printf_number_buffer::format_justify_left#5 = printf_number_buffer::format_justify_left#6 -Alias printf_number_buffer::format_zero_padding#6 = printf_number_buffer::format_zero_padding#7 -Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#9 -Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#13 -Alias printf_number_buffer::buffer_digits#16 = printf_number_buffer::buffer_digits#17 +Alias printf_number_buffer::format_justify_left#6 = printf_number_buffer::format_justify_left#7 +Alias printf_number_buffer::format_zero_padding#7 = printf_number_buffer::format_zero_padding#8 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#11 +Alias printf_number_buffer::format_upper_case#13 = printf_number_buffer::format_upper_case#14 +Alias printf_number_buffer::buffer_digits#17 = printf_number_buffer::buffer_digits#18 Alias printf_number_buffer::padding#12 = printf_number_buffer::padding#4 printf_number_buffer::padding#3 -Alias printf_number_buffer::buffer_sign#11 = printf_number_buffer::buffer_sign#6 printf_number_buffer::buffer_sign#7 -Alias printf_number_buffer::format_zero_padding#13 = printf_number_buffer::format_zero_padding#18 printf_number_buffer::format_zero_padding#2 -Alias printf_number_buffer::format_upper_case#14 = printf_number_buffer::format_upper_case#8 printf_number_buffer::format_upper_case#9 -Alias printf_number_buffer::buffer_digits#13 = printf_number_buffer::buffer_digits#18 printf_number_buffer::buffer_digits#14 -Alias printf_number_buffer::format_justify_left#19 = printf_number_buffer::format_justify_left#21 printf_number_buffer::format_justify_left#2 -Alias printf_number_buffer::buffer_sign#3 = printf_number_buffer::buffer_sign#4 -Alias printf_number_buffer::format_zero_padding#14 = printf_number_buffer::format_zero_padding#9 printf_number_buffer::format_zero_padding#8 +Alias printf_number_buffer::buffer_sign#12 = printf_number_buffer::buffer_sign#7 printf_number_buffer::buffer_sign#8 +Alias printf_number_buffer::format_zero_padding#14 = printf_number_buffer::format_zero_padding#19 printf_number_buffer::format_zero_padding#3 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#15 printf_number_buffer::format_upper_case#9 +Alias printf_number_buffer::buffer_digits#14 = printf_number_buffer::buffer_digits#19 printf_number_buffer::buffer_digits#15 +Alias printf_number_buffer::format_justify_left#20 = printf_number_buffer::format_justify_left#22 printf_number_buffer::format_justify_left#3 +Alias printf_number_buffer::buffer_sign#4 = printf_number_buffer::buffer_sign#5 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#15 printf_number_buffer::format_zero_padding#9 Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#13 printf_number_buffer::padding#9 -Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#6 printf_number_buffer::format_upper_case#5 -Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#15 printf_number_buffer::buffer_digits#11 -Alias printf_number_buffer::format_justify_left#16 = printf_number_buffer::format_justify_left#20 printf_number_buffer::format_justify_left#17 +Alias printf_number_buffer::format_upper_case#11 = printf_number_buffer::format_upper_case#7 printf_number_buffer::format_upper_case#6 +Alias printf_number_buffer::buffer_digits#11 = printf_number_buffer::buffer_digits#16 printf_number_buffer::buffer_digits#12 +Alias printf_number_buffer::format_justify_left#17 = printf_number_buffer::format_justify_left#21 printf_number_buffer::format_justify_left#18 Alias printf_number_buffer::padding#16 = printf_number_buffer::padding#6 printf_number_buffer::padding#5 -Alias printf_number_buffer::format_upper_case#3 = printf_number_buffer::format_upper_case#7 printf_number_buffer::format_upper_case#4 -Alias printf_number_buffer::buffer_digits#12 = printf_number_buffer::buffer_digits#9 printf_number_buffer::buffer_digits#8 -Alias printf_number_buffer::format_zero_padding#19 = printf_number_buffer::format_zero_padding#21 printf_number_buffer::format_zero_padding#3 -Alias printf_number_buffer::format_justify_left#13 = printf_number_buffer::format_justify_left#18 printf_number_buffer::format_justify_left#14 -Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#4 -Alias printf_number_buffer::format_justify_left#3 = printf_number_buffer::format_justify_left#7 +Alias printf_number_buffer::format_upper_case#4 = printf_number_buffer::format_upper_case#8 printf_number_buffer::format_upper_case#5 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#13 printf_number_buffer::buffer_digits#9 +Alias printf_number_buffer::format_zero_padding#20 = printf_number_buffer::format_zero_padding#22 printf_number_buffer::format_zero_padding#4 +Alias printf_number_buffer::format_justify_left#14 = printf_number_buffer::format_justify_left#19 printf_number_buffer::format_justify_left#15 +Alias printf_number_buffer::format_zero_padding#11 = printf_number_buffer::format_zero_padding#5 +Alias printf_number_buffer::format_justify_left#4 = printf_number_buffer::format_justify_left#8 Alias printf_number_buffer::padding#11 = printf_number_buffer::padding#7 printf_number_buffer::padding#8 -Alias printf_number_buffer::buffer_digits#4 = printf_number_buffer::buffer_digits#7 printf_number_buffer::buffer_digits#6 -Alias printf_number_buffer::format_zero_padding#15 = printf_number_buffer::format_zero_padding#20 printf_number_buffer::format_zero_padding#16 -Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#15 printf_number_buffer::format_justify_left#11 +Alias printf_number_buffer::buffer_digits#5 = printf_number_buffer::buffer_digits#8 printf_number_buffer::buffer_digits#7 +Alias printf_number_buffer::format_zero_padding#16 = printf_number_buffer::format_zero_padding#21 printf_number_buffer::format_zero_padding#17 +Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#16 printf_number_buffer::format_justify_left#12 Alias printf_number_buffer::padding#14 = printf_number_buffer::padding#17 printf_number_buffer::padding#15 -Alias place::return#0 = place::return#5 -Alias place::i#3 = place::i#4 place::i#5 place::i#6 place::i#8 place::i#7 -Alias place::column#1 = place::column#3 place::column#2 place::column#7 place::column#6 place::column#5 -Alias place::row#1 = place::row#6 place::row#5 place::row#2 place::row#7 place::row#4 +Alias count#16 = count#35 count#40 count#31 count#22 +Alias count#1 = count#8 count#9 count#2 +Alias queens::row#10 = queens::row#3 queens::row#9 queens::row#4 queens::row#5 queens::row#6 queens::row#12 queens::row#11 queens::row#7 queens::row#8 +Alias count#17 = count#27 count#18 count#19 count#32 count#26 count#28 count#24 count#25 +Alias legal::return#0 = legal::return#5 +Alias count#10 = count#3 +Alias count#11 = count#4 +Alias legal::i#2 = legal::i#3 legal::i#4 legal::i#5 legal::i#7 legal::i#6 +Alias legal::column#1 = legal::column#3 legal::column#2 legal::column#7 legal::column#6 legal::column#5 +Alias legal::row#1 = legal::row#6 legal::row#5 legal::row#2 legal::row#7 legal::row#4 Alias diff::return#0 = diff::return#5 Alias diff::return#1 = diff::return#6 -Alias place::return#4 = place::return#6 +Alias legal::return#4 = legal::return#6 Alias diff::b#2 = diff::b#3 diff::b#4 Alias diff::a#2 = diff::a#3 diff::a#4 Alias diff::return#2 = diff::$2 Alias diff::return#3 = diff::$1 Alias diff::return#4 = diff::return#7 +Alias count#13 = count#5 count#41 count#36 Alias print::i#2 = print::i#3 print::i#4 +Alias count#29 = count#42 count#33 count#37 Alias print::i1#2 = print::i1#6 print::i1#3 print::i1#9 +Alias count#14 = count#46 count#20 count#43 count#39 count#6 Alias print::i1#10 = print::i1#4 print::i1#7 print::i1#5 print::i1#12 print::i1#13 print::i1#11 Alias print::j#2 = print::j#3 print::j#7 print::j#5 print::j#8 print::j#6 +Alias count#30 = count#49 count#34 count#47 count#44 count#48 count#45 +Alias count#0 = count#21 +Alias count#15 = count#7 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Alias uctoa::value#10 = uctoa::value#7 Alias uctoa::buffer#10 = uctoa::buffer#15 Alias uctoa::digit#2 = uctoa::digit#4 @@ -3012,6 +3676,18 @@ Alias utoa::buffer#10 = utoa::buffer#15 Alias utoa::digit#2 = utoa::digit#4 Alias utoa::max_digits#10 = utoa::max_digits#6 Alias utoa::digit_values#10 = utoa::digit_values#7 +Alias ultoa::value#10 = ultoa::value#7 +Alias ultoa::buffer#10 = ultoa::buffer#15 +Alias ultoa::digit#2 = ultoa::digit#4 +Alias ultoa::max_digits#10 = ultoa::max_digits#6 +Alias ultoa::digit_values#10 = ultoa::digit_values#7 +Alias printf_ulong::uvalue#1 = printf_ulong::uvalue#2 +Alias printf_ulong::format_radix#1 = printf_ulong::format_radix#3 +Alias printf_ulong::format_min_length#1 = printf_ulong::format_min_length#3 +Alias printf_ulong::format_justify_left#1 = printf_ulong::format_justify_left#3 +Alias printf_ulong::format_sign_always#1 = printf_ulong::format_sign_always#2 +Alias printf_ulong::format_zero_padding#1 = printf_ulong::format_zero_padding#3 +Alias printf_ulong::format_upper_case#1 = printf_ulong::format_upper_case#3 Alias printf_uint::uvalue#1 = printf_uint::uvalue#2 Alias printf_uint::format_radix#1 = printf_uint::format_radix#3 Alias printf_uint::format_min_length#1 = printf_uint::format_min_length#3 @@ -3019,38 +3695,38 @@ Alias printf_uint::format_justify_left#1 = printf_uint::format_justify_left#3 Alias printf_uint::format_sign_always#1 = printf_uint::format_sign_always#2 Alias printf_uint::format_zero_padding#1 = printf_uint::format_zero_padding#3 Alias printf_uint::format_upper_case#1 = printf_uint::format_upper_case#3 -Alias printf_uchar::uvalue#3 = printf_uchar::uvalue#4 -Alias printf_uchar::format_radix#3 = printf_uchar::format_radix#5 -Alias printf_uchar::format_min_length#3 = printf_uchar::format_min_length#5 -Alias printf_uchar::format_justify_left#3 = printf_uchar::format_justify_left#5 -Alias printf_uchar::format_sign_always#3 = printf_uchar::format_sign_always#4 -Alias printf_uchar::format_zero_padding#3 = printf_uchar::format_zero_padding#5 -Alias printf_uchar::format_upper_case#3 = printf_uchar::format_upper_case#5 -Alias printf_number_buffer::format_min_length#2 = printf_number_buffer::format_min_length#3 -Alias printf_number_buffer::format_justify_left#12 = printf_number_buffer::format_justify_left#5 -Alias printf_number_buffer::format_zero_padding#11 = printf_number_buffer::format_zero_padding#6 -Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#12 -Alias printf_number_buffer::format_upper_case#11 = printf_number_buffer::format_upper_case#12 -Alias printf_number_buffer::buffer_digits#16 = printf_number_buffer::buffer_digits#19 -Alias printf_number_buffer::buffer_sign#11 = printf_number_buffer::buffer_sign#3 -Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#14 printf_number_buffer::format_zero_padding#13 printf_number_buffer::format_zero_padding#19 printf_number_buffer::format_zero_padding#15 +Alias printf_uchar::uvalue#2 = printf_uchar::uvalue#3 +Alias printf_uchar::format_radix#2 = printf_uchar::format_radix#4 +Alias printf_uchar::format_min_length#2 = printf_uchar::format_min_length#4 +Alias printf_uchar::format_justify_left#2 = printf_uchar::format_justify_left#4 +Alias printf_uchar::format_sign_always#2 = printf_uchar::format_sign_always#3 +Alias printf_uchar::format_zero_padding#2 = printf_uchar::format_zero_padding#4 +Alias printf_uchar::format_upper_case#2 = printf_uchar::format_upper_case#4 +Alias printf_number_buffer::format_min_length#3 = printf_number_buffer::format_min_length#4 +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#6 +Alias printf_number_buffer::format_zero_padding#12 = printf_number_buffer::format_zero_padding#7 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#13 +Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#13 +Alias printf_number_buffer::buffer_digits#17 = printf_number_buffer::buffer_digits#20 +Alias printf_number_buffer::buffer_sign#12 = printf_number_buffer::buffer_sign#4 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#14 printf_number_buffer::format_zero_padding#20 printf_number_buffer::format_zero_padding#16 printf_number_buffer::format_zero_padding#11 Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#12 printf_number_buffer::padding#16 printf_number_buffer::padding#14 printf_number_buffer::padding#11 -Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#14 printf_number_buffer::format_upper_case#3 printf_number_buffer::format_upper_case#2 -Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#13 printf_number_buffer::buffer_digits#12 printf_number_buffer::buffer_digits#4 printf_number_buffer::buffer_digits#3 -Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#16 printf_number_buffer::format_justify_left#19 printf_number_buffer::format_justify_left#13 printf_number_buffer::format_justify_left#3 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#11 printf_number_buffer::format_upper_case#4 printf_number_buffer::format_upper_case#3 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#11 printf_number_buffer::buffer_digits#14 printf_number_buffer::buffer_digits#5 printf_number_buffer::buffer_digits#4 +Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#17 printf_number_buffer::format_justify_left#20 printf_number_buffer::format_justify_left#14 printf_number_buffer::format_justify_left#4 +Alias count#11 = count#17 Alias print::j#2 = print::j#4 Alias print::i1#10 = print::i1#8 +Alias count#30 = count#38 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r -Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#12 -Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#11 -Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#11 -Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#11 -Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#16 +Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#11 +Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#12 +Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#12 +Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#12 +Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#17 Successful SSA optimization Pass2AliasElimination Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Identical Phi Values (byte) toupper::ch#1 (byte) toupper::ch#0 Identical Phi Values (void*) memcpy::source#1 (void*) memcpy::source#0 Identical Phi Values (void*) memcpy::destination#1 (void*) memcpy::destination#0 @@ -3083,8 +3759,25 @@ Identical Phi Values (word) utoa_append::sub#3 (word) utoa_append::sub#0 Identical Phi Values (byte*) utoa_append::buffer#3 (byte*) utoa_append::buffer#0 Identical Phi Values (word) utoa_append::sub#1 (word) utoa_append::sub#3 Identical Phi Values (byte*) utoa_append::buffer#1 (byte*) utoa_append::buffer#3 +Identical Phi Values (byte) ultoa::radix#1 (byte) ultoa::radix#0 +Identical Phi Values (dword) ultoa::value#10 (dword) ultoa::value#1 +Identical Phi Values (byte*) ultoa::buffer#10 (byte*) ultoa::buffer#5 +Identical Phi Values (byte) ultoa::max_digits#10 (byte) ultoa::max_digits#7 +Identical Phi Values (dword*) ultoa::digit_values#10 (dword*) ultoa::digit_values#8 +Identical Phi Values (dword) ultoa_append::value#5 (dword) ultoa_append::value#0 +Identical Phi Values (dword) ultoa_append::sub#3 (dword) ultoa_append::sub#0 +Identical Phi Values (byte*) ultoa_append::buffer#3 (byte*) ultoa_append::buffer#0 +Identical Phi Values (dword) ultoa_append::sub#1 (dword) ultoa_append::sub#3 +Identical Phi Values (byte*) ultoa_append::buffer#1 (byte*) ultoa_append::buffer#3 Identical Phi Values (byte) printf_padding::length#3 (byte) printf_padding::length#4 Identical Phi Values (byte) printf_padding::pad#3 (byte) printf_padding::pad#5 +Identical Phi Values (byte) printf_ulong::format_sign_always#1 (byte) printf_ulong::format_sign_always#0 +Identical Phi Values (dword) printf_ulong::uvalue#1 (dword) printf_ulong::uvalue#0 +Identical Phi Values (byte) printf_ulong::format_radix#1 (byte) printf_ulong::format_radix#0 +Identical Phi Values (byte) printf_ulong::format_min_length#1 (byte) printf_ulong::format_min_length#0 +Identical Phi Values (byte) printf_ulong::format_justify_left#1 (byte) printf_ulong::format_justify_left#0 +Identical Phi Values (byte) printf_ulong::format_zero_padding#1 (byte) printf_ulong::format_zero_padding#0 +Identical Phi Values (byte) printf_ulong::format_upper_case#1 (byte) printf_ulong::format_upper_case#0 Identical Phi Values (byte) printf_uint::format_sign_always#1 (byte) printf_uint::format_sign_always#0 Identical Phi Values (word) printf_uint::uvalue#1 (word) printf_uint::uvalue#0 Identical Phi Values (byte) printf_uint::format_radix#1 (byte) printf_uint::format_radix#0 @@ -3092,13 +3785,22 @@ Identical Phi Values (byte) printf_uint::format_min_length#1 (byte) printf_uint: Identical Phi Values (byte) printf_uint::format_justify_left#1 (byte) printf_uint::format_justify_left#0 Identical Phi Values (byte) printf_uint::format_zero_padding#1 (byte) printf_uint::format_zero_padding#0 Identical Phi Values (byte) printf_uint::format_upper_case#1 (byte) printf_uint::format_upper_case#0 -Identical Phi Values (byte) place::row#3 (byte) place::row#0 -Identical Phi Values (byte) place::column#4 (byte) place::column#0 -Identical Phi Values (byte) place::row#1 (byte) place::row#3 -Identical Phi Values (byte) place::column#1 (byte) place::column#4 +Identical Phi Values (dword) count#16 (dword) count#0 +Identical Phi Values (dword) count#1 (dword) count#11 +Identical Phi Values (dword) count#23 (dword) count#16 +Identical Phi Values (dword) count#10 (dword) count#14 +Identical Phi Values (byte) legal::row#3 (byte) legal::row#0 +Identical Phi Values (byte) legal::column#4 (byte) legal::column#0 +Identical Phi Values (byte) legal::row#1 (byte) legal::row#3 +Identical Phi Values (byte) legal::column#1 (byte) legal::column#4 +Identical Phi Values (dword) count#12 (dword) count#11 +Identical Phi Values (dword) count#29 (dword) count#13 Identical Phi Values (byte) print::i1#10 (byte) print::i1#2 +Identical Phi Values (dword) count#30 (dword) count#14 +Identical Phi Values (dword) count#15 (dword) count#1 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values (void*) memset::return#0 (void*) memset::str#3 +Identical Phi Values (dword) count#14 (dword) count#13 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) memcpy::$1 [15] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 Simple Condition (bool~) memset::$1 [22] if((word) memset::num#2<=(byte) 0) goto memset::@1 @@ -3117,54 +3819,65 @@ Simple Condition (bool~) utoa::$2 [125] if((byte) utoa::radix#0==(const byte) OC Simple Condition (bool~) utoa::$3 [129] if((byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 Simple Condition (bool~) utoa::$5 [146] if((byte) utoa::digit#2<(byte~) utoa::$4) goto utoa::@11 Simple Condition (bool~) utoa_append::$0 [171] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -Simple Condition (bool~) printf_char::$1 [193] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -Simple Condition (bool~) printf_scroll::$1 [206] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -Simple Condition (bool~) printf_padding::$0 [225] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -Simple Condition (bool~) printf_str::$1 [236] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -Simple Condition (bool~) printf_str::$2 [238] if((byte) printf_str::ch#0==(byte) ' +Simple Condition (bool~) ultoa::$0 [180] if((byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +Simple Condition (bool~) ultoa::$1 [184] if((byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +Simple Condition (bool~) ultoa::$2 [188] if((byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +Simple Condition (bool~) ultoa::$3 [192] if((byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +Simple Condition (bool~) ultoa::$5 [209] if((byte) ultoa::digit#2<(byte~) ultoa::$4) goto ultoa::@11 +Simple Condition (bool~) ultoa_append::$0 [234] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 +Simple Condition (bool~) printf_char::$1 [256] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return +Simple Condition (bool~) printf_scroll::$1 [269] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return +Simple Condition (bool~) printf_padding::$0 [288] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 +Simple Condition (bool~) printf_str::$1 [299] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 +Simple Condition (bool~) printf_str::$2 [301] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -Simple Condition (bool~) printf_uint::$5 [245] if((byte) 0!=(byte) printf_uint::format_sign_always#0) goto printf_uint::@1 -Simple Condition (bool~) printf_uchar::$5 [266] if((byte) 0!=(byte) printf_uchar::format_sign_always#3) goto printf_uchar::@1 -Simple Condition (bool~) printf_number_buffer::$0 [288] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 -Simple Condition (bool~) printf_number_buffer::$20 [302] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -Simple Condition (bool~) printf_number_buffer::$23 [307] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@1 -Simple Condition (bool~) printf_number_buffer::$7 [311] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -Simple Condition (bool~) printf_number_buffer::$12 [321] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -Simple Condition (bool~) queen::$0 [361] if((byte) queen::column<=(byte) 8) goto queen::@2 -Simple Condition (bool~) queen::$2 [368] if((byte) 0==(byte~) queen::$1) goto queen::@3 -Simple Condition (bool~) queen::$3 [372] if((byte) queen::r==(byte) 8) goto queen::@4 -Simple Condition (bool~) place::$1 [387] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 -Simple Condition (bool~) place::$2 [389] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@4 -Simple Condition (bool~) place::$6 [403] if((byte~) place::$3!=(byte~) place::$4) goto place::@5 -Simple Condition (bool~) diff::$0 [410] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -Simple Condition (bool~) print::$1 [431] if((byte) print::i#2<=(byte) 8) goto print::@2 -Simple Condition (bool~) print::$3 [444] if((byte) print::i1#2<=(byte) 8) goto print::@5 -Simple Condition (bool~) print::$5 [458] if((byte) print::j#2<=(byte) 8) goto print::@7 -Simple Condition (bool~) print::$6 [460] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@9 +Simple Condition (bool~) printf_ulong::$5 [308] if((byte) 0!=(byte) printf_ulong::format_sign_always#0) goto printf_ulong::@1 +Simple Condition (bool~) printf_uint::$5 [329] if((byte) 0!=(byte) printf_uint::format_sign_always#0) goto printf_uint::@1 +Simple Condition (bool~) printf_uchar::$5 [350] if((byte) 0!=(byte) printf_uchar::format_sign_always#2) goto printf_uchar::@1 +Simple Condition (bool~) printf_number_buffer::$0 [372] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 +Simple Condition (bool~) printf_number_buffer::$20 [386] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 +Simple Condition (bool~) printf_number_buffer::$23 [391] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@1 +Simple Condition (bool~) printf_number_buffer::$7 [395] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 +Simple Condition (bool~) printf_number_buffer::$12 [405] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 +Simple Condition (bool~) queens::$1 [447] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 +Simple Condition (bool~) queens::$5 [450] if((byte) queens::row#10==(byte) 1) goto queens::@return +Simple Condition (bool~) queens::$6 [457] if((byte) 0!=(byte~) queens::$2) goto queens::@4 +Simple Condition (bool~) queens::$3 [459] if((byte) queens::row#10==(byte) 8) goto queens::@5 +Simple Condition (bool~) legal::$1 [470] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 +Simple Condition (bool~) legal::$2 [472] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@4 +Simple Condition (bool~) legal::$6 [486] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@5 +Simple Condition (bool~) diff::$0 [493] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 +Simple Condition (bool~) print::$1 [515] if((byte) print::i#2<=(byte) 8) goto print::@2 +Simple Condition (bool~) print::$3 [528] if((byte) print::i1#2<=(byte) 8) goto print::@5 +Simple Condition (bool~) print::$5 [542] if((byte) print::j#2<=(byte) 8) goto print::@7 +Simple Condition (bool~) print::$6 [544] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@9 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s [3] (bool~) toupper::$2 ← (bool~) toupper::$0 && (bool~) toupper::$1 Rewriting ! if()-condition to reversed if() [89] (bool~) uctoa::$8 ← ! (bool~) uctoa::$7 Rewriting || if()-condition to two if()s [88] (bool~) uctoa::$7 ← (byte) uctoa::started#2 || (bool~) uctoa::$6 Rewriting ! if()-condition to reversed if() [151] (bool~) utoa::$8 ← ! (bool~) utoa::$7 Rewriting || if()-condition to two if()s [150] (bool~) utoa::$7 ← (byte) utoa::started#2 || (bool~) utoa::$6 -Rewriting ! if()-condition to reversed if() [294] (bool~) printf_number_buffer::$5 ← ! (bool~) printf_number_buffer::$4 -Rewriting && if()-condition to two if()s [293] (bool~) printf_number_buffer::$4 ← (bool~) printf_number_buffer::$3 && (signed byte) printf_number_buffer::padding#10 -Rewriting && if()-condition to two if()s [292] (bool~) printf_number_buffer::$3 ← (bool~) printf_number_buffer::$1 && (bool~) printf_number_buffer::$2 -Rewriting ! if()-condition to reversed if() [316] (bool~) printf_number_buffer::$10 ← ! (bool~) printf_number_buffer::$9 -Rewriting && if()-condition to two if()s [315] (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#10 && (signed byte) printf_number_buffer::padding#10 -Rewriting ! if()-condition to reversed if() [330] (bool~) printf_number_buffer::$17 ← ! (bool~) printf_number_buffer::$16 -Rewriting && if()-condition to two if()s [329] (bool~) printf_number_buffer::$16 ← (bool~) printf_number_buffer::$15 && (signed byte) printf_number_buffer::padding#10 -Rewriting && if()-condition to two if()s [328] (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#10 && (bool~) printf_number_buffer::$14 +Rewriting ! if()-condition to reversed if() [214] (bool~) ultoa::$8 ← ! (bool~) ultoa::$7 +Rewriting || if()-condition to two if()s [213] (bool~) ultoa::$7 ← (byte) ultoa::started#2 || (bool~) ultoa::$6 +Rewriting ! if()-condition to reversed if() [378] (bool~) printf_number_buffer::$5 ← ! (bool~) printf_number_buffer::$4 +Rewriting && if()-condition to two if()s [377] (bool~) printf_number_buffer::$4 ← (bool~) printf_number_buffer::$3 && (signed byte) printf_number_buffer::padding#10 +Rewriting && if()-condition to two if()s [376] (bool~) printf_number_buffer::$3 ← (bool~) printf_number_buffer::$1 && (bool~) printf_number_buffer::$2 +Rewriting ! if()-condition to reversed if() [400] (bool~) printf_number_buffer::$10 ← ! (bool~) printf_number_buffer::$9 +Rewriting && if()-condition to two if()s [399] (bool~) printf_number_buffer::$9 ← (byte) printf_number_buffer::format_zero_padding#10 && (signed byte) printf_number_buffer::padding#10 +Rewriting ! if()-condition to reversed if() [414] (bool~) printf_number_buffer::$17 ← ! (bool~) printf_number_buffer::$16 +Rewriting && if()-condition to two if()s [413] (bool~) printf_number_buffer::$16 ← (bool~) printf_number_buffer::$15 && (signed byte) printf_number_buffer::padding#10 +Rewriting && if()-condition to two if()s [412] (bool~) printf_number_buffer::$15 ← (byte) printf_number_buffer::format_justify_left#10 && (bool~) printf_number_buffer::$14 Successful SSA optimization Pass2ConditionalAndOrRewriting Warning! Adding boolean cast to non-boolean condition (byte) uctoa::started#2 Warning! Adding boolean cast to non-boolean condition (byte) utoa::started#2 +Warning! Adding boolean cast to non-boolean condition (byte) ultoa::started#2 Warning! Adding boolean cast to non-boolean condition (byte) printf_number_buffer::format_zero_padding#10 Warning! Adding boolean cast to non-boolean condition (byte) printf_number_buffer::format_justify_left#10 Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 Warning! Adding boolean cast to non-boolean condition (signed byte) printf_number_buffer::padding#10 -Constant right-side identified [181] (word) memset::num#0 ← (unumber)(number) $28*(number) $19 -Constant right-side identified [209] (word) memcpy::num#0 ← (unumber)(number) $28*(number) $19-(number) $28 +Constant right-side identified [244] (word) memset::num#0 ← (unumber)(number) $28*(number) $19 +Constant right-side identified [272] (word) memcpy::num#0 ← (unumber)(number) $28*(number) $19-(number) $28 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) strlen::len#0 = 0 Constant (const byte) uctoa::max_digits#0 = 0 @@ -3195,6 +3908,20 @@ Constant (const byte) utoa::started#0 = 0 Constant (const byte) utoa::digit#0 = 0 Constant (const byte) utoa::started#1 = 1 Constant (const byte) utoa_append::digit#0 = 0 +Constant (const byte) ultoa::max_digits#0 = 0 +Constant (const dword*) ultoa::digit_values#0 = (dword*) 0 +Constant (const byte) ultoa::max_digits#1 = $a +Constant (const dword*) ultoa::digit_values#1 = RADIX_DECIMAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#2 = 8 +Constant (const dword*) ultoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#3 = $b +Constant (const dword*) ultoa::digit_values#3 = RADIX_OCTAL_VALUES_LONG +Constant (const byte) ultoa::max_digits#4 = $20 +Constant (const dword*) ultoa::digit_values#4 = RADIX_BINARY_VALUES_LONG +Constant (const byte) ultoa::started#0 = 0 +Constant (const byte) ultoa::digit#0 = 0 +Constant (const byte) ultoa::started#1 = 1 +Constant (const byte) ultoa_append::digit#0 = 0 Constant (const void*) memset::str#0 = (void*) 1024 Constant (const byte) memset::c#0 = ' ' Constant (const word) memset::num#0 = (unumber)$28*$19 @@ -3205,19 +3932,24 @@ Constant (const void*) memset::str#1 = (void*)$400+$28*$19-$28 Constant (const byte) memset::c#1 = ' ' Constant (const word) memset::num#1 = $28 Constant (const byte) printf_padding::i#0 = 0 +Constant (const byte) printf_ulong::$1 = '+' +Constant (const byte) printf_ulong::$0 = 0 +Constant (const byte*) ultoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#0 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant (const byte) printf_uint::$1 = '+' Constant (const byte) printf_uint::$0 = 0 Constant (const byte*) utoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS -Constant (const byte*) printf_number_buffer::buffer_digits#0 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#1 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant (const byte) printf_uchar::$1 = '+' Constant (const byte) printf_uchar::$0 = 0 Constant (const byte*) uctoa::buffer#5 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS -Constant (const byte*) printf_number_buffer::buffer_digits#1 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant (const byte*) printf_number_buffer::buffer_digits#2 = (byte*)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant (const signed byte) printf_number_buffer::padding#0 = 0 Constant (const signed byte) printf_number_buffer::padding#2 = 0 Constant (const byte) printf_padding::pad#0 = ' ' Constant (const byte) printf_padding::pad#1 = '0' Constant (const byte) printf_padding::pad#2 = ' ' +Constant (const dword) count#0 = 0 Constant (const byte*) printf_str::str#2 = main::str Constant (const byte*) printf_str::str#3 = main::str1 Constant (const word) printf_uint::uvalue#0 = 8 @@ -3227,34 +3959,34 @@ Constant (const byte) printf_uint::format_sign_always#0 = 0 Constant (const byte) printf_uint::format_zero_padding#0 = 0 Constant (const byte) printf_uint::format_upper_case#0 = 0 Constant (const byte) printf_uint::format_radix#0 = DECIMAL -Constant (const byte) place::i#0 = 0 -Constant (const byte) place::i#1 = 1 -Constant (const byte) place::return#1 = 1 -Constant (const byte) place::return#2 = 0 -Constant (const byte) place::return#3 = 0 +Constant (const byte) queens::row#0 = 1 +Constant (const byte) legal::i#0 = 1 +Constant (const byte) legal::return#1 = 1 +Constant (const byte) legal::return#2 = 0 +Constant (const byte) legal::return#3 = 0 Constant (const byte*) printf_str::str#4 = print::str +Constant (const byte) printf_ulong::format_min_length#0 = 0 +Constant (const byte) printf_ulong::format_justify_left#0 = 0 +Constant (const byte) printf_ulong::format_sign_always#0 = 0 +Constant (const byte) printf_ulong::format_zero_padding#0 = 0 +Constant (const byte) printf_ulong::format_upper_case#0 = 0 +Constant (const byte) printf_ulong::format_radix#0 = DECIMAL +Constant (const byte*) printf_str::str#5 = print::str1 +Constant (const byte) print::i#0 = 1 Constant (const byte) printf_uchar::format_min_length#0 = 0 Constant (const byte) printf_uchar::format_justify_left#0 = 0 Constant (const byte) printf_uchar::format_sign_always#0 = 0 Constant (const byte) printf_uchar::format_zero_padding#0 = 0 Constant (const byte) printf_uchar::format_upper_case#0 = 0 -Constant (const byte) printf_uchar::format_radix#0 = DECIMAL -Constant (const byte*) printf_str::str#5 = print::str1 -Constant (const byte) print::i#0 = 1 +Constant (const byte) printf_uchar::format_radix#0 = HEXADECIMAL +Constant (const byte) print::i1#0 = 1 +Constant (const byte*) printf_str::str#6 = print::str2 Constant (const byte) printf_uchar::format_min_length#1 = 0 Constant (const byte) printf_uchar::format_justify_left#1 = 0 Constant (const byte) printf_uchar::format_sign_always#1 = 0 Constant (const byte) printf_uchar::format_zero_padding#1 = 0 Constant (const byte) printf_uchar::format_upper_case#1 = 0 -Constant (const byte) printf_uchar::format_radix#1 = DECIMAL -Constant (const byte) print::i1#0 = 1 -Constant (const byte*) printf_str::str#6 = print::str2 -Constant (const byte) printf_uchar::format_min_length#2 = 0 -Constant (const byte) printf_uchar::format_justify_left#2 = 0 -Constant (const byte) printf_uchar::format_sign_always#2 = 0 -Constant (const byte) printf_uchar::format_zero_padding#2 = 0 -Constant (const byte) printf_uchar::format_upper_case#2 = 0 -Constant (const byte) printf_uchar::format_radix#2 = DECIMAL +Constant (const byte) printf_uchar::format_radix#1 = HEXADECIMAL Constant (const byte) print::j#0 = 1 Constant (const byte*) printf_str::str#7 = print::str3 Constant (const byte*) printf_str::str#8 = print::str4 @@ -3263,53 +3995,76 @@ Constant (const byte*) memcpy::src#0 = (byte*)memcpy::source#0 Constant (const byte*) memcpy::dst#0 = (byte*)memcpy::destination#0 Constant (const byte*) memcpy::$2 = (byte*)memcpy::source#0 Constant (const void*) memcpy::return#2 = memcpy::destination#0 +Constant (const byte) ultoa::radix#0 = printf_ulong::format_radix#0 +Constant (const byte) printf_number_buffer::format_min_length#0 = printf_ulong::format_min_length#0 +Constant (const byte) printf_number_buffer::format_justify_left#0 = printf_ulong::format_justify_left#0 +Constant (const byte) printf_number_buffer::format_sign_always#0 = printf_ulong::format_sign_always#0 +Constant (const byte) printf_number_buffer::format_zero_padding#0 = printf_ulong::format_zero_padding#0 +Constant (const byte) printf_number_buffer::format_upper_case#0 = printf_ulong::format_upper_case#0 +Constant (const byte) printf_number_buffer::format_radix#0 = printf_ulong::format_radix#0 Constant (const word) utoa::value#1 = printf_uint::uvalue#0 Constant (const byte) utoa::radix#0 = printf_uint::format_radix#0 -Constant (const byte) printf_number_buffer::format_min_length#0 = printf_uint::format_min_length#0 -Constant (const byte) printf_number_buffer::format_justify_left#0 = printf_uint::format_justify_left#0 -Constant (const byte) printf_number_buffer::format_sign_always#0 = printf_uint::format_sign_always#0 -Constant (const byte) printf_number_buffer::format_zero_padding#0 = printf_uint::format_zero_padding#0 -Constant (const byte) printf_number_buffer::format_upper_case#0 = printf_uint::format_upper_case#0 -Constant (const byte) printf_number_buffer::format_radix#0 = printf_uint::format_radix#0 +Constant (const byte) printf_number_buffer::format_min_length#1 = printf_uint::format_min_length#0 +Constant (const byte) printf_number_buffer::format_justify_left#1 = printf_uint::format_justify_left#0 +Constant (const byte) printf_number_buffer::format_sign_always#1 = printf_uint::format_sign_always#0 +Constant (const byte) printf_number_buffer::format_zero_padding#1 = printf_uint::format_zero_padding#0 +Constant (const byte) printf_number_buffer::format_upper_case#1 = printf_uint::format_upper_case#0 +Constant (const byte) printf_number_buffer::format_radix#1 = printf_uint::format_radix#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [117] if((const byte) utoa::radix#0==(const byte) DECIMAL) goto utoa::@1 if() condition always false - eliminating [121] if((const byte) utoa::radix#0==(const byte) HEXADECIMAL) goto utoa::@2 if() condition always false - eliminating [125] if((const byte) utoa::radix#0==(const byte) OCTAL) goto utoa::@3 if() condition always false - eliminating [129] if((const byte) utoa::radix#0==(const byte) BINARY) goto utoa::@4 -if() condition always true - replacing block destination [232] if(true) goto printf_str::@2 -if() condition always false - eliminating [245] if((byte) 0!=(const byte) printf_uint::format_sign_always#0) goto printf_uint::@1 +if() condition always true - replacing block destination [180] if((const byte) ultoa::radix#0==(const byte) DECIMAL) goto ultoa::@1 +if() condition always false - eliminating [184] if((const byte) ultoa::radix#0==(const byte) HEXADECIMAL) goto ultoa::@2 +if() condition always false - eliminating [188] if((const byte) ultoa::radix#0==(const byte) OCTAL) goto ultoa::@3 +if() condition always false - eliminating [192] if((const byte) ultoa::radix#0==(const byte) BINARY) goto ultoa::@4 +if() condition always true - replacing block destination [295] if(true) goto printf_str::@2 +if() condition always false - eliminating [308] if((byte) 0!=(const byte) printf_ulong::format_sign_always#0) goto printf_ulong::@1 +if() condition always false - eliminating [329] if((byte) 0!=(const byte) printf_uint::format_sign_always#0) goto printf_uint::@1 +if() condition always true - replacing block destination [444] if(true) goto queens::@2 Successful SSA optimization Pass2ConstantIfs -Rewriting conditional comparison [361] if((byte) queen::column<=(byte) 8) goto queen::@2 -Rewriting conditional comparison [431] if((byte) print::i#2<=(byte) 8) goto print::@2 -Rewriting conditional comparison [444] if((byte) print::i1#2<=(byte) 8) goto print::@5 -Rewriting conditional comparison [458] if((byte) print::j#2<=(byte) 8) goto print::@7 -Simplifying expression containing zero (byte*)&printf_buffer in [249] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uint::$2 -Simplifying expression containing zero (byte*)&printf_buffer in [254] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) -Simplifying expression containing zero (byte*)&printf_buffer in [270] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uchar::$2 -Simplifying expression containing zero (byte*)&printf_buffer in [275] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Rewriting conditional comparison [515] if((byte) print::i#2<=(byte) 8) goto print::@2 +Rewriting conditional comparison [528] if((byte) print::i1#2<=(byte) 8) goto print::@5 +Rewriting conditional comparison [542] if((byte) print::j#2<=(byte) 8) goto print::@7 +Simplifying expression containing zero (byte*)&printf_buffer in [312] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_ulong::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [317] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Simplifying expression containing zero (byte*)&printf_buffer in [333] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uint::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [338] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) +Simplifying expression containing zero (byte*)&printf_buffer in [354] *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) ← (byte~) printf_uchar::$2 +Simplifying expression containing zero (byte*)&printf_buffer in [359] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) Successful SSA optimization PassNSimplifyExpressionWithZero -Eliminating unused variable (void*) memset::return#2 and assignment [115] (void*) memset::return#2 ← (void*) memset::str#3 -Eliminating unused variable (void*) memset::return#3 and assignment [139] (void*) memset::return#3 ← (void*) memset::str#3 -Eliminating unused variable (byte) printf_number_buffer::format_sign_always#1 and assignment [177] (byte) printf_number_buffer::format_sign_always#1 ← (byte) printf_uchar::format_sign_always#3 -Eliminating unused variable (byte) printf_number_buffer::format_radix#1 and assignment [180] (byte) printf_number_buffer::format_radix#1 ← (byte) printf_uchar::format_radix#3 -Eliminating unused variable (byte*) strupr::return#2 and assignment [217] (byte*) strupr::return#2 ← (byte*) strupr::str#0 +Eliminating unused variable (void*) memset::return#2 and assignment [151] (void*) memset::return#2 ← (void*) memset::str#3 +Eliminating unused variable (void*) memset::return#3 and assignment [175] (void*) memset::return#3 ← (void*) memset::str#3 +Eliminating unused variable (byte) printf_number_buffer::format_sign_always#2 and assignment [220] (byte) printf_number_buffer::format_sign_always#2 ← (byte) printf_uchar::format_sign_always#2 +Eliminating unused variable (byte) printf_number_buffer::format_radix#2 and assignment [223] (byte) printf_number_buffer::format_radix#2 ← (byte) printf_uchar::format_radix#2 +Eliminating unused variable (byte*) strupr::return#2 and assignment [260] (byte*) strupr::return#2 ← (byte*) strupr::str#0 Eliminating unused constant (const void*) memcpy::return#2 Eliminating unused constant (const byte) uctoa::max_digits#0 Eliminating unused constant (const byte*) uctoa::digit_values#0 Eliminating unused constant (const byte) utoa::max_digits#0 Eliminating unused constant (const word*) utoa::digit_values#0 Eliminating unused constant (const byte) utoa::radix#0 +Eliminating unused constant (const byte) ultoa::max_digits#0 +Eliminating unused constant (const dword*) ultoa::digit_values#0 +Eliminating unused constant (const byte) ultoa::radix#0 Eliminating unused constant (const byte) printf_number_buffer::format_sign_always#0 Eliminating unused constant (const byte) printf_number_buffer::format_radix#0 -Eliminating unused constant (const byte) place::i#0 +Eliminating unused constant (const byte) printf_number_buffer::format_sign_always#1 +Eliminating unused constant (const byte) printf_number_buffer::format_radix#1 Eliminating unused constant (const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const byte) printf_ulong::format_sign_always#0 +Eliminating unused constant (const byte) printf_ulong::format_radix#0 Eliminating unused constant (const byte) printf_uint::format_sign_always#0 Eliminating unused constant (const byte) printf_uint::format_radix#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte*) utoa::buffer#0 from unused block utoa::@9 Eliminating variable (byte*) utoa::buffer#1 from unused block utoa::@9 Eliminating variable (byte*) utoa::buffer#2 from unused block utoa::@9 +Eliminating variable (byte*) ultoa::buffer#0 from unused block ultoa::@9 +Eliminating variable (byte*) ultoa::buffer#1 from unused block ultoa::@9 +Eliminating variable (byte*) ultoa::buffer#2 from unused block ultoa::@9 Removing unused block utoa::@6 Removing PHI-reference to removed block (utoa::@2) in block utoa::@5 Removing PHI-reference to removed block (utoa::@2) in block utoa::@5 @@ -3323,15 +4078,29 @@ Removing PHI-reference to removed block (utoa::@4) in block utoa::@5 Removing PHI-reference to removed block (utoa::@4) in block utoa::@5 Removing unused block utoa::@4 Removing unused block utoa::@9 +Removing unused block ultoa::@6 +Removing PHI-reference to removed block (ultoa::@2) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@2) in block ultoa::@5 +Removing unused block ultoa::@2 +Removing unused block ultoa::@7 +Removing PHI-reference to removed block (ultoa::@3) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@3) in block ultoa::@5 +Removing unused block ultoa::@3 +Removing unused block ultoa::@8 +Removing PHI-reference to removed block (ultoa::@4) in block ultoa::@5 +Removing PHI-reference to removed block (ultoa::@4) in block ultoa::@5 +Removing unused block ultoa::@4 +Removing unused block ultoa::@9 +Removing PHI-reference to removed block (printf_ulong::@1) in block printf_ulong::@3 +Removing unused block printf_ulong::@1 Removing PHI-reference to removed block (printf_uint::@1) in block printf_uint::@3 Removing unused block printf_uint::@1 Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) 0 in (bool~) uctoa::$11 ← (number) 0 != (byte) uctoa::started#2 Adding number conversion cast (unumber) 0 in (bool~) utoa::$12 ← (number) 0 != (byte) utoa::started#2 +Adding number conversion cast (unumber) 0 in (bool~) ultoa::$12 ← (number) 0 != (byte) ultoa::started#2 Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$33 ← (number) 0 != (byte) printf_number_buffer::format_zero_padding#10 Adding number conversion cast (unumber) 0 in (bool~) printf_number_buffer::$34 ← (number) 0 != (byte) printf_number_buffer::format_justify_left#10 -Adding number conversion cast (unumber) 8+1 in if((byte) queen::column<(byte) 8+(number) 1) goto queen::@2 -Adding number conversion cast (unumber) 1 in if((byte) queen::column<(unumber)(byte) 8+(number) 1) goto queen::@2 Adding number conversion cast (unumber) 8+1 in if((byte) print::i#2<(byte) 8+(number) 1) goto print::@2 Adding number conversion cast (unumber) 1 in if((byte) print::i#2<(unumber)(byte) 8+(number) 1) goto print::@2 Adding number conversion cast (unumber) 8+1 in if((byte) print::i1#2<(byte) 8+(number) 1) goto print::@5 @@ -3346,8 +4115,7 @@ Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 0 -Simplifying constant integer cast (byte) 8+(unumber)(number) 1 -Simplifying constant integer cast 1 +Simplifying constant integer cast 0 Simplifying constant integer cast (byte) 8+(unumber)(number) 1 Simplifying constant integer cast 1 Simplifying constant integer cast (byte) 8+(unumber)(number) 1 @@ -3362,7 +4130,7 @@ Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 -Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 @@ -3371,40 +4139,46 @@ Finalized signed number type (signed byte) 0 Finalized signed number type (signed byte) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Identical Phi Values (byte) utoa::max_digits#7 (const byte) utoa::max_digits#1 Identical Phi Values (word*) utoa::digit_values#8 (const word*) utoa::digit_values#1 +Identical Phi Values (byte) ultoa::max_digits#7 (const byte) ultoa::max_digits#1 +Identical Phi Values (dword*) ultoa::digit_values#8 (const dword*) ultoa::digit_values#1 +Identical Phi Values (byte~) printf_ulong::$2 (const byte) printf_ulong::$0 Identical Phi Values (byte~) printf_uint::$2 (const byte) printf_uint::$0 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) toupper::$0 [2] if((byte) toupper::ch#0>=(byte) 'a') goto toupper::@3 Simple Condition (bool~) uctoa::$11 [56] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@14 Simple Condition (bool~) utoa::$12 [84] if((byte) 0!=(byte) utoa::started#2) goto utoa::@14 -Simple Condition (bool~) printf_number_buffer::$1 [177] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@23 -Simple Condition (bool~) printf_number_buffer::$33 [193] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@24 -Simple Condition (bool~) printf_number_buffer::$34 [203] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@26 -Simple Condition (bool~) toupper::$1 [287] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -Simple Condition (bool~) uctoa::$6 [288] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@14 -Simple Condition (bool~) utoa::$6 [289] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@14 -Simple Condition (bool~) printf_number_buffer::$35 [291] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -Simple Condition (bool~) printf_number_buffer::$2 [292] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@22 -Simple Condition (bool~) printf_number_buffer::$36 [294] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -Simple Condition (bool~) printf_number_buffer::$37 [296] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -Simple Condition (bool~) printf_number_buffer::$14 [297] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@25 +Simple Condition (bool~) ultoa::$12 [113] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@14 +Simple Condition (bool~) printf_number_buffer::$1 [213] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@23 +Simple Condition (bool~) printf_number_buffer::$33 [229] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@24 +Simple Condition (bool~) printf_number_buffer::$34 [239] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@26 +Simple Condition (bool~) toupper::$1 [315] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 +Simple Condition (bool~) uctoa::$6 [316] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@14 +Simple Condition (bool~) utoa::$6 [317] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@14 +Simple Condition (bool~) ultoa::$6 [318] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@14 +Simple Condition (bool~) printf_number_buffer::$35 [320] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 +Simple Condition (bool~) printf_number_buffer::$2 [321] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@22 +Simple Condition (bool~) printf_number_buffer::$36 [323] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 +Simple Condition (bool~) printf_number_buffer::$37 [325] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 +Simple Condition (bool~) printf_number_buffer::$14 [326] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@25 Successful SSA optimization Pass2ConditionalJumpSimplification Negating conditional jump and destination [2] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@2 -Negating conditional jump and destination [177] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -Negating conditional jump and destination [193] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -Negating conditional jump and destination [203] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -Negating conditional jump and destination [292] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -Negating conditional jump and destination [297] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return +Negating conditional jump and destination [213] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 +Negating conditional jump and destination [229] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 +Negating conditional jump and destination [239] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return +Negating conditional jump and destination [321] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 +Negating conditional jump and destination [326] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return Successful SSA optimization Pass2ConditionalJumpSequenceImprovement Constant right-side identified [6] (byte*) memcpy::src_end#0 ← (const byte*) memcpy::$2 + (const word) memcpy::num#0 Constant right-side identified [42] (byte*) uctoa::buffer#0 ← ++ (const byte*) uctoa::buffer#5 Constant right-side identified [78] (byte~) utoa::$4 ← (const byte) utoa::max_digits#1 - (byte) 1 +Constant right-side identified [107] (byte~) ultoa::$4 ← (const byte) ultoa::max_digits#1 - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) memcpy::src_end#0 = memcpy::$2+memcpy::num#0 Constant (const byte*) uctoa::buffer#0 = ++uctoa::buffer#5 Constant (const byte) utoa::$4 = utoa::max_digits#1-1 +Constant (const byte) ultoa::$4 = ultoa::max_digits#1-1 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte) utoa::max_digits#2 Eliminating unused constant (const word*) utoa::digit_values#2 @@ -3412,31 +4186,39 @@ Eliminating unused constant (const byte) utoa::max_digits#3 Eliminating unused constant (const word*) utoa::digit_values#3 Eliminating unused constant (const byte) utoa::max_digits#4 Eliminating unused constant (const word*) utoa::digit_values#4 +Eliminating unused constant (const byte) ultoa::max_digits#2 +Eliminating unused constant (const dword*) ultoa::digit_values#2 +Eliminating unused constant (const byte) ultoa::max_digits#3 +Eliminating unused constant (const dword*) ultoa::digit_values#3 +Eliminating unused constant (const byte) ultoa::max_digits#4 +Eliminating unused constant (const dword*) ultoa::digit_values#4 +Eliminating unused constant (const byte) printf_ulong::$1 Eliminating unused constant (const byte) printf_uint::$1 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant (const word*) RADIX_BINARY_VALUES Eliminating unused constant (const word*) RADIX_OCTAL_VALUES Eliminating unused constant (const word*) RADIX_HEXADECIMAL_VALUES +Eliminating unused constant (const dword*) RADIX_BINARY_VALUES_LONG +Eliminating unused constant (const dword*) RADIX_OCTAL_VALUES_LONG +Eliminating unused constant (const dword*) RADIX_HEXADECIMAL_VALUES_LONG Successful SSA optimization PassNEliminateUnusedVars Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Constant right-side identified [40] (byte*) uctoa::buffer#1 ← ++ (const byte*) uctoa::buffer#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) uctoa::buffer#1 = ++uctoa::buffer#0 Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Constant right-side identified [41] (byte*) uctoa::buffer#2 ← ++ (const byte*) uctoa::buffer#1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) uctoa::buffer#2 = ++uctoa::buffer#1 Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Inlining Noop Cast [12] (byte*~) memset::$4 ← (byte*)(void*) memset::str#3 keeping memset::str#3 Inlining Noop Cast [14] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3 -Inlining Noop Cast [170] (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 keeping printf_number_buffer::format_min_length#2 +Inlining Noop Cast [201] (signed byte~) printf_number_buffer::$25 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 keeping printf_number_buffer::format_min_length#3 Successful SSA optimization Pass2NopCastInlining Rewriting multiplication to use shift [70] (byte~) utoa::$10 ← (byte) utoa::digit#2 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift [95] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 * (const byte) SIZEOF_DWORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte*) memcpy::src#0 Inlining constant with var siblings (const byte*) memcpy::dst#0 @@ -3469,6 +4251,11 @@ Inlining constant with var siblings (const byte) utoa::started#1 Inlining constant with var siblings (const byte*) utoa::buffer#5 Inlining constant with var siblings (const word) utoa::value#1 Inlining constant with var siblings (const byte) utoa_append::digit#0 +Inlining constant with var siblings (const byte) ultoa::started#0 +Inlining constant with var siblings (const byte) ultoa::digit#0 +Inlining constant with var siblings (const byte) ultoa::started#1 +Inlining constant with var siblings (const byte*) ultoa::buffer#5 +Inlining constant with var siblings (const byte) ultoa_append::digit#0 Inlining constant with var siblings (const byte) printf_padding::i#0 Inlining constant with var siblings (const byte) printf_padding::pad#0 Inlining constant with var siblings (const byte) printf_padding::pad#1 @@ -3492,35 +4279,37 @@ Inlining constant with var siblings (const byte) printf_uchar::format_sign_alway Inlining constant with var siblings (const byte) printf_uchar::format_zero_padding#1 Inlining constant with var siblings (const byte) printf_uchar::format_upper_case#1 Inlining constant with var siblings (const byte) printf_uchar::format_radix#1 -Inlining constant with var siblings (const byte) printf_uchar::format_min_length#2 -Inlining constant with var siblings (const byte) printf_uchar::format_justify_left#2 -Inlining constant with var siblings (const byte) printf_uchar::format_sign_always#2 -Inlining constant with var siblings (const byte) printf_uchar::format_zero_padding#2 -Inlining constant with var siblings (const byte) printf_uchar::format_upper_case#2 -Inlining constant with var siblings (const byte) printf_uchar::format_radix#2 Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#0 Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#1 +Inlining constant with var siblings (const byte*) printf_number_buffer::buffer_digits#2 Inlining constant with var siblings (const signed byte) printf_number_buffer::padding#0 Inlining constant with var siblings (const signed byte) printf_number_buffer::padding#2 Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#0 Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#0 Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#0 Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#0 -Inlining constant with var siblings (const byte) place::i#1 -Inlining constant with var siblings (const byte) place::return#1 -Inlining constant with var siblings (const byte) place::return#2 -Inlining constant with var siblings (const byte) place::return#3 +Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#1 +Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#1 +Inlining constant with var siblings (const byte) queens::row#0 +Inlining constant with var siblings (const byte) legal::i#0 +Inlining constant with var siblings (const byte) legal::return#1 +Inlining constant with var siblings (const byte) legal::return#2 +Inlining constant with var siblings (const byte) legal::return#3 Inlining constant with var siblings (const byte) print::i#0 Inlining constant with var siblings (const byte) print::i1#0 Inlining constant with var siblings (const byte) print::j#0 +Inlining constant with var siblings (const dword) count#0 Constant inlined uctoa_append::digit#0 = (byte) 0 Constant inlined utoa::digit_values#1 = (const word*) RADIX_DECIMAL_VALUES -Constant inlined printf_number_buffer::format_justify_left#0 = (const byte) printf_uint::format_justify_left#0 +Constant inlined printf_number_buffer::format_justify_left#0 = (const byte) printf_ulong::format_justify_left#0 Constant inlined printf_number_buffer::buffer_digits#0 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant inlined printf_number_buffer::buffer_digits#1 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::buffer_digits#2 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::format_justify_left#1 = (const byte) printf_uint::format_justify_left#0 Constant inlined printf_uchar::format_justify_left#0 = (byte) 0 Constant inlined printf_uchar::format_justify_left#1 = (byte) 0 -Constant inlined printf_uchar::format_justify_left#2 = (byte) 0 Constant inlined memset::num#1 = (byte) $28 Constant inlined memset::num#0 = (word)(number) $28*(number) $19 Constant inlined strlen::len#0 = (word) 0 @@ -3529,18 +4318,21 @@ Constant inlined utoa::$4 = (const byte) utoa::max_digits#1-(byte) 1 Constant inlined printf_number_buffer::padding#2 = (signed byte) 0 Constant inlined uctoa::digit#0 = (byte) 0 Constant inlined print::j#0 = (byte) 1 -Constant inlined printf_uchar::format_sign_always#2 = (byte) 0 +Constant inlined ultoa::started#1 = (byte) 1 +Constant inlined count#0 = (dword) 0 Constant inlined printf_uchar::format_sign_always#1 = (byte) 0 -Constant inlined place::i#1 = (byte) 1 +Constant inlined legal::return#2 = (byte) 0 Constant inlined utoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined ultoa::digit#0 = (byte) 0 +Constant inlined legal::return#3 = (byte) 0 Constant inlined printf_uchar::format_sign_always#0 = (byte) 0 -Constant inlined printf_uchar::format_min_length#2 = (byte) 0 +Constant inlined queens::row#0 = (byte) 1 Constant inlined memset::c#0 = (byte) ' ' Constant inlined printf_uchar::format_min_length#1 = (byte) 0 +Constant inlined legal::return#1 = (byte) 1 Constant inlined memset::c#1 = (byte) ' ' Constant inlined printf_uchar::format_min_length#0 = (byte) 0 Constant inlined printf_uchar::format_upper_case#1 = (byte) 0 -Constant inlined printf_uchar::format_upper_case#2 = (byte) 0 Constant inlined printf_number_buffer::padding#0 = (signed byte) 0 Constant inlined printf_uchar::format_upper_case#0 = (byte) 0 Constant inlined utoa_append::digit#0 = (byte) 0 @@ -3556,20 +4348,23 @@ Constant inlined printf_uchar::$0 = (byte) 0 Constant inlined printf_uchar::$1 = (byte) '+' Constant inlined memcpy::src#0 = (byte*)(const void*) memcpy::source#0 Constant inlined uctoa::max_digits#1 = (byte) 3 -Constant inlined printf_number_buffer::format_upper_case#0 = (const byte) printf_uint::format_upper_case#0 +Constant inlined ultoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS +Constant inlined printf_number_buffer::format_upper_case#1 = (const byte) printf_uint::format_upper_case#0 +Constant inlined ultoa::started#0 = (byte) 0 +Constant inlined legal::i#0 = (byte) 1 +Constant inlined printf_number_buffer::format_upper_case#0 = (const byte) printf_ulong::format_upper_case#0 Constant inlined utoa::digit#0 = (byte) 0 -Constant inlined printf_number_buffer::format_min_length#0 = (const byte) printf_uint::format_min_length#0 +Constant inlined printf_number_buffer::format_min_length#0 = (const byte) printf_ulong::format_min_length#0 Constant inlined uctoa::max_digits#3 = (byte) 3 -Constant inlined place::return#2 = (byte) 0 -Constant inlined printf_number_buffer::format_zero_padding#0 = (const byte) printf_uint::format_zero_padding#0 +Constant inlined printf_number_buffer::format_zero_padding#0 = (const byte) printf_ulong::format_zero_padding#0 +Constant inlined printf_number_buffer::format_min_length#1 = (const byte) printf_uint::format_min_length#0 Constant inlined uctoa::max_digits#2 = (byte) 2 -Constant inlined place::return#3 = (byte) 0 Constant inlined uctoa::max_digits#4 = (byte) 8 -Constant inlined place::return#1 = (byte) 1 Constant inlined uctoa::buffer#1 = ++++(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant inlined memset::str#1 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 Constant inlined uctoa::buffer#2 = ++++++(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant inlined printf_padding::pad#0 = (byte) ' ' +Constant inlined printf_number_buffer::format_zero_padding#1 = (const byte) printf_uint::format_zero_padding#0 Constant inlined memset::str#0 = (void*) 1024 Constant inlined printf_padding::i#0 = (byte) 0 Constant inlined printf_padding::pad#1 = (byte) '0' @@ -3578,18 +4373,20 @@ Constant inlined uctoa::buffer#0 = ++(byte*)&(struct printf_buffer_number) print Constant inlined printf_padding::pad#2 = (byte) ' ' Constant inlined printf_uchar::format_zero_padding#0 = (byte) 0 Constant inlined printf_uint::$0 = (byte) 0 -Constant inlined printf_uchar::format_zero_padding#2 = (byte) 0 +Constant inlined printf_ulong::$0 = (byte) 0 Constant inlined utoa::started#1 = (byte) 1 Constant inlined utoa::started#0 = (byte) 0 Constant inlined print::i#0 = (byte) 1 -Constant inlined printf_uchar::format_radix#2 = (const byte) DECIMAL +Constant inlined ultoa::$4 = (const byte) ultoa::max_digits#1-(byte) 1 Constant inlined uctoa::buffer#5 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS Constant inlined printf_str::str#6 = (const byte*) print::str2 Constant inlined printf_str::str#5 = (const byte*) print::str1 Constant inlined printf_str::str#8 = (const byte*) print::str4 Constant inlined printf_str::str#7 = (const byte*) print::str3 -Constant inlined printf_uchar::format_radix#1 = (const byte) DECIMAL -Constant inlined printf_uchar::format_radix#0 = (const byte) DECIMAL +Constant inlined printf_uchar::format_radix#1 = (const byte) HEXADECIMAL +Constant inlined printf_uchar::format_radix#0 = (const byte) HEXADECIMAL +Constant inlined ultoa_append::digit#0 = (byte) 0 +Constant inlined ultoa::digit_values#1 = (const dword*) RADIX_DECIMAL_VALUES_LONG Constant inlined printf_str::str#2 = (const byte*) main::str Constant inlined printf_str::str#4 = (const byte*) print::str Constant inlined utoa::value#1 = (const word) printf_uint::uvalue#0 @@ -3615,38 +4412,37 @@ Finalized unsigned number type (byte) 2 Finalized unsigned number type (byte) 3 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r -Identical Phi Values (byte) printf_uchar::format_sign_always#3 (byte) 0 -Identical Phi Values (byte) printf_uchar::format_radix#3 (const byte) DECIMAL -Identical Phi Values (byte) printf_uchar::format_min_length#3 (byte) 0 -Identical Phi Values (byte) printf_uchar::format_justify_left#3 (byte) 0 -Identical Phi Values (byte) printf_uchar::format_zero_padding#3 (byte) 0 -Identical Phi Values (byte) printf_uchar::format_upper_case#3 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_sign_always#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_radix#2 (const byte) HEXADECIMAL +Identical Phi Values (byte) printf_uchar::format_min_length#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_justify_left#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_zero_padding#2 (byte) 0 +Identical Phi Values (byte) printf_uchar::format_upper_case#2 (byte) 0 Successful SSA optimization Pass2IdenticalPhiElimination -Constant (const byte) uctoa::radix#0 = DECIMAL -Constant (const byte) printf_number_buffer::format_min_length#1 = 0 -Constant (const byte) printf_number_buffer::format_justify_left#1 = 0 -Constant (const byte) printf_number_buffer::format_zero_padding#1 = 0 -Constant (const byte) printf_number_buffer::format_upper_case#1 = 0 +Constant (const byte) uctoa::radix#0 = HEXADECIMAL +Constant (const byte) printf_number_buffer::format_min_length#2 = 0 +Constant (const byte) printf_number_buffer::format_justify_left#2 = 0 +Constant (const byte) printf_number_buffer::format_zero_padding#2 = 0 +Constant (const byte) printf_number_buffer::format_upper_case#2 = 0 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [32] if((const byte) uctoa::radix#0==(const byte) DECIMAL) goto uctoa::@1 -if() condition always false - eliminating [33] if((const byte) uctoa::radix#0==(const byte) HEXADECIMAL) goto uctoa::@2 +if() condition always false - eliminating [32] if((const byte) uctoa::radix#0==(const byte) DECIMAL) goto uctoa::@1 +if() condition always true - replacing block destination [33] if((const byte) uctoa::radix#0==(const byte) HEXADECIMAL) goto uctoa::@2 if() condition always false - eliminating [34] if((const byte) uctoa::radix#0==(const byte) OCTAL) goto uctoa::@3 if() condition always false - eliminating [35] if((const byte) uctoa::radix#0==(const byte) BINARY) goto uctoa::@4 -if() condition always false - eliminating [144] if((byte) 0!=(byte) 0) goto printf_uchar::@1 +if() condition always false - eliminating [175] if((byte) 0!=(byte) 0) goto printf_uchar::@1 Successful SSA optimization Pass2ConstantIfs Eliminating unused constant (const byte) BINARY Eliminating unused constant (const byte) OCTAL -Eliminating unused constant (const byte) HEXADECIMAL +Eliminating unused constant (const byte) DECIMAL Eliminating unused constant (const byte) uctoa::radix#0 Eliminating unused constant (const byte) SIZEOF_WORD +Eliminating unused constant (const byte) SIZEOF_DWORD Successful SSA optimization PassNEliminateUnusedVars -Eliminating unused constant (const byte) DECIMAL +Eliminating unused constant (const byte) HEXADECIMAL Successful SSA optimization PassNEliminateUnusedVars -Removing unused block uctoa::@6 -Removing PHI-reference to removed block (uctoa::@2) in block uctoa::@5 -Removing PHI-reference to removed block (uctoa::@2) in block uctoa::@5 -Removing unused block uctoa::@2 +Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5 +Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5 +Removing unused block uctoa::@1 Removing unused block uctoa::@7 Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5 Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5 @@ -3659,40 +4455,40 @@ Removing unused block uctoa::@9 Removing PHI-reference to removed block (printf_uchar::@1) in block printf_uchar::@3 Removing unused block printf_uchar::@1 Successful SSA optimization Pass2EliminateUnusedBlocks -Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#1 -Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#1 -Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#1 -Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#1 -Constant inlined printf_number_buffer::format_zero_padding#1 = (byte) 0 -Constant inlined printf_number_buffer::format_upper_case#1 = (byte) 0 -Constant inlined printf_number_buffer::format_justify_left#1 = (byte) 0 -Constant inlined printf_number_buffer::format_min_length#1 = (byte) 0 +Inlining constant with var siblings (const byte) printf_number_buffer::format_min_length#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_justify_left#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_zero_padding#2 +Inlining constant with var siblings (const byte) printf_number_buffer::format_upper_case#2 +Constant inlined printf_number_buffer::format_zero_padding#2 = (byte) 0 +Constant inlined printf_number_buffer::format_upper_case#2 = (byte) 0 +Constant inlined printf_number_buffer::format_justify_left#2 = (byte) 0 +Constant inlined printf_number_buffer::format_min_length#2 = (byte) 0 Successful SSA optimization Pass2ConstantInlining Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r -Identical Phi Values (byte) uctoa::max_digits#7 (byte) 3 -Identical Phi Values (byte*) uctoa::digit_values#8 (const byte*) RADIX_DECIMAL_VALUES_CHAR +Identical Phi Values (byte) uctoa::max_digits#7 (byte) 2 +Identical Phi Values (byte*) uctoa::digit_values#8 (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR Identical Phi Values (byte~) printf_uchar::$2 (byte) 0 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [35] (byte~) uctoa::$4 ← (byte) 3 - (byte) 1 +Constant right-side identified [35] (byte~) uctoa::$4 ← (byte) 2 - (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation -Constant (const byte) uctoa::$4 = 3-1 +Constant (const byte) uctoa::$4 = 2-1 Successful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const byte*) RADIX_BINARY_VALUES_CHAR Eliminating unused constant (const byte*) RADIX_OCTAL_VALUES_CHAR -Eliminating unused constant (const byte*) RADIX_HEXADECIMAL_VALUES_CHAR +Eliminating unused constant (const byte*) RADIX_DECIMAL_VALUES_CHAR Successful SSA optimization PassNEliminateUnusedVars -Constant inlined uctoa::$4 = (byte) 3-(byte) 1 +Constant inlined uctoa::$4 = (byte) 2-(byte) 1 Successful SSA optimization Pass2ConstantInlining Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Alias candidate removed (volatile)printf_cursor_ptr = printf_ln::$1 printf_scroll::$4 -Alias candidate removed (volatile)queen::row#0 = queen::r Added new block during phi lifting uctoa::@17(between uctoa::@16 and uctoa::@13) Added new block during phi lifting utoa::@17(between utoa::@16 and utoa::@13) +Added new block during phi lifting ultoa::@17(between ultoa::@16 and ultoa::@13) Added new block during phi lifting printf_number_buffer::@27(between printf_number_buffer::@13 and printf_number_buffer::@1) Added new block during phi lifting printf_number_buffer::@28(between printf_number_buffer::@15 and printf_number_buffer::@13) +Added new block during phi lifting queens::@11(between queens::@9 and queens::@1) Adding NOP phi() at start of @begin +Adding NOP phi() at start of @2 Adding NOP phi() at start of @3 Adding NOP phi() at start of @4 Adding NOP phi() at start of @end @@ -3700,9 +4496,21 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of printf_uint -Adding NOP phi() at start of printf_uint::@2 -Adding NOP phi() at start of printf_uint::@5 +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of queens +Adding NOP phi() at start of queens::@5 +Adding NOP phi() at start of print::@13 +Adding NOP phi() at start of print::@14 +Adding NOP phi() at start of print::@3 +Adding NOP phi() at start of print::@5 +Adding NOP phi() at start of print::@17 +Adding NOP phi() at start of print::@11 +Adding NOP phi() at start of print::@19 +Adding NOP phi() at start of print::@9 +Adding NOP phi() at start of print::@18 +Adding NOP phi() at start of printf_uchar::@2 +Adding NOP phi() at start of printf_uchar::@5 Adding NOP phi() at start of printf_number_buffer::@14 Adding NOP phi() at start of printf_number_buffer::@17 Adding NOP phi() at start of printf_number_buffer::@20 @@ -3719,117 +4527,145 @@ Adding NOP phi() at start of printf_str::@4 Adding NOP phi() at start of printf_ln::@1 Adding NOP phi() at start of strupr::@3 Adding NOP phi() at start of strlen::@3 +Adding NOP phi() at start of uctoa +Adding NOP phi() at start of uctoa::@6 +Adding NOP phi() at start of uctoa::@2 +Adding NOP phi() at start of printf_ulong +Adding NOP phi() at start of printf_ulong::@2 +Adding NOP phi() at start of printf_ulong::@5 +Adding NOP phi() at start of ultoa +Adding NOP phi() at start of ultoa::@1 +Adding NOP phi() at start of legal +Adding NOP phi() at start of legal::@3 +Adding NOP phi() at start of legal::@7 +Adding NOP phi() at start of legal::@4 +Adding NOP phi() at start of printf_uint +Adding NOP phi() at start of printf_uint::@2 +Adding NOP phi() at start of printf_uint::@5 Adding NOP phi() at start of utoa Adding NOP phi() at start of utoa::@1 Adding NOP phi() at start of utoa::@5 Adding NOP phi() at start of printf_cls -Adding NOP phi() at start of queen::@4 -Adding NOP phi() at start of queen::@8 -Adding NOP phi() at start of print::@13 -Adding NOP phi() at start of print::@14 -Adding NOP phi() at start of print::@3 -Adding NOP phi() at start of print::@5 -Adding NOP phi() at start of print::@17 -Adding NOP phi() at start of print::@11 -Adding NOP phi() at start of print::@19 -Adding NOP phi() at start of print::@9 -Adding NOP phi() at start of print::@18 -Adding NOP phi() at start of printf_uchar::@2 -Adding NOP phi() at start of printf_uchar::@5 -Adding NOP phi() at start of uctoa -Adding NOP phi() at start of uctoa::@1 -Adding NOP phi() at start of place -Adding NOP phi() at start of place::@3 -Adding NOP phi() at start of place::@7 -Adding NOP phi() at start of place::@4 CALL GRAPH Calls in [] to main:6 -Calls in [main] to printf_cls:10 printf_str:12 printf_str:14 printf_uint:16 queen:18 -Calls in [printf_uint] to utoa:24 printf_number_buffer:27 -Calls in [printf_number_buffer] to strlen:33 printf_char:51 strupr:57 printf_str:61 printf_padding:68 printf_padding:72 printf_padding:76 -Calls in [printf_padding] to printf_char:86 -Calls in [printf_char] to printf_scroll:96 -Calls in [printf_scroll] to memcpy:101 memset:103 -Calls in [printf_str] to printf_char:139 printf_ln:142 -Calls in [printf_ln] to printf_scroll:149 -Calls in [strupr] to toupper:158 -Calls in [utoa] to utoa_append:206 -Calls in [printf_cls] to memset:222 -Calls in [queen] to place:234 queen:243 print:248 -Calls in [print] to printf_str:251 printf_uchar:254 printf_str:256 printf_str:265 printf_uchar:268 printf_str:276 printf_str:281 printf_uchar:285 -Calls in [printf_uchar] to uctoa:292 printf_number_buffer:295 -Calls in [uctoa] to uctoa_append:322 -Calls in [place] to diff:349 diff:356 +Calls in [main] to printf_cls:10 printf_str:12 printf_str:14 printf_uint:16 queens:18 +Calls in [queens] to legal:27 print:38 +Calls in [print] to printf_str:48 printf_ulong:50 printf_str:52 printf_str:61 printf_uchar:64 printf_str:72 printf_str:77 printf_uchar:81 +Calls in [printf_uchar] to uctoa:88 printf_number_buffer:91 +Calls in [printf_number_buffer] to strlen:97 printf_char:115 strupr:121 printf_str:125 printf_padding:132 printf_padding:136 printf_padding:140 +Calls in [printf_padding] to printf_char:150 +Calls in [printf_char] to printf_scroll:160 +Calls in [printf_scroll] to memcpy:165 memset:167 +Calls in [printf_str] to printf_char:203 printf_ln:206 +Calls in [printf_ln] to printf_scroll:213 +Calls in [strupr] to toupper:222 +Calls in [uctoa] to uctoa_append:269 +Calls in [printf_ulong] to ultoa:288 printf_number_buffer:291 +Calls in [ultoa] to ultoa_append:320 +Calls in [legal] to diff:347 diff:354 +Calls in [printf_uint] to utoa:373 printf_number_buffer:376 +Calls in [utoa] to utoa_append:405 +Calls in [printf_cls] to memset:421 -Created 51 initial phi equivalence classes -Coalesced [26] printf_number_buffer::buffer_sign#14 ← printf_number_buffer::buffer_sign#0 -Coalesced [39] printf_number_buffer::len#5 ← printf_number_buffer::len#1 -Coalesced [50] printf_char::ch#4 ← printf_char::ch#2 -Coalesced [60] printf_str::str#17 ← printf_str::str#1 -Coalesced [67] printf_padding::length#8 ← printf_padding::length#2 -Coalesced [71] printf_padding::length#7 ← printf_padding::length#1 -Coalesced [75] printf_padding::length#9 ← printf_padding::length#0 -Coalesced [78] printf_number_buffer::padding#18 ← printf_number_buffer::padding#1 -Coalesced [79] printf_number_buffer::len#4 ← printf_number_buffer::len#0 -Coalesced [85] printf_char::ch#5 ← printf_char::ch#0 -Coalesced [88] printf_padding::i#5 ← printf_padding::i#1 -Coalesced [118] memset::dst#5 ← memset::dst#1 -Coalesced [127] memcpy::src#4 ← memcpy::src#1 -Coalesced [128] memcpy::dst#4 ← memcpy::dst#1 -Coalesced [130] printf_str::str#18 ← printf_str::str#11 -Coalesced [138] printf_char::ch#6 ← printf_char::ch#1 -Coalesced [140] printf_str::str#20 ← printf_str::str#0 -Coalesced (already) [143] printf_str::str#19 ← printf_str::str#0 -Coalesced [152] strupr::src#5 ← strupr::str#0 -Coalesced [163] strupr::src#6 ← strupr::src#1 -Coalesced [166] toupper::return#7 ← toupper::ch#0 -Coalesced [170] toupper::return#6 ← toupper::return#0 -Coalesced [171] strlen::str#5 ← strlen::str#1 -Coalesced [178] strlen::str#6 ← strlen::str#0 -Coalesced [179] strlen::len#5 ← strlen::len#1 -Coalesced [194] utoa::value#17 ← utoa::value#2 -Coalesced [195] utoa::started#6 ← utoa::started#2 -Coalesced [196] utoa::buffer#23 ← utoa::buffer#11 -Coalesced [199] utoa::digit#7 ← utoa::digit#1 -Coalesced (already) [200] utoa::value#16 ← utoa::value#6 -Coalesced (already) [201] utoa::started#5 ← utoa::started#4 -Coalesced (already) [202] utoa::buffer#22 ← utoa::buffer#14 -Coalesced [210] utoa::value#18 ← utoa::value#0 -Coalesced [211] utoa::buffer#24 ← utoa::buffer#4 -Coalesced [212] utoa_append::value#6 ← utoa_append::value#0 -Coalesced [219] utoa_append::value#7 ← utoa_append::value#1 -Coalesced [220] utoa_append::digit#5 ← utoa_append::digit#1 -Coalesced [253] printf_uchar::uvalue#7 ← printf_uchar::uvalue#0 -Coalesced [267] printf_uchar::uvalue#8 ← printf_uchar::uvalue#2 -Coalesced [273] print::i1#14 ← print::i1#1 -Coalesced [279] print::j#9 ← print::j#1 -Coalesced [284] printf_uchar::uvalue#9 ← printf_uchar::uvalue#1 -Coalesced [287] print::i#5 ← print::i#1 -Coalesced [294] printf_number_buffer::buffer_sign#13 ← printf_number_buffer::buffer_sign#1 -Coalesced [300] uctoa::value#17 ← uctoa::value#1 -Coalesced [310] uctoa::value#18 ← uctoa::value#2 -Coalesced [311] uctoa::started#6 ← uctoa::started#2 -Coalesced [312] uctoa::buffer#23 ← uctoa::buffer#11 -Coalesced [315] uctoa::digit#7 ← uctoa::digit#1 -Coalesced (already) [316] uctoa::value#16 ← uctoa::value#6 -Coalesced (already) [317] uctoa::started#5 ← uctoa::started#4 -Coalesced (already) [318] uctoa::buffer#22 ← uctoa::buffer#14 -Coalesced [326] uctoa::value#19 ← uctoa::value#0 -Coalesced [327] uctoa::buffer#24 ← uctoa::buffer#4 -Coalesced [328] uctoa_append::value#6 ← uctoa_append::value#0 -Coalesced [335] uctoa_append::value#7 ← uctoa_append::value#1 -Coalesced [336] uctoa_append::digit#5 ← uctoa_append::digit#1 -Coalesced [347] diff::a#5 ← diff::a#0 -Coalesced [348] diff::b#5 ← diff::b#0 -Coalesced [354] diff::a#6 ← diff::a#1 -Coalesced [355] diff::b#6 ← diff::b#1 -Coalesced [362] place::i#9 ← place::i#2 -Coalesced [367] diff::return#9 ← diff::return#3 -Coalesced [371] diff::return#8 ← diff::return#2 -Coalesced down to 44 phi equivalence classes +Created 62 initial phi equivalence classes +Coalesced (already) [31] queens::row#16 ← queens::row#10 +Coalesced (already) [32] count#53 ← count#11 +Coalesced [35] queens::row#14 ← queens::row#1 +Coalesced (already) [36] count#51 ← count#11 +Coalesced (already) [39] queens::row#13 ← queens::row#10 +Coalesced [40] count#50 ← count#13 +Coalesced [44] queens::row#15 ← queens::row#2 +Coalesced (already) [45] count#52 ← count#11 +Coalesced [63] printf_uchar::uvalue#6 ← printf_uchar::uvalue#1 +Coalesced [69] print::i1#14 ← print::i1#1 +Coalesced [75] print::j#9 ← print::j#1 +Coalesced [80] printf_uchar::uvalue#7 ← printf_uchar::uvalue#0 +Coalesced [83] print::i#5 ← print::i#1 +Coalesced [90] printf_number_buffer::buffer_sign#14 ← printf_number_buffer::buffer_sign#2 +Coalesced [103] printf_number_buffer::len#5 ← printf_number_buffer::len#1 +Coalesced [114] printf_char::ch#4 ← printf_char::ch#2 +Coalesced [124] printf_str::str#17 ← printf_str::str#1 +Coalesced [131] printf_padding::length#8 ← printf_padding::length#2 +Coalesced [135] printf_padding::length#7 ← printf_padding::length#1 +Coalesced [139] printf_padding::length#9 ← printf_padding::length#0 +Coalesced [142] printf_number_buffer::padding#18 ← printf_number_buffer::padding#1 +Coalesced [143] printf_number_buffer::len#4 ← printf_number_buffer::len#0 +Coalesced [149] printf_char::ch#5 ← printf_char::ch#0 +Coalesced [152] printf_padding::i#5 ← printf_padding::i#1 +Coalesced [182] memset::dst#5 ← memset::dst#1 +Coalesced [191] memcpy::src#4 ← memcpy::src#1 +Coalesced [192] memcpy::dst#4 ← memcpy::dst#1 +Coalesced [194] printf_str::str#18 ← printf_str::str#11 +Coalesced [202] printf_char::ch#6 ← printf_char::ch#1 +Coalesced [204] printf_str::str#20 ← printf_str::str#0 +Coalesced (already) [207] printf_str::str#19 ← printf_str::str#0 +Coalesced [216] strupr::src#5 ← strupr::str#0 +Coalesced [227] strupr::src#6 ← strupr::src#1 +Coalesced [230] toupper::return#7 ← toupper::ch#0 +Coalesced [234] toupper::return#6 ← toupper::return#0 +Coalesced [235] strlen::str#5 ← strlen::str#1 +Coalesced [242] strlen::str#6 ← strlen::str#0 +Coalesced [243] strlen::len#5 ← strlen::len#1 +Coalesced [247] uctoa::value#17 ← uctoa::value#1 +Coalesced [257] uctoa::value#18 ← uctoa::value#2 +Coalesced [258] uctoa::started#6 ← uctoa::started#2 +Coalesced [259] uctoa::buffer#23 ← uctoa::buffer#11 +Coalesced [262] uctoa::digit#7 ← uctoa::digit#1 +Coalesced (already) [263] uctoa::value#16 ← uctoa::value#6 +Coalesced (already) [264] uctoa::started#5 ← uctoa::started#4 +Coalesced (already) [265] uctoa::buffer#22 ← uctoa::buffer#14 +Coalesced [273] uctoa::value#19 ← uctoa::value#0 +Coalesced [274] uctoa::buffer#24 ← uctoa::buffer#4 +Coalesced [275] uctoa_append::value#6 ← uctoa_append::value#0 +Coalesced [282] uctoa_append::value#7 ← uctoa_append::value#1 +Coalesced [283] uctoa_append::digit#5 ← uctoa_append::digit#1 +Coalesced [290] printf_number_buffer::buffer_sign#16 ← printf_number_buffer::buffer_sign#0 +Coalesced [296] ultoa::value#17 ← ultoa::value#1 +Coalesced [308] ultoa::value#18 ← ultoa::value#2 +Coalesced [309] ultoa::started#6 ← ultoa::started#2 +Coalesced [310] ultoa::buffer#23 ← ultoa::buffer#11 +Coalesced [313] ultoa::digit#7 ← ultoa::digit#1 +Coalesced (already) [314] ultoa::value#16 ← ultoa::value#6 +Coalesced (already) [315] ultoa::started#5 ← ultoa::started#4 +Coalesced (already) [316] ultoa::buffer#22 ← ultoa::buffer#14 +Coalesced [324] ultoa::value#19 ← ultoa::value#0 +Coalesced [325] ultoa::buffer#24 ← ultoa::buffer#4 +Coalesced [326] ultoa_append::value#6 ← ultoa_append::value#0 +Coalesced [333] ultoa_append::value#7 ← ultoa_append::value#1 +Coalesced [334] ultoa_append::digit#5 ← ultoa_append::digit#1 +Coalesced [345] diff::a#5 ← diff::a#0 +Coalesced [346] diff::b#5 ← diff::b#0 +Coalesced [352] diff::a#6 ← diff::a#1 +Coalesced [353] diff::b#6 ← diff::b#1 +Coalesced [360] legal::i#8 ← legal::i#1 +Coalesced [365] diff::return#9 ← diff::return#3 +Coalesced [369] diff::return#8 ← diff::return#2 +Coalesced [375] printf_number_buffer::buffer_sign#15 ← printf_number_buffer::buffer_sign#1 +Coalesced [393] utoa::value#17 ← utoa::value#2 +Coalesced [394] utoa::started#6 ← utoa::started#2 +Coalesced [395] utoa::buffer#23 ← utoa::buffer#11 +Coalesced [398] utoa::digit#7 ← utoa::digit#1 +Coalesced (already) [399] utoa::value#16 ← utoa::value#6 +Coalesced (already) [400] utoa::started#5 ← utoa::started#4 +Coalesced (already) [401] utoa::buffer#22 ← utoa::buffer#14 +Coalesced [409] utoa::value#18 ← utoa::value#0 +Coalesced [410] utoa::buffer#24 ← utoa::buffer#4 +Coalesced [411] utoa_append::value#6 ← utoa_append::value#0 +Coalesced [418] utoa_append::value#7 ← utoa_append::value#1 +Coalesced [419] utoa_append::digit#5 ← utoa_append::digit#1 +Coalesced down to 52 phi equivalence classes +Culled Empty Block (label) @2 Culled Empty Block (label) @4 -Culled Empty Block (label) printf_uint::@2 -Culled Empty Block (label) printf_uint::@5 +Culled Empty Block (label) main::@5 +Culled Empty Block (label) queens::@11 +Culled Empty Block (label) queens::@10 +Culled Empty Block (label) print::@14 +Culled Empty Block (label) print::@3 +Culled Empty Block (label) print::@17 +Culled Empty Block (label) print::@19 +Culled Empty Block (label) print::@18 +Culled Empty Block (label) printf_uchar::@2 +Culled Empty Block (label) printf_uchar::@5 Culled Empty Block (label) printf_number_buffer::@14 Culled Empty Block (label) printf_number_buffer::@17 Culled Empty Block (label) printf_number_buffer::@20 @@ -3846,23 +4682,24 @@ Culled Empty Block (label) printf_ln::@1 Culled Empty Block (label) strupr::@3 Culled Empty Block (label) toupper::@2 Culled Empty Block (label) strlen::@3 +Culled Empty Block (label) uctoa::@6 +Culled Empty Block (label) uctoa::@2 +Culled Empty Block (label) uctoa::@5 +Culled Empty Block (label) uctoa::@17 +Culled Empty Block (label) printf_ulong::@2 +Culled Empty Block (label) printf_ulong::@5 +Culled Empty Block (label) ultoa::@1 +Culled Empty Block (label) ultoa::@5 +Culled Empty Block (label) ultoa::@17 +Culled Empty Block (label) legal::@3 +Culled Empty Block (label) legal::@7 +Culled Empty Block (label) legal::@4 +Culled Empty Block (label) printf_uint::@2 +Culled Empty Block (label) printf_uint::@5 Culled Empty Block (label) utoa::@1 Culled Empty Block (label) utoa::@5 Culled Empty Block (label) utoa::@17 -Culled Empty Block (label) queen::@8 -Culled Empty Block (label) print::@14 -Culled Empty Block (label) print::@3 -Culled Empty Block (label) print::@17 -Culled Empty Block (label) print::@19 -Culled Empty Block (label) print::@18 -Culled Empty Block (label) printf_uchar::@2 -Culled Empty Block (label) printf_uchar::@5 -Culled Empty Block (label) uctoa::@1 -Culled Empty Block (label) uctoa::@5 -Culled Empty Block (label) uctoa::@17 -Culled Empty Block (label) place::@3 -Culled Empty Block (label) place::@7 -Culled Empty Block (label) place::@4 +Renumbering block @3 to @2 Renumbering block toupper::@3 to toupper::@2 Renumbering block memset::@2 to memset::@1 Renumbering block memset::@3 to memset::@2 @@ -3882,6 +4719,15 @@ Renumbering block utoa::@13 to utoa::@4 Renumbering block utoa::@14 to utoa::@5 Renumbering block utoa::@15 to utoa::@6 Renumbering block utoa::@16 to utoa::@7 +Renumbering block ultoa::@10 to ultoa::@1 +Renumbering block ultoa::@11 to ultoa::@2 +Renumbering block ultoa::@12 to ultoa::@3 +Renumbering block ultoa::@13 to ultoa::@4 +Renumbering block ultoa::@14 to ultoa::@5 +Renumbering block ultoa::@15 to ultoa::@6 +Renumbering block ultoa::@16 to ultoa::@7 +Renumbering block printf_ulong::@3 to printf_ulong::@1 +Renumbering block printf_ulong::@4 to printf_ulong::@2 Renumbering block printf_uint::@3 to printf_uint::@1 Renumbering block printf_uint::@4 to printf_uint::@2 Renumbering block printf_uchar::@3 to printf_uchar::@1 @@ -3894,10 +4740,10 @@ Renumbering block printf_number_buffer::@24 to printf_number_buffer::@18 Renumbering block printf_number_buffer::@25 to printf_number_buffer::@19 Renumbering block printf_number_buffer::@26 to printf_number_buffer::@20 Renumbering block printf_number_buffer::@27 to printf_number_buffer::@21 -Renumbering block place::@5 to place::@3 -Renumbering block place::@6 to place::@4 -Renumbering block place::@8 to place::@5 -Renumbering block place::@9 to place::@6 +Renumbering block legal::@5 to legal::@3 +Renumbering block legal::@6 to legal::@4 +Renumbering block legal::@8 to legal::@5 +Renumbering block legal::@9 to legal::@6 Renumbering block print::@4 to print::@3 Renumbering block print::@5 to print::@4 Renumbering block print::@6 to print::@5 @@ -3911,13 +4757,19 @@ Renumbering block print::@13 to print::@12 Renumbering block print::@15 to print::@13 Renumbering block print::@16 to print::@14 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @3 +Adding NOP phi() at start of @2 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of printf_uint +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of queens +Adding NOP phi() at start of queens::@5 +Adding NOP phi() at start of print::@12 +Adding NOP phi() at start of print::@4 +Adding NOP phi() at start of print::@10 +Adding NOP phi() at start of print::@8 Adding NOP phi() at start of printf_number_buffer::@21 Adding NOP phi() at start of printf_scroll::@1 Adding NOP phi() at start of printf_scroll::@2 @@ -3925,17 +4777,16 @@ Adding NOP phi() at start of memcpy Adding NOP phi() at start of printf_str::@4 Adding NOP phi() at start of strupr Adding NOP phi() at start of strlen +Adding NOP phi() at start of uctoa +Adding NOP phi() at start of uctoa_append +Adding NOP phi() at start of printf_ulong +Adding NOP phi() at start of ultoa +Adding NOP phi() at start of ultoa_append +Adding NOP phi() at start of legal +Adding NOP phi() at start of printf_uint Adding NOP phi() at start of utoa Adding NOP phi() at start of utoa_append Adding NOP phi() at start of printf_cls -Adding NOP phi() at start of queen::@4 -Adding NOP phi() at start of print::@12 -Adding NOP phi() at start of print::@4 -Adding NOP phi() at start of print::@10 -Adding NOP phi() at start of print::@8 -Adding NOP phi() at start of uctoa -Adding NOP phi() at start of uctoa_append -Adding NOP phi() at start of place FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -3947,660 +4798,761 @@ FINAL CONTROL FLOW GRAPH [3] (byte*) printf_cursor_ptr ← (byte*) 1024 to:@2 @2: scope:[] from @1 - [4] (byte) count ← (byte) 0 - to:@3 -@3: scope:[] from @2 - [5] phi() - [6] call main + [4] phi() + [5] call main to:@end -@end: scope:[] from @3 - [7] phi() +@end: scope:[] from @2 + [6] phi() (void()) main() -main: scope:[main] from @3 - [8] phi() - [9] call printf_cls +main: scope:[main] from @2 + [7] phi() + [8] call printf_cls to:main::@1 main::@1: scope:[main] from main - [10] phi() - [11] call printf_str + [9] phi() + [10] call printf_str to:main::@2 main::@2: scope:[main] from main::@1 - [12] phi() - [13] call printf_str + [11] phi() + [12] call printf_str to:main::@3 main::@3: scope:[main] from main::@2 - [14] phi() - [15] call printf_uint + [13] phi() + [14] 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) + [15] phi() + [16] call queens to:main::@return main::@return: scope:[main] from main::@4 - [19] return + [17] 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#0 ← *((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 +(void()) queens() +queens: scope:[queens] from main::@4 + [18] phi() + to:queens::@1 +queens::@1: scope:[queens] from queens queens::@5 queens::@6 queens::@8 queens::@9 + [19] (dword) count#11 ← phi( queens/(dword) 0 queens::@5/(dword) count#13 queens::@6/(dword) count#11 queens::@8/(dword) count#11 queens::@9/(dword) count#11 ) + [19] (byte) queens::row#10 ← phi( queens/(byte) 1 queens::@5/(byte) queens::row#10 queens::@6/(byte) queens::row#1 queens::@8/(byte) queens::row#2 queens::@9/(byte) queens::row#10 ) + to:queens::@2 +queens::@2: scope:[queens] from queens::@1 + [20] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10) + [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 + to:queens::@7 +queens::@7: scope:[queens] from queens::@2 + [22] (byte) legal::row#0 ← (byte) queens::row#10 + [23] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10) + [24] call legal + [25] (byte) legal::return#0 ← (byte) legal::return#4 + to:queens::@9 +queens::@9: scope:[queens] from queens::@7 + [26] (byte~) queens::$2 ← (byte) legal::return#0 + [27] if((byte) 0!=(byte~) queens::$2) goto queens::@4 + to:queens::@1 +queens::@4: scope:[queens] from queens::@9 + [28] if((byte) queens::row#10==(byte) 8) goto queens::@5 + to:queens::@6 +queens::@6: scope:[queens] from queens::@4 + [29] (byte) queens::row#1 ← ++ (byte) queens::row#10 + to:queens::@1 +queens::@5: scope:[queens] from queens::@4 + [30] phi() + [31] call print + to:queens::@1 +queens::@3: scope:[queens] from queens::@2 + [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 + [33] if((byte) queens::row#10==(byte) 1) goto queens::@return + to:queens::@8 +queens::@8: scope:[queens] from queens::@3 + [34] (byte) queens::row#2 ← -- (byte) queens::row#10 + to:queens::@1 +queens::@return: scope:[queens] from queens::@3 + [35] return + to:@return + +(void()) print() +print: scope:[print] from queens::@5 + [36] (dword) count#13 ← ++ (dword) count#11 + [37] call printf_str + to:print::@11 +print::@11: scope:[print] from print + [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 + [39] call printf_ulong + to:print::@12 +print::@12: scope:[print] from print::@11 + [40] phi() + [41] call printf_str + to:print::@1 +print::@1: scope:[print] from print::@12 print::@13 + [42] (byte) print::i#2 ← phi( print::@12/(byte) 1 print::@13/(byte) print::i#1 ) + [43] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 + to:print::@3 +print::@3: scope:[print] from print::@1 print::@7 + [44] (byte) print::i1#2 ← phi( print::@1/(byte) 1 print::@7/(byte) print::i1#1 ) + [45] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 + to:print::@return +print::@return: scope:[print] from print::@3 + [46] return + to:@return +print::@4: scope:[print] from print::@3 + [47] phi() + [48] call printf_str + to:print::@14 +print::@14: scope:[print] from print::@4 + [49] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 + [50] call printf_uchar + to:print::@5 +print::@5: scope:[print] from print::@14 print::@9 + [51] (byte) print::j#2 ← phi( print::@9/(byte) print::j#1 print::@14/(byte) 1 ) + [52] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 + to:print::@7 +print::@7: scope:[print] from print::@5 + [53] (byte) print::i1#1 ← ++ (byte) print::i1#2 + to:print::@3 +print::@6: scope:[print] from print::@5 + [54] 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 + [55] phi() + [56] call printf_str + to:print::@9 +print::@9: scope:[print] from print::@10 print::@8 + [57] (byte) print::j#1 ← ++ (byte) print::j#2 + to:print::@5 +print::@8: scope:[print] from print::@6 + [58] phi() + [59] call printf_str + to:print::@9 +print::@2: scope:[print] from print::@1 + [60] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 + [61] call printf_uchar + to:print::@13 +print::@13: scope:[print] from print::@2 + [62] (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 + [63] (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 + [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [65] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 + [66] call uctoa + to:printf_uchar::@2 +printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1 + [67] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [68] call printf_number_buffer + to:printf_uchar::@return +printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2 + [69] 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 - [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 ) - [26] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uchar::@2/(byte) printf_number_buffer::buffer_sign#1 printf_uint::@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 ) - [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 ) - [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 ) - [26] (byte) printf_number_buffer::format_min_length#2 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_min_length#0 ) - [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 +printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@2 printf_uint::@2 printf_ulong::@2 + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [70] (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 ) + [71] 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 + [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + [73] call strlen + [74] (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 + [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 + [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 + [77] 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 + [78] (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#2 - (signed byte) printf_number_buffer::len#2 - [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 + [79] (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 ) + [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 + [81] 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() + [82] 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 + [83] (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 ) + [84] 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 + [85] 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 + [86] 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 + [87] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 + [88] 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 + [89] 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 + [90] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 + [91] 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 + [92] 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 + [93] 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 + [94] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 + [95] 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 + [96] 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 + [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 + [98] 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 + [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + [100] 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 + [101] 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 + [102] 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 + [103] 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 + [104] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 + [105] 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 + [106] 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 ) + [107] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' ) + [107] (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 + [108] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 ) + [109] 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 + [110] 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 + [111] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 + [112] 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 + [113] (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 + [114] (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 ) + [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 + [116] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr + [117] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x + [118] 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 + [119] (byte) printf_cursor_x ← (byte) 0 + [120] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + [121] call printf_scroll to:printf_char::@return printf_char::@return: scope:[printf_char] from printf_char printf_char::@1 - [78] return + [122] 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 + [123] 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 + [124] phi() + [125] call memcpy to:printf_scroll::@2 printf_scroll::@2: scope:[printf_scroll] from printf_scroll::@1 - [82] phi() - [83] call memset + [126] phi() + [127] 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 + [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 + [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + [130] (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 + [131] 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 + [132] (byte) memset::c#4 ← phi( printf_cls/(byte) ' ' printf_scroll::@2/(byte) ' ' ) + [132] (void*) memset::str#3 ← phi( printf_cls/(void*) 1024 printf_scroll::@2/(void*)(number) $400+(number) $28*(number) $19-(number) $28 ) + [132] (word) memset::num#2 ← phi( printf_cls/(word)(number) $28*(number) $19 printf_scroll::@2/(byte) $28 ) + [133] 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 + [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [135] (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 + [136] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 ) + [137] 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 + [138] 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 + [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 + [140] (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() + [141] 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 + [142] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 ) + [142] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 ) + [143] 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 + [144] 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 + [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) + [146] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 + [147] (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 ) + [148] (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 ) + [149] (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 + [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) + [151] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 + [152] 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 + [153] return to:@return printf_str::@3: scope:[printf_str] from printf_str::@2 - [110] if((byte) printf_str::ch#0==(byte) ' + [154] 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 + [155] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + [156] call printf_char to:printf_str::@1 printf_str::@4: scope:[printf_str] from printf_str::@3 - [113] phi() - [114] call printf_ln + [157] phi() + [158] 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 + [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x + [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 + [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + [162] (byte) printf_cursor_x ← (byte) 0 + [163] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y + [164] call printf_scroll to:printf_ln::@return printf_ln::@return: scope:[printf_ln] from printf_ln - [121] return + [165] return to:@return (byte*()) strupr((byte*) strupr::str) strupr: scope:[strupr] from printf_number_buffer::@11 - [122] phi() + [166] 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 + [167] (byte*) strupr::src#2 ← phi( strupr/(byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 ) + [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 to:strupr::@return strupr::@return: scope:[strupr] from strupr::@1 - [125] return + [169] 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 + [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) + [171] call toupper + [172] (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 + [173] (byte~) strupr::$0 ← (byte) toupper::return#3 + [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 + [175] (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 + [176] 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 + [177] 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' + [178] (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 + [179] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 ) + [180] return to:@return (word()) strlen((byte*) strlen::str) strlen: scope:[strlen] from printf_number_buffer::@6 - [137] phi() + [181] 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 + [182] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 ) + [182] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 ) + [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 to:strlen::@return strlen::@return: scope:[strlen] from strlen::@1 - [140] return + [184] 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 + [185] (word) strlen::len#1 ← ++ (word) strlen::len#2 + [186] (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) place::row#0 ← (byte) queen::r - [183] (byte) place::column#0 ← (byte) queen::column - [184] call place - [185] (byte) place::return#0 ← (byte) place::return#4 - to:queen::@7 -queen::@7: scope:[queen] from queen::@2 - [186] (byte~) queen::$1 ← (byte) place::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] (byte) count ← ++ (byte) count - [200] call printf_str - to:print::@11 -print::@11: scope:[print] from print - [201] (byte) printf_uchar::uvalue#0 ← (byte) count - [202] call printf_uchar - 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#2 ← (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#1 ← (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::@11 print::@14 print::@2 - [226] (byte) printf_uchar::uvalue#3 ← phi( print::@11/(byte) printf_uchar::uvalue#0 print::@14/(byte) printf_uchar::uvalue#2 print::@2/(byte) printf_uchar::uvalue#1 ) - 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#3 - [229] call uctoa - to:printf_uchar::@2 -printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1 - [230] (byte) printf_number_buffer::buffer_sign#1 ← *((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() + [187] 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) 3-(byte) 1) goto uctoa::@2 + [188] (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 ) + [188] (byte) uctoa::started#2 ← phi( uctoa::@4/(byte) uctoa::started#4 uctoa/(byte) 0 ) + [188] (byte) uctoa::value#2 ← phi( uctoa::@4/(byte) uctoa::value#6 uctoa/(byte) uctoa::value#1 ) + [188] (byte) uctoa::digit#2 ← phi( uctoa::@4/(byte) uctoa::digit#1 uctoa/(byte) 0 ) + [189] 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 + [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) + [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 + [192] *((byte*) uctoa::buffer#3) ← (byte) 0 to:uctoa::@return uctoa::@return: scope:[uctoa] from uctoa::@3 - [239] return + [193] return to:@return uctoa::@2: scope:[uctoa] from uctoa::@1 - [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_DECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) - [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 + [194] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) + [195] 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 + [196] 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 + [197] (byte*) uctoa::buffer#14 ← phi( uctoa::@7/(byte*) uctoa::buffer#11 uctoa::@6/(byte*) uctoa::buffer#4 ) + [197] (byte) uctoa::started#4 ← phi( uctoa::@7/(byte) uctoa::started#2 uctoa::@6/(byte) 1 ) + [197] (byte) uctoa::value#6 ← phi( uctoa::@7/(byte) uctoa::value#2 uctoa::@6/(byte) uctoa::value#0 ) + [198] (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 + [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 + [200] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 + [201] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 + [202] call uctoa_append + [203] (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 + [204] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + [205] (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() + [206] 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 + [207] (byte) uctoa_append::digit#2 ← phi( uctoa_append/(byte) 0 uctoa_append::@2/(byte) uctoa_append::digit#1 ) + [207] (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#0 uctoa_append::@2/(byte) uctoa_append::value#1 ) + [208] 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) + [209] *((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 + [210] 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 + [211] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 + [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 to:uctoa_append::@1 -(byte()) place((byte) place::row , (byte) place::column) -place: scope:[place] from queen::@2 - [259] phi() - to:place::@1 -place::@1: scope:[place] from place place::@3 - [260] (byte) place::i#3 ← phi( place/(byte) 1 place::@3/(byte) place::i#2 ) - [261] (byte~) place::$0 ← (byte) place::row#0 - (byte) 1 - [262] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 - to:place::@return -place::@return: scope:[place] from place::@1 place::@2 place::@6 - [263] (byte) place::return#4 ← phi( place::@1/(byte) 1 place::@2/(byte) 0 place::@6/(byte) 0 ) - [264] return +(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 + [213] phi() + to:printf_ulong::@1 +printf_ulong::@1: scope:[printf_ulong] from printf_ulong + [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 + [216] call ultoa + to:printf_ulong::@2 +printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1 + [217] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [218] call printf_number_buffer + to:printf_ulong::@return +printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2 + [219] return to:@return -place::@2: scope:[place] from place::@1 - [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return - to:place::@4 -place::@4: scope:[place] from place::@2 - [266] (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#3) - [267] (byte) diff::b#0 ← (byte) place::column#0 - [268] call diff - [269] (byte) diff::return#0 ← (byte) diff::return#4 - to:place::@5 -place::@5: scope:[place] from place::@4 - [270] (byte~) place::$3 ← (byte) diff::return#0 - [271] (byte) diff::a#1 ← (byte) place::i#3 - [272] (byte) diff::b#1 ← (byte) place::row#0 - [273] call diff - [274] (byte) diff::return#1 ← (byte) diff::return#4 - to:place::@6 -place::@6: scope:[place] from place::@5 - [275] (byte~) place::$4 ← (byte) diff::return#1 - [276] if((byte~) place::$3!=(byte~) place::$4) goto place::@3 - to:place::@return -place::@3: scope:[place] from place::@6 - [277] (byte) place::i#2 ← ++ (byte) place::i#3 - to:place::@1 + +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +ultoa: scope:[ultoa] from printf_ulong::@1 + [220] phi() + to:ultoa::@1 +ultoa::@1: scope:[ultoa] from ultoa ultoa::@4 + [221] (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 ) + [221] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 ) + [221] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 ) + [221] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 ) + [222] 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 + [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 + [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) + [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 + [226] *((byte*) ultoa::buffer#3) ← (byte) 0 + to:ultoa::@return +ultoa::@return: scope:[ultoa] from ultoa::@3 + [227] return + to:@return +ultoa::@2: scope:[ultoa] from ultoa::@1 + [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 + [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) + [230] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 + to:ultoa::@7 +ultoa::@7: scope:[ultoa] from ultoa::@2 + [231] 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 + [232] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 ) + [232] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 ) + [232] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 ) + [233] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 + to:ultoa::@1 +ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7 + [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 + [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 + [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 + [237] call ultoa_append + [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + to:ultoa::@6 +ultoa::@6: scope:[ultoa] from ultoa::@5 + [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + [240] (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 + [241] phi() + to:ultoa_append::@1 +ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2 + [242] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 ) + [242] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 ) + [243] 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 + [244] *((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 + [245] return + to:@return +ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1 + [246] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 + [247] (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 queens::@7 + [248] phi() + to:legal::@1 +legal::@1: scope:[legal] from legal legal::@3 + [249] (byte) legal::i#2 ← phi( legal/(byte) 1 legal::@3/(byte) legal::i#1 ) + [250] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 + [251] 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 + [252] (byte) legal::return#4 ← phi( legal::@1/(byte) 1 legal::@2/(byte) 0 legal::@6/(byte) 0 ) + [253] return + to:@return +legal::@2: scope:[legal] from legal::@1 + [254] 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 + [255] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) + [256] (byte) diff::b#0 ← (byte) legal::column#0 + [257] call diff + [258] (byte) diff::return#0 ← (byte) diff::return#4 + to:legal::@5 +legal::@5: scope:[legal] from legal::@4 + [259] (byte~) legal::$3 ← (byte) diff::return#0 + [260] (byte) diff::a#1 ← (byte) legal::i#2 + [261] (byte) diff::b#1 ← (byte) legal::row#0 + [262] call diff + [263] (byte) diff::return#1 ← (byte) diff::return#4 + to:legal::@6 +legal::@6: scope:[legal] from legal::@5 + [264] (byte~) legal::$4 ← (byte) diff::return#1 + [265] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 + to:legal::@return +legal::@3: scope:[legal] from legal::@6 + [266] (byte) legal::i#1 ← ++ (byte) legal::i#2 + to:legal::@1 (byte()) diff((byte) diff::a , (byte) diff::b) -diff: scope:[diff] from place::@4 place::@5 - [278] (byte) diff::b#2 ← phi( place::@4/(byte) diff::b#0 place::@5/(byte) diff::b#1 ) - [278] (byte) diff::a#2 ← phi( place::@4/(byte) diff::a#0 place::@5/(byte) diff::a#1 ) - [279] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 +diff: scope:[diff] from legal::@4 legal::@5 + [267] (byte) diff::b#2 ← phi( legal::@4/(byte) diff::b#0 legal::@5/(byte) diff::b#1 ) + [267] (byte) diff::a#2 ← phi( legal::@4/(byte) diff::a#0 legal::@5/(byte) diff::a#1 ) + [268] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 to:diff::@2 diff::@2: scope:[diff] from diff - [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 + [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 to:diff::@return diff::@return: scope:[diff] from diff::@1 diff::@2 - [281] (byte) diff::return#4 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 ) - [282] return + [270] (byte) diff::return#4 ← phi( diff::@1/(byte) diff::return#2 diff::@2/(byte) diff::return#3 ) + [271] return to:@return diff::@1: scope:[diff] from diff - [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 + [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 to:diff::@return -null depth in calling loop Loop head: queen::@1 tails: queen::@3 blocks: queen::@3 queen::@4 queen::@6 queen::@7 queen::@5 queen::@2 queen::@1 in scope queen +(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 + [273] phi() + to:printf_uint::@1 +printf_uint::@1: scope:[printf_uint] from printf_uint + [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 + [275] call utoa + to:printf_uint::@2 +printf_uint::@2: scope:[printf_uint] from printf_uint::@1 + [276] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) + [277] call printf_number_buffer + to:printf_uint::@return +printf_uint::@return: scope:[printf_uint] from printf_uint::@2 + [278] return + to:@return + +(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) +utoa: scope:[utoa] from printf_uint::@1 + [279] phi() + to:utoa::@1 +utoa::@1: scope:[utoa] from utoa utoa::@4 + [280] (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 ) + [280] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 ) + [280] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(const word) printf_uint::uvalue#0 ) + [280] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 ) + [281] 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 + [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 + [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) + [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 + [285] *((byte*) utoa::buffer#3) ← (byte) 0 + to:utoa::@return +utoa::@return: scope:[utoa] from utoa::@3 + [286] return + to:@return +utoa::@2: scope:[utoa] from utoa::@1 + [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 + [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) + [289] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 + to:utoa::@7 +utoa::@7: scope:[utoa] from utoa::@2 + [290] 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 + [291] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 ) + [291] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 ) + [291] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 ) + [292] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 + to:utoa::@1 +utoa::@5: scope:[utoa] from utoa::@2 utoa::@7 + [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 + [294] (word) utoa_append::value#0 ← (word) utoa::value#2 + [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 + [296] call utoa_append + [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + to:utoa::@6 +utoa::@6: scope:[utoa] from utoa::@5 + [298] (word) utoa::value#0 ← (word) utoa_append::return#0 + [299] (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 + [300] phi() + to:utoa_append::@1 +utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2 + [301] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 ) + [301] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 ) + [302] 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 + [303] *((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 + [304] return + to:@return +utoa_append::@2: scope:[utoa_append] from utoa_append::@1 + [305] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 + [306] (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 + [307] phi() + [308] call memset + to:printf_cls::@1 +printf_cls::@1: scope:[printf_cls] from printf_cls + [309] (byte*) printf_cursor_ptr ← (byte*) 1024 + [310] (byte) printf_cursor_x ← (byte) 0 + [311] (byte) printf_cursor_y ← (byte) 0 + to:printf_cls::@return +printf_cls::@return: scope:[printf_cls] from printf_cls::@1 + [312] return + to:@return + +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: queens::@1 tails: queens::@9 queens::@8 queens::@6 queens::@5 blocks: queens::@9 queens::@7 queens::@2 queens::@1 queens::@8 queens::@3 queens::@6 queens::@4 queens::@5 in scope print +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str @@ -4608,90 +5560,124 @@ null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print:: null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char -null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_str +null depth in calling loop Loop head: print::@5 tails: print::@9 blocks: print::@9 print::@10 print::@8 print::@6 print::@5 in scope printf_str +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar +null depth in calling loop Loop head: print::@3 tails: print::@7 blocks: print::@7 print::@5 print::@14 print::@9 print::@4 print::@10 print::@8 print::@3 print::@6 in scope printf_uchar +null depth in calling loop Loop head: print::@1 tails: print::@13 blocks: print::@13 print::@2 print::@1 in scope printf_uchar null depth in calling loop Loop head: printf_padding::@1 tails: printf_padding::@3 blocks: printf_padding::@3 printf_padding::@2 printf_padding::@1 in scope printf_char VARIABLE REGISTER WEIGHTS -(byte) count loadstore 0.5833333333333333 +(dword) count +(dword) count#11 1133.8666666666668 +(dword) count#13 750.1071428571429 (byte()) diff((byte) diff::a , (byte) diff::b) (byte) diff::a -(byte) diff::a#0 1.000000000001E12 -(byte) diff::a#1 1.000000000001E12 -(byte) diff::a#2 1.60000000000025E13 +(byte) diff::a#0 1000001.0 +(byte) diff::a#1 1000001.0 +(byte) diff::a#2 1.60000025E7 (byte) diff::b -(byte) diff::b#0 2.000000000002E12 -(byte) diff::b#1 2.000000000002E12 -(byte) diff::b#2 1.60000000000025E13 +(byte) diff::b#0 2000002.0 +(byte) diff::b#1 2000002.0 +(byte) diff::b#2 1.60000025E7 (byte) diff::return -(byte) diff::return#0 2.000000000002E12 -(byte) diff::return#1 2.000000000002E12 -(byte) diff::return#2 2.0000000000002E13 -(byte) diff::return#3 2.0000000000002E13 -(byte) diff::return#4 5.500000000001E12 +(byte) diff::return#0 2000002.0 +(byte) diff::return#1 2000002.0 +(byte) diff::return#2 2.0000002E7 +(byte) diff::return#3 2.0000002E7 +(byte) diff::return#4 5500001.0 +(byte()) legal((byte) legal::row , (byte) legal::column) +(byte~) legal::$0 2000002.0 +(byte~) legal::$3 333333.6666666667 +(byte~) legal::$4 2000002.0 +(byte) legal::column +(byte) legal::column#0 111166.83333333333 +(byte) legal::i +(byte) legal::i#1 2000002.0 +(byte) legal::i#2 400000.4 +(byte) legal::return +(byte) legal::return#0 2002.0 +(byte) legal::return#4 333.6666666666667 +(byte) legal::row +(byte) legal::row#0 105315.94736842104 (void()) main() (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) (void*) memcpy::destination (byte*) memcpy::dst -(byte*) memcpy::dst#1 1.0E43 -(byte*) memcpy::dst#2 1.0E43 +(byte*) memcpy::dst#1 1.0E19 +(byte*) memcpy::dst#2 1.0E19 (word) memcpy::num (void*) memcpy::return (void*) memcpy::source (byte*) memcpy::src -(byte*) memcpy::src#1 2.0E43 -(byte*) memcpy::src#2 1.0E43 +(byte*) memcpy::src#1 2.0E19 +(byte*) memcpy::src#2 1.0E19 (byte*) memcpy::src_end (void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) (byte) memset::c -(byte) memset::c#4 1.25E42 +(byte) memset::c#4 1.25E16 (byte*) memset::dst -(byte*) memset::dst#1 2.0E43 -(byte*) memset::dst#2 1.3333333333333668E43 -(byte*) memset::dst#4 2.0E30 +(byte*) memset::dst#1 2.0E17 +(byte*) memset::dst#2 1.33666666666666656E17 +(byte*) memset::dst#4 2.000000000000002E15 (byte*) memset::end -(byte*) memset::end#0 1.6666666666668335E42 +(byte*) memset::end#0 1.6833333333333332E16 (word) memset::num -(word) memset::num#2 1.0E30 +(word) memset::num#2 1.000000000000001E15 (void*) memset::return (void*) memset::str (void*) memset::str#3 -(byte()) place((byte) place::row , (byte) place::column) -(byte~) place::$0 2.000000000002E12 -(byte~) place::$3 3.333333333336667E11 -(byte~) place::$4 2.000000000002E12 -(byte) place::column -(byte) place::column#0 1.1666666666683334E11 -(byte) place::i -(byte) place::i#2 2.000000000002E12 -(byte) place::i#3 4.0000000000039996E11 -(byte) place::return -(byte) place::return#0 2.00000000002E11 -(byte) place::return#4 3.3333333333666668E10 -(byte) place::row -(byte) place::row#0 1.1052631578963158E11 (void()) print() (byte) print::i -(byte) print::i#1 2.000000000002E12 -(byte) print::i#2 1.000000000001E12 +(byte) print::i#1 2000002.0 +(byte) print::i#2 1000001.0 (byte) print::i1 -(byte) print::i1#1 2.000000000002E12 -(byte) print::i1#2 1.0000000000003572E12 +(byte) print::i1#1 2000002.0 +(byte) print::i1#2 1000000.357142857 (byte) print::j -(byte) print::j#1 2.0000000000002E13 -(byte) print::j#2 5.714285714286286E12 +(byte) print::j#1 2.0000002E7 +(byte) print::j#2 5714286.285714285 (struct printf_buffer_number) printf_buffer loadstore = {} (byte) printf_buffer_number::sign (void()) printf_char((byte) printf_char::ch) (byte) printf_char::ch -(byte) printf_char::ch#0 2.0E27 -(byte) printf_char::ch#1 2.0E26 -(byte) printf_char::ch#2 2.00000000000002E14 -(byte) printf_char::ch#3 1.11000000000001E28 +(byte) printf_char::ch#0 2.000000000002E12 +(byte) printf_char::ch#1 2.0000000002E10 +(byte) printf_char::ch#2 2.00000002E8 +(byte) printf_char::ch#3 1.1010100000004E13 (void()) printf_cls() -(byte*) printf_cursor_ptr loadstore 1.5364238410596024E27 -(byte) printf_cursor_x loadstore 2.9787234042553192E26 -(byte) printf_cursor_y loadstore 2.1184210526315788E27 +(byte*) printf_cursor_ptr loadstore 1.5045751633994116E12 +(byte) printf_cursor_x loadstore 2.811188811196433E11 +(byte) printf_cursor_y loadstore 2.0792207792214937E12 (byte) printf_format_number::justify_left (byte) printf_format_number::min_length (byte) printf_format_number::radix @@ -4701,56 +5687,57 @@ VARIABLE REGISTER WEIGHTS (byte) printf_format_string::justify_left (byte) printf_format_string::min_length (void()) printf_ln() -(byte*~) printf_ln::$0 2.0E27 -(byte*~) printf_ln::$1 2.0E27 +(byte*~) printf_ln::$0 2.00000000002E11 +(byte*~) printf_ln::$1 2.00000000002E11 (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 1.00000000000001E14 +(word~) printf_number_buffer::$19 1.00000001E8 (struct printf_buffer_number) printf_number_buffer::buffer (byte*) printf_number_buffer::buffer_digits -(byte*) printf_number_buffer::buffer_digits#10 1.0344827586207E13 +(byte*) printf_number_buffer::buffer_digits#10 1.0344827689655172E7 (byte) printf_number_buffer::buffer_sign -(byte) printf_number_buffer::buffer_sign#0 202.0 -(byte) printf_number_buffer::buffer_sign#1 2.0000000000002E13 -(byte) printf_number_buffer::buffer_sign#10 1.550000000000525E13 +(byte) printf_number_buffer::buffer_sign#0 200002.0 +(byte) printf_number_buffer::buffer_sign#1 202.0 +(byte) printf_number_buffer::buffer_sign#10 1.55050053E7 +(byte) printf_number_buffer::buffer_sign#2 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 6.451612903225871E12 +(byte) printf_number_buffer::format_justify_left#10 6451612.9677419355 (byte) printf_number_buffer::format_min_length -(byte) printf_number_buffer::format_min_length#2 1.00000000000001E13 +(byte) printf_number_buffer::format_min_length#3 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 3.846153846153885E12 +(byte) printf_number_buffer::format_upper_case#10 3846153.8846153845 (byte) printf_number_buffer::format_zero_padding -(byte) printf_number_buffer::format_zero_padding#10 9.375000000000094E12 +(byte) printf_number_buffer::format_zero_padding#10 9375000.09375 (signed byte) printf_number_buffer::len -(signed byte) printf_number_buffer::len#0 1.500000000000015E14 -(signed byte) printf_number_buffer::len#1 2.00000000000002E14 -(signed byte) printf_number_buffer::len#2 3.00000000000003E14 +(signed byte) printf_number_buffer::len#0 1.500000015E8 +(signed byte) printf_number_buffer::len#1 2.00000002E8 +(signed byte) printf_number_buffer::len#2 3.00000003E8 (signed byte) printf_number_buffer::padding -(signed byte) printf_number_buffer::padding#1 1.00000000000001E14 -(signed byte) printf_number_buffer::padding#10 1.904761904761924E13 +(signed byte) printf_number_buffer::padding#1 1.00000001E8 +(signed byte) printf_number_buffer::padding#10 1.904761923809524E7 (void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length) (byte) printf_padding::i -(byte) printf_padding::i#1 2.0E27 -(byte) printf_padding::i#2 7.500000000000001E26 +(byte) printf_padding::i#1 2.000000000002E12 +(byte) printf_padding::i#2 7.5000000000075E11 (byte) printf_padding::length -(byte) printf_padding::length#0 2.00000000000002E14 -(byte) printf_padding::length#1 2.00000000000002E14 -(byte) printf_padding::length#2 2.00000000000002E14 -(byte) printf_padding::length#4 1.6666666666671665E26 +(byte) printf_padding::length#0 2.00000002E8 +(byte) printf_padding::length#1 2.00000002E8 +(byte) printf_padding::length#2 2.00000002E8 +(byte) printf_padding::length#4 1.6671666666733334E11 (byte) printf_padding::pad -(byte) printf_padding::pad#5 1.6666666666666666E26 +(byte) printf_padding::pad#5 1.6666666666683334E11 (void()) printf_scroll() -(byte*~) printf_scroll::$4 2.0E29 +(byte*~) printf_scroll::$4 2.00000000000002E14 (void()) printf_str((byte*) printf_str::str) (byte) printf_str::ch -(byte) printf_str::ch#0 1.0E26 +(byte) printf_str::ch#0 1.0000000001E10 (byte*) printf_str::str -(byte*) printf_str::str#0 4.285714285714285E25 -(byte*) printf_str::str#1 2.00000000000002E14 -(byte*) printf_str::str#10 2.000000000005E26 -(byte*) printf_str::str#11 1.100000000000002E15 +(byte*) printf_str::str#0 4.2857142861428566E9 +(byte*) printf_str::str#1 2.00000002E8 +(byte*) printf_str::str#10 2.05000000025E10 +(byte*) printf_str::str#11 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) (struct printf_format_number) printf_uchar::format (byte) printf_uchar::format_justify_left @@ -4760,10 +5747,9 @@ VARIABLE REGISTER WEIGHTS (byte) printf_uchar::format_upper_case (byte) printf_uchar::format_zero_padding (byte) printf_uchar::uvalue -(byte) printf_uchar::uvalue#0 22.0 -(byte) printf_uchar::uvalue#1 2.000000000002E12 -(byte) printf_uchar::uvalue#2 2.000000000002E12 -(byte) printf_uchar::uvalue#3 6.000000000007E12 +(byte) printf_uchar::uvalue#0 2000002.0 +(byte) printf_uchar::uvalue#1 2000002.0 +(byte) printf_uchar::uvalue#2 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) (struct printf_format_number) printf_uint::format (byte) printf_uint::format_justify_left @@ -4773,74 +5759,121 @@ VARIABLE REGISTER WEIGHTS (byte) printf_uint::format_upper_case (byte) printf_uint::format_zero_padding (word) printf_uint::uvalue -__stackcall (void()) queen((byte) queen::row) -(byte~) queen::$1 2.00000000002E11 -(byte~) queen::$4 2.00000000002E11 -(byte) queen::column loadstore 2.9411764706823532E10 -(byte) queen::r loadstore 2.1052631579736843E10 -(byte) queen::row -(byte) queen::row#0 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) +(struct printf_format_number) printf_ulong::format +(byte) printf_ulong::format_justify_left +(byte) printf_ulong::format_min_length +(byte) printf_ulong::format_radix +(byte) printf_ulong::format_sign_always +(byte) printf_ulong::format_upper_case +(byte) printf_ulong::format_zero_padding +(dword) printf_ulong::uvalue +(dword) printf_ulong::uvalue#0 36667.33333333333 +(void()) queens() +(byte~) queens::$2 2002.0 +(byte) queens::row +(byte) queens::row#1 2002.0 +(byte) queens::row#10 1144.0 +(byte) queens::row#2 2002.0 (word()) strlen((byte*) strlen::str) (word) strlen::len -(word) strlen::len#1 1.0E27 -(word) strlen::len#2 5.00000000000025E26 +(word) strlen::len#1 1.000000000001E12 +(word) strlen::len#2 5.0002500000075E11 (word) strlen::return -(word) strlen::return#2 2.00000000000002E14 +(word) strlen::return#2 2.00000002E8 (byte*) strlen::str -(byte*) strlen::str#0 2.0E27 -(byte*) strlen::str#1 5.50000000000001E14 -(byte*) strlen::str#2 1.0000000000003332E27 +(byte*) strlen::str#0 2.000000000002E12 +(byte*) strlen::str#1 5.50000001E8 +(byte*) strlen::str#2 1.0003333333346667E12 (byte*()) strupr((byte*) strupr::str) -(byte~) strupr::$0 2.0E27 +(byte~) strupr::$0 2.000000000002E12 (byte*) strupr::return (byte*) strupr::src -(byte*) strupr::src#1 2.0E27 -(byte*) strupr::src#2 7.142857142858572E26 +(byte*) strupr::src#1 2.000000000002E12 +(byte*) strupr::src#2 7.144285714294285E11 (byte*) strupr::str -(byte*) strupr::str#0 5.50000000000001E14 +(byte*) strupr::str#0 5.50000001E8 (byte()) toupper((byte) toupper::ch) (byte) toupper::ch -(byte) toupper::ch#0 1.6999999999999998E28 +(byte) toupper::ch#0 1.7000000000001998E13 (byte) toupper::return -(byte) toupper::return#0 2.0E28 -(byte) toupper::return#2 1.0333333333333333E28 -(byte) toupper::return#3 2.0E27 +(byte) toupper::return#0 2.0000000000002E13 +(byte) toupper::return#2 1.0333333333334666E13 +(byte) toupper::return#3 2.000000000002E12 (void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix) (byte*) uctoa::buffer -(byte*) uctoa::buffer#11 3.3333333333350004E25 -(byte*) uctoa::buffer#14 1.5000000000000002E26 -(byte*) uctoa::buffer#3 2.00000000000002E14 -(byte*) uctoa::buffer#4 2.0E26 +(byte*) uctoa::buffer#11 3.3350000000500004E10 +(byte*) uctoa::buffer#14 1.500000000015E11 +(byte*) uctoa::buffer#3 2.00000002E8 +(byte*) uctoa::buffer#4 2.00000000002E11 (byte) uctoa::digit -(byte) uctoa::digit#1 2.0E26 -(byte) uctoa::digit#2 3.076923076923077E25 +(byte) uctoa::digit#1 2.00000000002E11 +(byte) uctoa::digit#2 3.076923076953846E10 (byte) uctoa::digit_value -(byte) uctoa::digit_value#0 6.000000000000001E25 +(byte) uctoa::digit_value#0 6.0000000000600006E10 (byte*) uctoa::digit_values (byte) uctoa::max_digits (byte) uctoa::radix (byte) uctoa::started -(byte) uctoa::started#2 6.000000000000001E25 -(byte) uctoa::started#4 1.0E26 +(byte) uctoa::started#2 6.0000000000600006E10 +(byte) uctoa::started#4 1.00000000001E11 (byte) uctoa::value -(byte) uctoa::value#0 1.0E26 -(byte) uctoa::value#1 5.5000000000001E13 -(byte) uctoa::value#2 6.666666666670001E25 -(byte) uctoa::value#6 1.5000000000000002E26 +(byte) uctoa::value#0 1.00000000001E11 +(byte) uctoa::value#1 5.5000001E7 +(byte) uctoa::value#2 6.670000000100001E10 +(byte) uctoa::value#6 1.500000000015E11 (byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub) (byte*) uctoa_append::buffer -(byte*) uctoa_append::buffer#0 1.3750000000000001E26 +(byte*) uctoa_append::buffer#0 1.3750000000025E11 (byte) uctoa_append::digit -(byte) uctoa_append::digit#1 1.0E40 -(byte) uctoa_append::digit#2 1.00000000000005E40 +(byte) uctoa_append::digit#1 1.0E16 +(byte) uctoa_append::digit#2 1.00005E16 (byte) uctoa_append::return -(byte) uctoa_append::return#0 2.0E26 +(byte) uctoa_append::return#0 2.00000000002E11 (byte) uctoa_append::sub -(byte) uctoa_append::sub#0 3.33333333333335E39 +(byte) uctoa_append::sub#0 3.33335E15 (byte) uctoa_append::value -(byte) uctoa_append::value#0 3.666666666666667E26 -(byte) uctoa_append::value#1 2.0E40 -(byte) uctoa_append::value#2 5.0000000000001833E39 +(byte) uctoa_append::value#0 3.666666666673334E11 +(byte) uctoa_append::value#1 2.0E16 +(byte) uctoa_append::value#2 5.000183333333334E15 +(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix) +(byte~) ultoa::$10 2.00000002E8 +(byte~) ultoa::$11 2000002.0 +(byte*) ultoa::buffer +(byte*) ultoa::buffer#11 2.871428614285714E7 +(byte*) ultoa::buffer#14 1.500000015E8 +(byte*) ultoa::buffer#3 2000002.0 +(byte*) ultoa::buffer#4 2.00000002E8 +(byte) ultoa::digit +(byte) ultoa::digit#1 2.00000002E8 +(byte) ultoa::digit#2 2.857142885714286E7 +(dword) ultoa::digit_value +(dword) ultoa::digit_value#0 6.0000000599999994E7 +(dword*) ultoa::digit_values +(byte) ultoa::max_digits +(byte) ultoa::radix +(byte) ultoa::started +(byte) ultoa::started#2 5.00000005E7 +(byte) ultoa::started#4 1.00000001E8 +(dword) ultoa::value +(dword) ultoa::value#0 1.00000001E8 +(dword) ultoa::value#1 550001.0 +(dword) ultoa::value#2 5.7285715E7 +(dword) ultoa::value#6 1.500000015E8 +(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub) +(byte*) ultoa_append::buffer +(byte*) ultoa_append::buffer#0 1.3750000025E8 +(byte) ultoa_append::digit +(byte) ultoa_append::digit#1 1.000000000001E12 +(byte) ultoa_append::digit#2 1.0005000000015E12 +(dword) ultoa_append::return +(dword) ultoa_append::return#0 2.00000002E8 +(dword) ultoa_append::sub +(dword) ultoa_append::sub#0 3.333500000005E11 +(dword) ultoa_append::value +(dword) ultoa_append::value#0 3.666666673333334E8 +(dword) ultoa_append::value#1 2.000000000002E12 +(dword) ultoa_append::value#2 5.0018333333416675E11 (void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix) (byte~) utoa::$10 20002.0 (byte~) utoa::$11 2002.0 @@ -4880,11 +5913,17 @@ __stackcall (void()) queen((byte) queen::row) (word) utoa_append::value#2 5018334.166666666 Initial phi equivalence classes -[ printf_number_buffer::format_min_length#2 ] +[ queens::row#10 queens::row#1 queens::row#2 ] +[ count#11 count#13 ] +[ print::i#2 print::i#1 ] +[ print::i1#2 print::i1#1 ] +[ print::j#2 print::j#1 ] +[ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +[ printf_number_buffer::format_min_length#3 ] [ printf_number_buffer::format_justify_left#10 ] [ printf_number_buffer::format_zero_padding#10 ] [ printf_number_buffer::buffer_digits#10 ] -[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] [ printf_number_buffer::format_upper_case#10 ] [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] @@ -4903,31 +5942,37 @@ Initial phi equivalence classes [ toupper::return#2 toupper::return#0 toupper::ch#0 ] [ strlen::str#2 strlen::str#1 strlen::str#0 ] [ strlen::len#2 strlen::len#1 ] -[ utoa::digit#2 utoa::digit#1 ] -[ utoa::value#2 utoa::value#6 utoa::value#0 ] -[ utoa::started#2 utoa::started#4 ] -[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] -[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] -[ utoa_append::digit#2 utoa_append::digit#1 ] -[ print::i#2 print::i#1 ] -[ print::i1#2 print::i1#1 ] -[ print::j#2 print::j#1 ] -[ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] [ uctoa::digit#2 uctoa::digit#1 ] [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] [ uctoa::started#2 uctoa::started#4 ] [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] [ uctoa_append::digit#2 uctoa_append::digit#1 ] -[ place::i#3 place::i#2 ] -[ place::return#4 ] +[ ultoa::digit#2 ultoa::digit#1 ] +[ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +[ ultoa::started#2 ultoa::started#4 ] +[ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +[ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +[ ultoa_append::digit#2 ultoa_append::digit#1 ] +[ legal::i#2 legal::i#1 ] +[ legal::return#4 ] [ diff::a#2 diff::a#0 diff::a#1 ] [ diff::b#2 diff::b#0 diff::b#1 ] [ diff::return#4 diff::return#2 diff::return#3 ] +[ utoa::digit#2 utoa::digit#1 ] +[ utoa::value#2 utoa::value#6 utoa::value#0 ] +[ utoa::started#2 utoa::started#4 ] +[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +[ utoa_append::digit#2 utoa_append::digit#1 ] Added variable printf_cursor_x to live range equivalence class [ printf_cursor_x ] Added variable printf_cursor_y to live range equivalence class [ printf_cursor_y ] Added variable printf_cursor_ptr to live range equivalence class [ printf_cursor_ptr ] -Added variable count to live range equivalence class [ count ] +Added variable legal::row#0 to live range equivalence class [ legal::row#0 ] +Added variable legal::column#0 to live range equivalence class [ legal::column#0 ] +Added variable legal::return#0 to live range equivalence class [ legal::return#0 ] +Added variable queens::$2 to live range equivalence class [ queens::$2 ] +Added variable printf_ulong::uvalue#0 to live range equivalence class [ printf_ulong::uvalue#0 ] Added variable strlen::return#2 to live range equivalence class [ strlen::return#2 ] Added variable printf_number_buffer::$19 to live range equivalence class [ printf_number_buffer::$19 ] Added variable printf_scroll::$4 to live range equivalence class [ printf_scroll::$4 ] @@ -4937,6 +5982,23 @@ Added variable printf_ln::$0 to live range equivalence class [ printf_ln::$0 ] Added variable printf_ln::$1 to live range equivalence class [ printf_ln::$1 ] Added variable toupper::return#3 to live range equivalence class [ toupper::return#3 ] Added variable strupr::$0 to live range equivalence class [ strupr::$0 ] +Added variable uctoa::buffer#3 to live range equivalence class [ uctoa::buffer#3 ] +Added variable uctoa::digit_value#0 to live range equivalence class [ uctoa::digit_value#0 ] +Added variable uctoa_append::buffer#0 to live range equivalence class [ uctoa_append::buffer#0 ] +Added variable uctoa_append::sub#0 to live range equivalence class [ uctoa_append::sub#0 ] +Added variable uctoa_append::return#0 to live range equivalence class [ uctoa_append::return#0 ] +Added variable ultoa::$11 to live range equivalence class [ ultoa::$11 ] +Added variable ultoa::buffer#3 to live range equivalence class [ ultoa::buffer#3 ] +Added variable ultoa::$10 to live range equivalence class [ ultoa::$10 ] +Added variable ultoa::digit_value#0 to live range equivalence class [ ultoa::digit_value#0 ] +Added variable ultoa_append::buffer#0 to live range equivalence class [ ultoa_append::buffer#0 ] +Added variable ultoa_append::sub#0 to live range equivalence class [ ultoa_append::sub#0 ] +Added variable ultoa_append::return#0 to live range equivalence class [ ultoa_append::return#0 ] +Added variable legal::$0 to live range equivalence class [ legal::$0 ] +Added variable diff::return#0 to live range equivalence class [ diff::return#0 ] +Added variable legal::$3 to live range equivalence class [ legal::$3 ] +Added variable diff::return#1 to live range equivalence class [ diff::return#1 ] +Added variable legal::$4 to live range equivalence class [ legal::$4 ] Added variable utoa::$11 to live range equivalence class [ utoa::$11 ] Added variable utoa::buffer#3 to live range equivalence class [ utoa::buffer#3 ] Added variable utoa::$10 to live range equivalence class [ utoa::$10 ] @@ -4944,31 +6006,19 @@ Added variable utoa::digit_value#0 to live range equivalence class [ utoa::digit Added variable utoa_append::buffer#0 to live range equivalence class [ utoa_append::buffer#0 ] Added variable utoa_append::sub#0 to live range equivalence class [ utoa_append::sub#0 ] Added variable utoa_append::return#0 to live range equivalence class [ utoa_append::return#0 ] -Added variable queen::row#0 to live range equivalence class [ queen::row#0 ] -Added variable queen::r to live range equivalence class [ queen::r ] -Added variable queen::column to live range equivalence class [ queen::column ] -Added variable place::row#0 to live range equivalence class [ place::row#0 ] -Added variable place::column#0 to live range equivalence class [ place::column#0 ] -Added variable place::return#0 to live range equivalence class [ place::return#0 ] -Added variable queen::$1 to live range equivalence class [ queen::$1 ] -Added variable queen::$4 to live range equivalence class [ queen::$4 ] -Added variable uctoa::buffer#3 to live range equivalence class [ uctoa::buffer#3 ] -Added variable uctoa::digit_value#0 to live range equivalence class [ uctoa::digit_value#0 ] -Added variable uctoa_append::buffer#0 to live range equivalence class [ uctoa_append::buffer#0 ] -Added variable uctoa_append::sub#0 to live range equivalence class [ uctoa_append::sub#0 ] -Added variable uctoa_append::return#0 to live range equivalence class [ uctoa_append::return#0 ] -Added variable place::$0 to live range equivalence class [ place::$0 ] -Added variable diff::return#0 to live range equivalence class [ diff::return#0 ] -Added variable place::$3 to live range equivalence class [ place::$3 ] -Added variable diff::return#1 to live range equivalence class [ diff::return#1 ] -Added variable place::$4 to live range equivalence class [ place::$4 ] Added variable printf_buffer to live range equivalence class [ printf_buffer ] Complete equivalence classes -[ printf_number_buffer::format_min_length#2 ] +[ queens::row#10 queens::row#1 queens::row#2 ] +[ count#11 count#13 ] +[ print::i#2 print::i#1 ] +[ print::i1#2 print::i1#1 ] +[ print::j#2 print::j#1 ] +[ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +[ printf_number_buffer::format_min_length#3 ] [ printf_number_buffer::format_justify_left#10 ] [ printf_number_buffer::format_zero_padding#10 ] [ printf_number_buffer::buffer_digits#10 ] -[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +[ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] [ printf_number_buffer::format_upper_case#10 ] [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] @@ -4987,31 +6037,37 @@ Complete equivalence classes [ toupper::return#2 toupper::return#0 toupper::ch#0 ] [ strlen::str#2 strlen::str#1 strlen::str#0 ] [ strlen::len#2 strlen::len#1 ] -[ utoa::digit#2 utoa::digit#1 ] -[ utoa::value#2 utoa::value#6 utoa::value#0 ] -[ utoa::started#2 utoa::started#4 ] -[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] -[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] -[ utoa_append::digit#2 utoa_append::digit#1 ] -[ print::i#2 print::i#1 ] -[ print::i1#2 print::i1#1 ] -[ print::j#2 print::j#1 ] -[ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] [ uctoa::digit#2 uctoa::digit#1 ] [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] [ uctoa::started#2 uctoa::started#4 ] [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] [ uctoa_append::digit#2 uctoa_append::digit#1 ] -[ place::i#3 place::i#2 ] -[ place::return#4 ] +[ ultoa::digit#2 ultoa::digit#1 ] +[ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +[ ultoa::started#2 ultoa::started#4 ] +[ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +[ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +[ ultoa_append::digit#2 ultoa_append::digit#1 ] +[ legal::i#2 legal::i#1 ] +[ legal::return#4 ] [ diff::a#2 diff::a#0 diff::a#1 ] [ diff::b#2 diff::b#0 diff::b#1 ] [ diff::return#4 diff::return#2 diff::return#3 ] +[ utoa::digit#2 utoa::digit#1 ] +[ utoa::value#2 utoa::value#6 utoa::value#0 ] +[ utoa::started#2 utoa::started#4 ] +[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +[ utoa_append::digit#2 utoa_append::digit#1 ] [ printf_cursor_x ] [ printf_cursor_y ] [ printf_cursor_ptr ] -[ count ] +[ legal::row#0 ] +[ legal::column#0 ] +[ legal::return#0 ] +[ queens::$2 ] +[ printf_ulong::uvalue#0 ] [ strlen::return#2 ] [ printf_number_buffer::$19 ] [ printf_scroll::$4 ] @@ -5021,6 +6077,23 @@ Complete equivalence classes [ printf_ln::$1 ] [ toupper::return#3 ] [ strupr::$0 ] +[ uctoa::buffer#3 ] +[ uctoa::digit_value#0 ] +[ uctoa_append::buffer#0 ] +[ uctoa_append::sub#0 ] +[ uctoa_append::return#0 ] +[ ultoa::$11 ] +[ ultoa::buffer#3 ] +[ ultoa::$10 ] +[ ultoa::digit_value#0 ] +[ ultoa_append::buffer#0 ] +[ ultoa_append::sub#0 ] +[ ultoa_append::return#0 ] +[ legal::$0 ] +[ diff::return#0 ] +[ legal::$3 ] +[ diff::return#1 ] +[ legal::$4 ] [ utoa::$11 ] [ utoa::buffer#3 ] [ utoa::$10 ] @@ -5028,107 +6101,100 @@ Complete equivalence classes [ utoa_append::buffer#0 ] [ utoa_append::sub#0 ] [ utoa_append::return#0 ] -[ queen::row#0 ] -[ queen::r ] -[ queen::column ] -[ place::row#0 ] -[ place::column#0 ] -[ place::return#0 ] -[ queen::$1 ] -[ queen::$4 ] -[ uctoa::buffer#3 ] -[ uctoa::digit_value#0 ] -[ uctoa_append::buffer#0 ] -[ uctoa_append::sub#0 ] -[ uctoa_append::return#0 ] -[ place::$0 ] -[ diff::return#0 ] -[ place::$3 ] -[ diff::return#1 ] -[ place::$4 ] [ printf_buffer ] -Allocated zp[1]:2 [ printf_number_buffer::format_min_length#2 ] -Allocated zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] -Allocated zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] -Allocated zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] -Allocated zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] -Allocated zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] -Allocated zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] -Allocated zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] -Allocated zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] -Allocated zp[1]:12 [ printf_padding::pad#5 ] -Allocated zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] -Allocated zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] -Allocated zp[2]:15 [ memset::num#2 ] -Allocated zp[2]:17 [ memset::str#3 ] -Allocated zp[1]:19 [ memset::c#4 ] -Allocated zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] -Allocated zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] -Allocated zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] -Allocated zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] -Allocated zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] -Allocated zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] -Allocated zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] -Allocated zp[2]:33 [ strlen::len#2 strlen::len#1 ] -Allocated zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] -Allocated zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] -Allocated zp[1]:38 [ utoa::started#2 utoa::started#4 ] -Allocated zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] -Allocated zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] -Allocated zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] -Allocated zp[1]:44 [ print::i#2 print::i#1 ] -Allocated zp[1]:45 [ print::i1#2 print::i1#1 ] -Allocated zp[1]:46 [ print::j#2 print::j#1 ] -Allocated zp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] -Allocated zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] -Allocated zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] -Allocated zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] -Allocated zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] -Allocated zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] -Allocated zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] -Allocated zp[1]:55 [ place::i#3 place::i#2 ] -Allocated zp[1]:56 [ place::return#4 ] -Allocated zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 ] -Allocated zp[1]:58 [ diff::b#2 diff::b#0 diff::b#1 ] -Allocated zp[1]:59 [ diff::return#4 diff::return#2 diff::return#3 ] -Allocated zp[1]:60 [ printf_cursor_x ] -Allocated zp[1]:61 [ printf_cursor_y ] -Allocated zp[2]:62 [ printf_cursor_ptr ] -Allocated zp[1]:64 [ count ] -Allocated zp[2]:65 [ strlen::return#2 ] -Allocated zp[2]:67 [ printf_number_buffer::$19 ] -Allocated zp[2]:69 [ printf_scroll::$4 ] -Allocated zp[2]:71 [ memset::end#0 ] -Allocated zp[1]:73 [ printf_str::ch#0 ] -Allocated zp[2]:74 [ printf_ln::$0 ] -Allocated zp[2]:76 [ printf_ln::$1 ] -Allocated zp[1]:78 [ toupper::return#3 ] -Allocated zp[1]:79 [ strupr::$0 ] -Allocated zp[1]:80 [ utoa::$11 ] -Allocated zp[2]:81 [ utoa::buffer#3 ] -Allocated zp[1]:83 [ utoa::$10 ] -Allocated zp[2]:84 [ utoa::digit_value#0 ] -Allocated zp[2]:86 [ utoa_append::buffer#0 ] -Allocated zp[2]:88 [ utoa_append::sub#0 ] -Allocated zp[2]:90 [ utoa_append::return#0 ] -Allocated zp[1]:92 [ queen::row#0 ] -Allocated zp[1]:93 [ queen::r ] -Allocated zp[1]:94 [ queen::column ] -Allocated zp[1]:95 [ place::row#0 ] -Allocated zp[1]:96 [ place::column#0 ] -Allocated zp[1]:97 [ place::return#0 ] -Allocated zp[1]:98 [ queen::$1 ] -Allocated zp[1]:99 [ queen::$4 ] -Allocated zp[2]:100 [ uctoa::buffer#3 ] -Allocated zp[1]:102 [ uctoa::digit_value#0 ] -Allocated zp[2]:103 [ uctoa_append::buffer#0 ] -Allocated zp[1]:105 [ uctoa_append::sub#0 ] -Allocated zp[1]:106 [ uctoa_append::return#0 ] -Allocated zp[1]:107 [ place::$0 ] -Allocated zp[1]:108 [ diff::return#0 ] -Allocated zp[1]:109 [ place::$3 ] -Allocated zp[1]:110 [ diff::return#1 ] -Allocated zp[1]:111 [ place::$4 ] +Allocated zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] +Allocated zp[4]:3 [ count#11 count#13 ] +Allocated zp[1]:7 [ print::i#2 print::i#1 ] +Allocated zp[1]:8 [ print::i1#2 print::i1#1 ] +Allocated zp[1]:9 [ print::j#2 print::j#1 ] +Allocated zp[1]:10 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Allocated zp[1]:11 [ printf_number_buffer::format_min_length#3 ] +Allocated zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] +Allocated zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] +Allocated zp[2]:14 [ printf_number_buffer::buffer_digits#10 ] +Allocated zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Allocated zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Allocated zp[1]:18 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] +Allocated zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Allocated zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Allocated zp[1]:21 [ printf_padding::pad#5 ] +Allocated zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] +Allocated zp[1]:23 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Allocated zp[2]:24 [ memset::num#2 ] +Allocated zp[2]:26 [ memset::str#3 ] +Allocated zp[1]:28 [ memset::c#4 ] +Allocated zp[2]:29 [ memset::dst#2 memset::dst#4 memset::dst#1 ] +Allocated zp[2]:31 [ memcpy::src#2 memcpy::src#1 ] +Allocated zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 ] +Allocated zp[2]:35 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] +Allocated zp[2]:37 [ strupr::src#2 strupr::str#0 strupr::src#1 ] +Allocated zp[1]:39 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] +Allocated zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 ] +Allocated zp[2]:42 [ strlen::len#2 strlen::len#1 ] +Allocated zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] +Allocated zp[1]:45 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +Allocated zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] +Allocated zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] +Allocated zp[1]:49 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Allocated zp[1]:50 [ uctoa_append::digit#2 uctoa_append::digit#1 ] +Allocated zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] +Allocated zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] +Allocated zp[1]:56 [ ultoa::started#2 ultoa::started#4 ] +Allocated zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] +Allocated zp[4]:59 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] +Allocated zp[1]:63 [ ultoa_append::digit#2 ultoa_append::digit#1 ] +Allocated zp[1]:64 [ legal::i#2 legal::i#1 ] +Allocated zp[1]:65 [ legal::return#4 ] +Allocated zp[1]:66 [ diff::a#2 diff::a#0 diff::a#1 ] +Allocated zp[1]:67 [ diff::b#2 diff::b#0 diff::b#1 ] +Allocated zp[1]:68 [ diff::return#4 diff::return#2 diff::return#3 ] +Allocated zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] +Allocated zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 ] +Allocated zp[1]:72 [ utoa::started#2 utoa::started#4 ] +Allocated zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] +Allocated zp[2]:75 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] +Allocated zp[1]:77 [ utoa_append::digit#2 utoa_append::digit#1 ] +Allocated zp[1]:78 [ printf_cursor_x ] +Allocated zp[1]:79 [ printf_cursor_y ] +Allocated zp[2]:80 [ printf_cursor_ptr ] +Allocated zp[1]:82 [ legal::row#0 ] +Allocated zp[1]:83 [ legal::column#0 ] +Allocated zp[1]:84 [ legal::return#0 ] +Allocated zp[1]:85 [ queens::$2 ] +Allocated zp[4]:86 [ printf_ulong::uvalue#0 ] +Allocated zp[2]:90 [ strlen::return#2 ] +Allocated zp[2]:92 [ printf_number_buffer::$19 ] +Allocated zp[2]:94 [ printf_scroll::$4 ] +Allocated zp[2]:96 [ memset::end#0 ] +Allocated zp[1]:98 [ printf_str::ch#0 ] +Allocated zp[2]:99 [ printf_ln::$0 ] +Allocated zp[2]:101 [ printf_ln::$1 ] +Allocated zp[1]:103 [ toupper::return#3 ] +Allocated zp[1]:104 [ strupr::$0 ] +Allocated zp[2]:105 [ uctoa::buffer#3 ] +Allocated zp[1]:107 [ uctoa::digit_value#0 ] +Allocated zp[2]:108 [ uctoa_append::buffer#0 ] +Allocated zp[1]:110 [ uctoa_append::sub#0 ] +Allocated zp[1]:111 [ uctoa_append::return#0 ] +Allocated zp[1]:112 [ ultoa::$11 ] +Allocated zp[2]:113 [ ultoa::buffer#3 ] +Allocated zp[1]:115 [ ultoa::$10 ] +Allocated zp[4]:116 [ ultoa::digit_value#0 ] +Allocated zp[2]:120 [ ultoa_append::buffer#0 ] +Allocated zp[4]:122 [ ultoa_append::sub#0 ] +Allocated zp[4]:126 [ ultoa_append::return#0 ] +Allocated zp[1]:130 [ legal::$0 ] +Allocated zp[1]:131 [ diff::return#0 ] +Allocated zp[1]:132 [ legal::$3 ] +Allocated zp[1]:133 [ diff::return#1 ] +Allocated zp[1]:134 [ legal::$4 ] +Allocated zp[1]:135 [ utoa::$11 ] +Allocated zp[2]:136 [ utoa::buffer#3 ] +Allocated zp[1]:138 [ utoa::$10 ] +Allocated zp[2]:139 [ utoa::digit_value#0 ] +Allocated zp[2]:141 [ utoa_append::buffer#0 ] +Allocated zp[2]:143 [ utoa_append::sub#0 ] +Allocated zp[2]:145 [ utoa_append::return#0 ] Allocated mem[12] [ printf_buffer ] INITIAL ASM @@ -5136,22 +6202,20 @@ Target platform is c64basic / MOS6502X // File Comments // 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. // Upstart .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 - .const STACK_BASE = $103 - .label printf_cursor_x = $3c - .label printf_cursor_y = $3d - .label printf_cursor_ptr = $3e - .label count = $40 + .label printf_cursor_x = $4e + .label printf_cursor_y = $4f + .label printf_cursor_ptr = $50 + // The number of found solutions + .label count = 3 // @begin __bbegin: jmp __b1 @@ -5171,175 +6235,491 @@ __b1: sta.z printf_cursor_ptr lda #>$400 sta.z printf_cursor_ptr+1 + // [4] phi from @1 to @2 [phi:@1->@2] +__b2_from___b1: jmp __b2 // @2 __b2: - // [4] (byte) count ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z count - // [5] phi from @2 to @3 [phi:@2->@3] -__b3_from___b2: - jmp __b3 - // @3 -__b3: - // [6] call main - // [8] phi from @3 to main [phi:@3->main] -main_from___b3: + // [5] call main + // [7] phi from @2 to main [phi:@2->main] +main_from___b2: jsr main - // [7] phi from @3 to @end [phi:@3->@end] -__bend_from___b3: + // [6] phi from @2 to @end [phi:@2->@end] +__bend_from___b2: jmp __bend // @end __bend: // main main: { - // [9] call printf_cls - // [171] phi from main to printf_cls [phi:main->printf_cls] + // [8] call printf_cls + // [307] phi from main to printf_cls [phi:main->printf_cls] printf_cls_from_main: jsr printf_cls - // [10] phi from main to main::@1 [phi:main->main::@1] + // [9] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: jmp __b1 // main::@1 __b1: - // [11] call printf_str - // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] + // [10] call printf_str + // [148] phi from main::@1 to printf_str [phi:main::@1->printf_str] printf_str_from___b1: - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 lda #str sta.z printf_str.str+1 jsr printf_str - // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: jmp __b2 // main::@2 __b2: - // [13] call printf_str - // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] + // [12] call printf_str + // [148] phi from main::@2 to printf_str [phi:main::@2->printf_str] printf_str_from___b2: - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 lda #str1 sta.z printf_str.str+1 jsr printf_str - // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [13] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: - // [15] call printf_uint - // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + // [14] call printf_uint + // [273] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] printf_uint_from___b3: jsr printf_uint + // [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + __b4_from___b3: jmp __b4 // main::@4 __b4: - // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 - lda #1 - pha - // [17] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla + // [16] call queens + // [18] phi from main::@4 to queens [phi:main::@4->queens] + queens_from___b4: + jsr queens jmp __breturn // main::@return __breturn: - // [19] return + // [17] return rts - str: .text " - N Queens Problem Using Backtracking -" + str: .text " - n queens problem using backtracking -" .byte 0 - str1: .text @"\n\nNumber of Queens:" + str1: .text @"\nNumber of queens:" .byte 0 } - // printf_uint -// Print an unsigned int using a specific format -printf_uint: { - .label uvalue = 8 - .const format_min_length = 0 - .const format_justify_left = 0 - .const format_zero_padding = 0 - .const format_upper_case = 0 + // queens +// 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 +queens: { + .label __2 = $55 + // The current row where the queen is moving + .label row = 2 + // [19] phi from queens to queens::@1 [phi:queens->queens::@1] + __b1_from_queens: + // [19] phi (dword) count#11 = (dword) 0 [phi:queens->queens::@1#0] -- vduz1=vduc1 + lda #<0 + sta.z count + lda #>0 + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [19] phi (byte) queens::row#10 = (byte) 1 [phi:queens->queens::@1#1] -- vbuz1=vbuc1 + lda #1 + sta.z row jmp __b1 - // printf_uint::@1 + // queens::@1 __b1: - // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + jmp __b2 + // queens::@2 + __b2: + // [20] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + ldx.z row + inc board,x + // [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 -- pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1 + ldy.z row + lda board,y + cmp #8+1 + beq __b3 + jmp __b7 + // queens::@7 + __b7: + // [22] (byte) legal::row#0 ← (byte) queens::row#10 -- vbuz1=vbuz2 + lda.z row + sta.z legal.row + // [23] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z row + lda board,y + sta.z legal.column + // [24] call legal + // [248] phi from queens::@7 to legal [phi:queens::@7->legal] + legal_from___b7: + jsr legal + // [25] (byte) legal::return#0 ← (byte) legal::return#4 -- vbuz1=vbuz2 + lda.z legal.return_1 + sta.z legal.return + jmp __b9 + // queens::@9 + __b9: + // [26] (byte~) queens::$2 ← (byte) legal::return#0 -- vbuz1=vbuz2 + lda.z legal.return + sta.z __2 + // [27] if((byte) 0!=(byte~) queens::$2) goto queens::@4 -- vbuc1_neq_vbuz1_then_la1 + // check if the current position on row 1-row is legal + lda #0 + cmp.z __2 + bne __b4 + // [19] phi from queens::@5 queens::@6 queens::@8 queens::@9 to queens::@1 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1] + __b1_from___b5: + __b1_from___b6: + __b1_from___b8: + __b1_from___b9: + // [19] phi (dword) count#11 = (dword) count#13 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#0] -- register_copy + // [19] phi (byte) queens::row#10 = (byte) queens::row#10 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#1] -- register_copy + jmp __b1 + // queens::@4 + __b4: + // [28] if((byte) queens::row#10==(byte) 8) goto queens::@5 -- vbuz1_eq_vbuc1_then_la1 + // position is legal - move up to the next row + lda #8 + cmp.z row + beq __b5_from___b4 + jmp __b6 + // queens::@6 + __b6: + // [29] (byte) queens::row#1 ← ++ (byte) queens::row#10 -- vbuz1=_inc_vbuz1 + inc.z row + jmp __b1_from___b6 + // [30] phi from queens::@4 to queens::@5 [phi:queens::@4->queens::@5] + __b5_from___b4: + jmp __b5 + // queens::@5 + __b5: + // [31] call print + // We have a complete legal board - print it! + jsr print + jmp __b1_from___b5 + // queens::@3 + __b3: + // [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + // We moved past the end of the row - reset position and go down to the lower row + lda #0 + ldy.z row + sta board,y + // [33] if((byte) queens::row#10==(byte) 1) goto queens::@return -- vbuz1_eq_vbuc1_then_la1 + lda #1 + cmp.z row + beq __breturn + jmp __b8 + // queens::@8 + __b8: + // [34] (byte) queens::row#2 ← -- (byte) queens::row#10 -- vbuz1=_dec_vbuz1 + dec.z row + jmp __b1_from___b8 + // queens::@return + __breturn: + // [35] return + rts +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = 7 + .label i1 = 8 + .label j = 9 + // [36] (dword) count#13 ← ++ (dword) count#11 -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // [37] call printf_str + // [148] phi from print to printf_str [phi:print->printf_str] + printf_str_from_print: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + jmp __b11 + // print::@11 + __b11: + // [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 -- vduz1=vduz2 + lda.z count + sta.z printf_ulong.uvalue + lda.z count+1 + sta.z printf_ulong.uvalue+1 + lda.z count+2 + sta.z printf_ulong.uvalue+2 + lda.z count+3 + sta.z printf_ulong.uvalue+3 + // [39] call printf_ulong + // [213] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + printf_ulong_from___b11: + jsr printf_ulong + // [40] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + __b12_from___b11: + jmp __b12 + // print::@12 + __b12: + // [41] call printf_str + // [148] phi from print::@12 to printf_str [phi:print::@12->printf_str] + printf_str_from___b12: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [42] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + __b1_from___b12: + // [42] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // print::@1 + __b1: + // [43] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [44] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + __b3_from___b1: + // [44] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + jmp __b3 + // print::@3 + __b3: + // [45] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4_from___b3 + jmp __breturn + // print::@return + __breturn: + // [46] return + rts + // [47] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + __b4_from___b3: + jmp __b4 + // print::@4 + __b4: + // [48] call printf_str + // [148] phi from print::@4 to printf_str [phi:print::@4->printf_str] + printf_str_from___b4: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + jmp __b14 + // print::@14 + __b14: + // [49] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 -- vbuz1=vbuz2 + lda.z i1 + sta.z printf_uchar.uvalue + // [50] call printf_uchar + // [63] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + printf_uchar_from___b14: + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [51] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + __b5_from___b14: + // [51] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + jmp __b5 + // print::@5 + __b5: + // [52] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + jmp __b7 + // print::@7 + __b7: + // [53] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [44] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + __b3_from___b7: + // [44] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // [54] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8_from___b6 + // [55] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + __b10_from___b6: + jmp __b10 + // print::@10 + __b10: + // [56] call printf_str + // [148] phi from print::@10 to printf_str [phi:print::@10->printf_str] + printf_str_from___b10: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@9 + __b9: + // [57] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [51] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + __b5_from___b9: + // [51] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [58] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + __b8_from___b6: + jmp __b8 + // print::@8 + __b8: + // [59] call printf_str + // [148] phi from print::@8 to printf_str [phi:print::@8->printf_str] + printf_str_from___b8: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // [60] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 -- vbuz1=vbuz2 + lda.z i + sta.z printf_uchar.uvalue + // [61] call printf_uchar + // [63] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + printf_uchar_from___b2: + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + jmp __b13 + // print::@13 + __b13: + // [62] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [42] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + __b1_from___b13: + // [42] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte zp($a) uvalue) +printf_uchar: { + .label uvalue = $a + jmp __b1 + // printf_uchar::@1 + __b1: + // [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Handle any sign lda #0 sta printf_buffer - // [22] call utoa + // [65] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 -- vbuz1=vbuz2 + lda.z uvalue + sta.z uctoa.value + // [66] call uctoa // Format number into buffer - // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] - utoa_from___b1: - jsr utoa + // [187] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + uctoa_from___b1: + jsr uctoa jmp __b2 - // printf_uint::@2 + // printf_uchar::@2 __b2: - // [23] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + // [67] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 lda printf_buffer sta.z printf_number_buffer.buffer_sign - // [24] call printf_number_buffer + // [68] call printf_number_buffer // Print using format - // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + // [70] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] printf_number_buffer_from___b2: - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #format_upper_case + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #format_zero_padding + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - lda #format_justify_left + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - lda #format_min_length + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_min_length jsr printf_number_buffer jmp __breturn - // printf_uint::@return + // printf_uchar::@return __breturn: - // [25] return + // [69] return rts } // printf_number_buffer // Print the contents of the number buffer using a specific format. // This handles minimum length, zero-filling, and left/right justification from the format -// printf_number_buffer(byte zp(7) buffer_sign, byte* zp(5) buffer_digits, byte zp(2) format_min_length, byte zp(3) format_justify_left, byte zp(4) format_zero_padding, byte zp(8) format_upper_case) +// printf_number_buffer(byte zp($10) buffer_sign, byte* zp($e) buffer_digits, byte zp($b) format_min_length, byte zp($c) format_justify_left, byte zp($d) format_zero_padding, byte zp($11) format_upper_case) printf_number_buffer: { - .label __19 = $43 - .label buffer_sign = 7 - .label len = 9 - .label padding = $a - .label format_min_length = 2 - .label format_zero_padding = 4 - .label format_justify_left = 3 - .label buffer_digits = 5 - .label format_upper_case = 8 - // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 + .label __19 = $5c + .label buffer_sign = $10 + .label len = $12 + .label padding = $13 + .label format_min_length = $b + .label format_zero_padding = $d + .label format_justify_left = $c + .label buffer_digits = $e + .label format_upper_case = $11 + // [71] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_min_length beq __b1_from_printf_number_buffer jmp __b6 // printf_number_buffer::@6 __b6: - // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strlen.str lda.z buffer_digits+1 sta.z strlen.str+1 - // [29] call strlen - // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + // [73] call strlen + // [181] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] strlen_from___b6: jsr strlen - // [30] (word) strlen::return#2 ← (word) strlen::len#2 -- vwuz1=vwuz2 + // [74] (word) strlen::return#2 ← (word) strlen::len#2 -- vwuz1=vwuz2 lda.z strlen.len sta.z strlen.return lda.z strlen.len+1 @@ -5347,324 +6727,324 @@ printf_number_buffer: { jmp __b14 // printf_number_buffer::@14 __b14: - // [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 -- vwuz1=vwuz2 + // [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 -- vwuz1=vwuz2 lda.z strlen.return sta.z __19 lda.z strlen.return+1 sta.z __19+1 - // [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsz1=_sbyte_vwuz2 + // [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsz1=_sbyte_vwuz2 // There is a minimum length - work out the padding lda.z __19 sta.z len - // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + // [77] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b13_from___b14 jmp __b7 // printf_number_buffer::@7 __b7: - // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 + // [78] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 inc.z len - // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + // [79] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] __b13_from___b14: __b13_from___b7: - // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + // [79] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy jmp __b13 // printf_number_buffer::@13 __b13: - // [36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsz2_minus_vbsz3 + // [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsz2_minus_vbsz3 lda.z format_min_length sec sbc.z len sta.z padding - // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + // [81] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 lda.z padding cmp #0 bpl __b21_from___b13 - // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + // [83] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] __b1_from_printf_number_buffer: __b1_from___b13: - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 lda #0 sta.z padding jmp __b1 - // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + // [82] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] __b21_from___b13: jmp __b21 // printf_number_buffer::@21 __b21: - // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + // [83] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] __b1_from___b21: - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy jmp __b1 // printf_number_buffer::@1 __b1: - // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [84] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_justify_left bne __b2 jmp __b17 // printf_number_buffer::@17 __b17: - // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [85] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding bne __b2 jmp __b16 // printf_number_buffer::@16 __b16: - // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + // [86] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b8 jmp __b2 // printf_number_buffer::@8 __b8: - // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [87] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [44] call printf_padding - // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + // [88] call printf_padding + // [107] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] printf_padding_from___b8: - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy jsr printf_padding jmp __b2 // printf_number_buffer::@2 __b2: - // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + // [89] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b3 jmp __b9 // printf_number_buffer::@9 __b9: - // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + // [90] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 lda.z buffer_sign sta.z printf_char.ch - // [47] call printf_char - // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + // [91] call printf_char + // [114] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] printf_char_from___b9: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy jsr printf_char jmp __b3 // printf_number_buffer::@3 __b3: - // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + // [92] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding beq __b4 jmp __b18 // printf_number_buffer::@18 __b18: - // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + // [93] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b10 jmp __b4 // printf_number_buffer::@10 __b10: - // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [94] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [51] call printf_padding - // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + // [95] call printf_padding + // [107] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] printf_padding_from___b10: - // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 lda #'0' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy jsr printf_padding jmp __b4 // printf_number_buffer::@4 __b4: - // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + // [96] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_upper_case beq __b5 jmp __b11 // printf_number_buffer::@11 __b11: - // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strupr.str lda.z buffer_digits+1 sta.z strupr.str+1 - // [54] call strupr - // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + // [98] call strupr + // [166] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] strupr_from___b11: jsr strupr jmp __b5 // printf_number_buffer::@5 __b5: - // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z printf_str.str lda.z buffer_digits+1 sta.z printf_str.str+1 - // [56] call printf_str - // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + // [100] call printf_str + // [148] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] printf_str_from___b5: - // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + // [148] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy jsr printf_str jmp __b15 // printf_number_buffer::@15 __b15: - // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + // [101] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_justify_left beq __breturn jmp __b20 // printf_number_buffer::@20 __b20: - // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + // [102] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding bne __breturn jmp __b19 // printf_number_buffer::@19 __b19: - // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + // [103] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b12 jmp __breturn // printf_number_buffer::@12 __b12: - // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [104] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [61] call printf_padding - // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + // [105] call printf_padding + // [107] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] printf_padding_from___b12: - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy jsr printf_padding jmp __breturn // printf_number_buffer::@return __breturn: - // [62] return + // [106] return rts } // printf_padding // Print a padding char a number of times -// printf_padding(byte zp($c) pad, byte zp($b) length) +// printf_padding(byte zp($15) pad, byte zp($14) length) printf_padding: { - .label i = $d - .label length = $b - .label pad = $c - // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + .label i = $16 + .label length = $14 + .label pad = $15 + // [108] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] __b1_from_printf_padding: - // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + // [108] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 // printf_padding::@1 __b1: - // [65] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 + // [109] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 lda.z i cmp.z length bcc __b2 jmp __breturn // printf_padding::@return __breturn: - // [66] return + // [110] return rts // printf_padding::@2 __b2: - // [67] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 -- vbuz1=vbuz2 + // [111] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 -- vbuz1=vbuz2 lda.z pad sta.z printf_char.ch - // [68] call printf_char - // [70] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] + // [112] call printf_char + // [114] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] printf_char_from___b2: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy jsr printf_char jmp __b3 // printf_padding::@3 __b3: - // [69] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 + // [113] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [64] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] + // [108] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] __b1_from___b3: - // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + // [108] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy jmp __b1 } // printf_char // Print a single char // If the end of the screen is reached scroll it up one char and place the cursor at the -// printf_char(byte zp($e) ch) +// printf_char(byte zp($17) ch) printf_char: { - .label ch = $e - // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 + .label ch = $17 + // [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 lda.z ch ldy #0 sta (printf_cursor_ptr),y - // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + // [116] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 inc.z printf_cursor_ptr bne !+ inc.z printf_cursor_ptr+1 !: - // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + // [117] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 inc.z printf_cursor_x - // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + // [118] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z printf_cursor_x bne __breturn jmp __b1 // printf_char::@1 __b1: - // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [119] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x - // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [120] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y - // [77] call printf_scroll + // [121] call printf_scroll jsr printf_scroll jmp __breturn // printf_char::@return __breturn: - // [78] return + // [122] return rts } // printf_scroll // Scroll the entire screen if the cursor is on the last line printf_scroll: { - .label __4 = $45 - // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + .label __4 = $5e + // [123] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z printf_cursor_y bne __breturn - // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + // [124] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] __b1_from_printf_scroll: jmp __b1 // printf_scroll::@1 __b1: - // [81] call memcpy - // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + // [125] call memcpy + // [141] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] memcpy_from___b1: jsr memcpy - // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + // [126] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] __b2_from___b1: jmp __b2 // printf_scroll::@2 __b2: - // [83] call memset - // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + // [127] call memset + // [132] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] memset_from___b2: - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 lda #' ' sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + // [132] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 lda #<$400+$28*$19-$28 sta.z memset.str lda #>$400+$28*$19-$28 sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + // [132] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 lda #<$28 sta.z memset.num lda #>$28 @@ -5673,7 +7053,7 @@ printf_scroll: { jmp __b3 // printf_scroll::@3 __b3: - // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz2_minus_vwuc1 + // [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz2_minus_vwuc1 lda.z printf_cursor_ptr sec sbc #<$28 @@ -5681,29 +7061,29 @@ printf_scroll: { lda.z printf_cursor_ptr+1 sbc #>$28 sta.z __4+1 - // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 -- pbuz1=pbuz2 + // [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 -- pbuz1=pbuz2 lda.z __4 sta.z printf_cursor_ptr lda.z __4+1 sta.z printf_cursor_ptr+1 - // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + // [130] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 dec.z printf_cursor_y jmp __breturn // printf_scroll::@return __breturn: - // [87] return + // [131] return rts } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp($11) str, byte zp($13) c, word zp($f) num) +// memset(void* zp($1a) str, byte zp($1c) c, word zp($18) num) memset: { - .label end = $47 - .label dst = $14 - .label num = $f - .label str = $11 - .label c = $13 - // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + .label end = $60 + .label dst = $1d + .label num = $18 + .label str = $1a + .label c = $1c + // [133] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -5712,7 +7092,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + // [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 lda.z str clc adc.z num @@ -5720,19 +7100,19 @@ memset: { lda.z str+1 adc.z num+1 sta.z end+1 - // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + // [135] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 lda.z str sta.z dst lda.z str+1 sta.z dst+1 - // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [136] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [136] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [137] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -5742,15 +7122,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [94] return + // [138] return rts // memset::@3 __b3: - // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 + // [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 lda.z c ldy #0 sta (dst),y - // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [140] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -5765,16 +7145,16 @@ memcpy: { .label source = $400+$28 .const num = $28*$19-$28 .label src_end = source+num - .label dst = $18 - .label src = $16 - // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + .label dst = $21 + .label src = $1f + // [142] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] __b1_from_memcpy: - // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + // [142] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 lda #destination sta.z dst+1 - // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + // [142] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 lda #source @@ -5782,7 +7162,7 @@ memcpy: { jmp __b1 // memcpy::@1 __b1: - // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z src+1 cmp #>src_end bne __b2 @@ -5792,100 +7172,100 @@ memcpy: { jmp __breturn // memcpy::@return __breturn: - // [100] return + // [144] return rts // memcpy::@2 __b2: - // [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + // [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - // [102] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + // [146] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [103] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + // [147] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 !: - // [98] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] + // [142] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] __b1_from___b2: - // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy - // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + // [142] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [142] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy jmp __b1 } // printf_str // Print a zero-terminated string // Handles escape codes such as newline -// printf_str(byte* zp($1a) str) +// printf_str(byte* zp($23) str) printf_str: { - .label ch = $49 - .label str = $1a - // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + .label ch = $62 + .label str = $23 + // [149] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] __b1_from_printf_str: __b1_from___b4: __b1_from___b5: - // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + // [149] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy jmp __b1 // printf_str::@1 __b1: jmp __b2 // printf_str::@2 __b2: - // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + // [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 ldy #0 lda (str),y sta.z ch - // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + // [151] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: - // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 + // [152] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 lda.z ch cmp #0 bne __b3 jmp __breturn // printf_str::@return __breturn: - // [109] return + // [153] return rts // printf_str::@3 __b3: - // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 + // [154] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 lda #'\n' cmp.z ch beq __b4_from___b3 jmp __b5 // printf_str::@5 __b5: - // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 -- vbuz1=vbuz2 + // [155] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 -- vbuz1=vbuz2 lda.z ch sta.z printf_char.ch - // [112] call printf_char - // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + // [156] call printf_char + // [114] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] printf_char_from___b5: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy jsr printf_char jmp __b1_from___b5 - // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + // [157] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] __b4_from___b3: jmp __b4 // printf_str::@4 __b4: - // [114] call printf_ln + // [158] call printf_ln jsr printf_ln jmp __b1_from___b4 } // printf_ln // Print a newline printf_ln: { - .label __0 = $4a - .label __1 = $4c - // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz2_minus_vbuz3 + .label __0 = $63 + .label __1 = $65 + // [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz2_minus_vbuz3 sec lda.z printf_cursor_ptr sbc.z printf_cursor_x @@ -5893,7 +7273,7 @@ printf_ln: { lda.z printf_cursor_ptr+1 sbc #0 sta.z __0+1 - // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz2_plus_vbuc1 + // [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz2_plus_vbuc1 lda #$28 clc adc.z __0 @@ -5901,39 +7281,39 @@ printf_ln: { lda #0 adc.z __0+1 sta.z __1+1 - // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 -- pbuz1=pbuz2 + // [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 -- pbuz1=pbuz2 lda.z __1 sta.z printf_cursor_ptr lda.z __1+1 sta.z printf_cursor_ptr+1 - // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [162] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x - // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [163] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y - // [120] call printf_scroll + // [164] call printf_scroll jsr printf_scroll jmp __breturn // printf_ln::@return __breturn: - // [121] return + // [165] return rts } // strupr // Converts a string to uppercase. -// strupr(byte* zp($1c) str) +// strupr(byte* zp($25) str) strupr: { - .label __0 = $4f - .label src = $1c - .label str = $1c - // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + .label __0 = $68 + .label src = $25 + .label str = $25 + // [167] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] __b1_from_strupr: __b1_from___b3: - // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + // [167] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy jmp __b1 // strupr::@1 __b1: - // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (src),y cmp #0 @@ -5941,30 +7321,30 @@ strupr: { jmp __breturn // strupr::@return __breturn: - // [125] return + // [169] return rts // strupr::@2 __b2: - // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + // [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (src),y sta.z toupper.ch - // [127] call toupper + // [171] call toupper jsr toupper - // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 -- vbuz1=vbuz2 + // [172] (byte) toupper::return#3 ← (byte) toupper::return#2 -- vbuz1=vbuz2 lda.z toupper.return sta.z toupper.return_1 jmp __b3 // strupr::@3 __b3: - // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 -- vbuz1=vbuz2 + // [173] (byte~) strupr::$0 ← (byte) toupper::return#3 -- vbuz1=vbuz2 lda.z toupper.return_1 sta.z __0 - // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 + // [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 lda.z __0 ldy #0 sta (src),y - // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + // [175] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 @@ -5974,59 +7354,59 @@ strupr: { // toupper // Convert lowercase alphabet to uppercase // Returns uppercase equivalent to c, if such value exists, else c remains unchanged -// toupper(byte zp($1e) ch) +// toupper(byte zp($27) ch) toupper: { - .label return = $1e - .label ch = $1e - .label return_1 = $4e - // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 + .label return = $27 + .label ch = $27 + .label return_1 = $67 + // [176] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 lda.z ch cmp #'a' bcc __breturn_from_toupper jmp __b2 // toupper::@2 __b2: - // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 + // [177] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 lda #'z' cmp.z ch bcs __b1 - // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + // [179] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] __breturn_from_toupper: __breturn_from___b1: __breturn_from___b2: - // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + // [179] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy jmp __breturn // toupper::@1 __b1: - // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 + // [178] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 lax.z return axs #-['A'-'a'] stx.z return jmp __breturn_from___b1 // toupper::@return __breturn: - // [136] return + // [180] return rts } // strlen // Computes the length of the string str up to but not including the terminating null character. -// strlen(byte* zp($1f) str) +// strlen(byte* zp($28) str) strlen: { - .label len = $21 - .label str = $1f - .label return = $41 - // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + .label len = $2a + .label str = $28 + .label return = $5a + // [182] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] __b1_from_strlen: - // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + // [182] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z len lda #>0 sta.z len+1 - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy jmp __b1 // strlen::@1 __b1: - // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 @@ -6034,653 +7414,25 @@ strlen: { jmp __breturn // strlen::@return __breturn: - // [140] return + // [184] return rts // strlen::@2 __b2: - // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + // [185] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 inc.z len bne !+ inc.z len+1 !: - // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + // [186] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: - // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + // [182] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] __b1_from___b2: - // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + // [182] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy jmp __b1 -} - // utoa -// Converts unsigned number value to a string representing it in RADIX format. -// If the leading digits are zero they are not included in the string. -// - value : The number to be converted to RADIX -// - buffer : receives the string representing the number and zero-termination. -// - radix : The radix to convert the number to (from the enum RADIX) -// utoa(word zp($24) value, byte* zp($51) buffer) -utoa: { - .const max_digits = 5 - .label __10 = $53 - .label __11 = $50 - .label digit_value = $54 - .label buffer = $51 - .label digit = $23 - .label value = $24 - .label buffer_1 = $27 - .label started = $26 - // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] - __b1_from_utoa: - // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z buffer_1+1 - // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 - lda #0 - sta.z started - // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 - lda #printf_uint.uvalue - sta.z value+1 - // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 - lda #0 - sta.z digit - jmp __b1 - // utoa::@1 - __b1: - // [145] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z digit - cmp #max_digits-1 - bcc __b2 - jmp __b3 - // utoa::@3 - __b3: - // [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuz1=_byte_vwuz2 - lda.z value - sta.z __11 - // [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z __11 - lda DIGITS,y - ldy #0 - sta (buffer_1),y - // [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz2 - lda.z buffer_1 - clc - adc #1 - sta.z buffer - lda.z buffer_1+1 - adc #0 - sta.z buffer+1 - // [149] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 - lda #0 - ldy #0 - sta (buffer),y - jmp __breturn - // utoa::@return - __breturn: - // [150] return - rts - // utoa::@2 - __b2: - // [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z digit - asl - sta.z __10 - // [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __10 - lda RADIX_DECIMAL_VALUES,y - sta.z digit_value - lda RADIX_DECIMAL_VALUES+1,y - sta.z digit_value+1 - // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 - lda #0 - cmp.z started - bne __b5 - jmp __b7 - // utoa::@7 - __b7: - // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 - lda.z digit_value+1 - cmp.z value+1 - bne !+ - lda.z digit_value - cmp.z value - beq __b5 - !: - bcc __b5 - // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] - __b4_from___b7: - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy - // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy - jmp __b4 - // utoa::@4 - __b4: - // [156] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit - // [144] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] - __b1_from___b4: - // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy - // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy - // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy - // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy - jmp __b1 - // utoa::@5 - __b5: - // [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 -- pbuz1=pbuz2 - lda.z buffer_1 - sta.z utoa_append.buffer - lda.z buffer_1+1 - sta.z utoa_append.buffer+1 - // [158] (word) utoa_append::value#0 ← (word) utoa::value#2 -- vwuz1=vwuz2 - lda.z value - sta.z utoa_append.value - lda.z value+1 - sta.z utoa_append.value+1 - // [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 -- vwuz1=vwuz2 - lda.z digit_value - sta.z utoa_append.sub - lda.z digit_value+1 - sta.z utoa_append.sub+1 - // [160] call utoa_append - // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] - utoa_append_from___b5: - jsr utoa_append - // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 -- vwuz1=vwuz2 - lda.z utoa_append.value - sta.z utoa_append.return - lda.z utoa_append.value+1 - sta.z utoa_append.return+1 - jmp __b6 - // utoa::@6 - __b6: - // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 -- vwuz1=vwuz2 - lda.z utoa_append.return - sta.z value - lda.z utoa_append.return+1 - sta.z value+1 - // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 - inc.z buffer_1 - bne !+ - inc.z buffer_1+1 - !: - // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] - __b4_from___b6: - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 - lda #1 - sta.z started - // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy - jmp __b4 -} - // utoa_append -// Used to convert a single digit of an unsigned number value to a string representation -// Counts a single digit up from '0' as long as the value is larger than sub. -// Each time the digit is increased sub is subtracted from value. -// - buffer : pointer to the char that receives the digit -// - value : The value where the digit will be derived from -// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. -// (For decimal the subs used are 10000, 1000, 100, 10, 1) -// returns : the value reduced by sub * digit so that it is less than sub. -// utoa_append(byte* zp($56) buffer, word zp($29) value, word zp($58) sub) -utoa_append: { - .label buffer = $56 - .label value = $29 - .label sub = $58 - .label return = $5a - .label digit = $2b - // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] - __b1_from_utoa_append: - // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy - jmp __b1 - // utoa_append::@1 - __b1: - // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 - lda.z sub+1 - cmp.z value+1 - bne !+ - lda.z sub - cmp.z value - beq __b2 - !: - bcc __b2 - jmp __b3 - // utoa_append::@3 - __b3: - // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z digit - lda DIGITS,y - ldy #0 - sta (buffer),y - jmp __breturn - // utoa_append::@return - __breturn: - // [168] return - rts - // utoa_append::@2 - __b2: - // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit - // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 - lda.z value - sec - sbc.z sub - sta.z value - lda.z value+1 - sbc.z sub+1 - sta.z value+1 - // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] - __b1_from___b2: - // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy - jmp __b1 -} - // printf_cls -// Clear the screen. Also resets current line/char cursor. -printf_cls: { - // [172] call memset - // [88] phi from printf_cls to memset [phi:printf_cls->memset] - memset_from_printf_cls: - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 - lda #' ' - sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 - lda #<$400 - sta.z memset.str - lda #>$400 - sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 - lda #<$28*$19 - sta.z memset.num - lda #>$28*$19 - sta.z memset.num+1 - jsr memset - jmp __b1 - // printf_cls::@1 - __b1: - // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 - lda #<$400 - sta.z printf_cursor_ptr - lda #>$400 - sta.z printf_cursor_ptr+1 - // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z printf_cursor_x - // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z printf_cursor_y - jmp __breturn - // printf_cls::@return - __breturn: - // [176] return - rts -} - // queen -// Function to check for proper positioning of queen -// queen(byte zp($5c) row) -queen: { - .const OFFSET_STACK_ROW = 0 - .label r = $5d - .label column = $5e - .label __1 = $62 - .label __4 = $63 - .label row = $5c - // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 - tsx - lda STACK_BASE+OFFSET_STACK_ROW,x - sta.z row - // [178] (byte) queen::r ← (byte) queen::row#0 -- vbuz1=vbuz2 - lda.z row - sta.z r - // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 - lda #1 - sta.z column - jmp __b1 - // queen::@1 - __b1: - // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z column - cmp #8+1 - bcc __b2 - jmp __breturn - // queen::@return - __breturn: - // [181] return - rts - // queen::@2 - __b2: - // [182] (byte) place::row#0 ← (byte) queen::r -- vbuz1=vbuz2 - lda.z r - sta.z place.row - // [183] (byte) place::column#0 ← (byte) queen::column -- vbuz1=vbuz2 - lda.z column - sta.z place.column - // [184] call place - // [259] phi from queen::@2 to place [phi:queen::@2->place] - place_from___b2: - jsr place - // [185] (byte) place::return#0 ← (byte) place::return#4 -- vbuz1=vbuz2 - lda.z place.return_1 - sta.z place.return - jmp __b7 - // queen::@7 - __b7: - // [186] (byte~) queen::$1 ← (byte) place::return#0 -- vbuz1=vbuz2 - lda.z place.return - sta.z __1 - // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 - lda #0 - cmp.z __1 - beq __b3 - jmp __b5 - // queen::@5 - __b5: - // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 - lda.z column - ldy.z r - sta board,y - // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 - //no conflicts so place queen - lda #8 - cmp.z r - beq __b4_from___b5 - jmp __b6 - // queen::@6 - __b6: - // asm { ldacolumn pha ldar pha } - // Push the local vars on the stack (waiting for proper recursion support) - lda column - pha - lda r - pha - // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz2_plus_1 - ldy.z r - iny - sty.z __4 - // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 - //try queen with next position - lda.z __4 - pha - // [193] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla - // asm { pla star pla stacolumn } - // Pop the local vars on the stack (waiting for proper recursion support) - pla - sta r - pla - sta column - jmp __b3 - // queen::@3 - __b3: - // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 - inc.z column - jmp __b1 - // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] - __b4_from___b5: - jmp __b4 - // queen::@4 - __b4: - // [198] call print - //dead end - jsr print - jmp __b3 -} - // print -//function for printing the solution -print: { - .label i = $2c - .label i1 = $2d - .label j = $2e - // [199] (byte) count ← ++ (byte) count -- vbuz1=_inc_vbuz1 - inc.z count - // [200] call printf_str - // [104] phi from print to printf_str [phi:print->printf_str] - printf_str_from_print: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 - lda #str - sta.z printf_str.str+1 - jsr printf_str - jmp __b11 - // print::@11 - __b11: - // [201] (byte) printf_uchar::uvalue#0 ← (byte) count -- vbuz1=vbuz2 - lda.z count - sta.z printf_uchar.uvalue - // [202] call printf_uchar - // [226] phi from print::@11 to printf_uchar [phi:print::@11->printf_uchar] - printf_uchar_from___b11: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#0 [phi:print::@11->printf_uchar#0] -- register_copy - jsr printf_uchar - // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] - __b12_from___b11: - jmp __b12 - // print::@12 - __b12: - // [204] call printf_str - // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] - printf_str_from___b12: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 - lda #str1 - sta.z printf_str.str+1 - jsr printf_str - // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] - __b1_from___b12: - // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 - lda #1 - sta.z i - jmp __b1 - // print::@1 - __b1: - // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z i - cmp #8+1 - bcc __b2 - // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] - __b3_from___b1: - // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 - lda #1 - sta.z i1 - jmp __b3 - // print::@3 - __b3: - // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 - lda.z i1 - cmp #8+1 - bcc __b4_from___b3 - jmp __breturn - // print::@return - __breturn: - // [209] return - rts - // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] - __b4_from___b3: - jmp __b4 - // print::@4 - __b4: - // [211] call printf_str - // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] - printf_str_from___b4: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 - lda #str2 - sta.z printf_str.str+1 - jsr printf_str - jmp __b14 - // print::@14 - __b14: - // [212] (byte) printf_uchar::uvalue#2 ← (byte) print::i1#2 -- vbuz1=vbuz2 - lda.z i1 - sta.z printf_uchar.uvalue - // [213] call printf_uchar - // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] - printf_uchar_from___b14: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#2 [phi:print::@14->printf_uchar#0] -- register_copy - jsr printf_uchar - // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] - __b5_from___b14: - // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 - lda #1 - sta.z j - jmp __b5 - // print::@5 - __b5: - // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 - lda.z j - cmp #8+1 - bcc __b6 - jmp __b7 - // print::@7 - __b7: - // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 - inc.z i1 - // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] - __b3_from___b7: - // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy - jmp __b3 - // print::@6 - __b6: - // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //for nxn board - ldy.z i1 - lda board,y - cmp.z j - beq __b8_from___b6 - // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] - __b10_from___b6: - jmp __b10 - // print::@10 - __b10: - // [219] call printf_str - // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] - printf_str_from___b10: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 - lda #str4 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - // print::@9 - __b9: - // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 - inc.z j - // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] - __b5_from___b9: - // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy - jmp __b5 - // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] - __b8_from___b6: - jmp __b8 - // print::@8 - __b8: - // [222] call printf_str - // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] - printf_str_from___b8: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 - lda #str3 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - // print::@2 - __b2: - // [223] (byte) printf_uchar::uvalue#1 ← (byte) print::i#2 -- vbuz1=vbuz2 - lda.z i - sta.z printf_uchar.uvalue - // [224] call printf_uchar - // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] - printf_uchar_from___b2: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#1 [phi:print::@2->printf_uchar#0] -- register_copy - jsr printf_uchar - jmp __b13 - // print::@13 - __b13: - // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] - __b1_from___b13: - // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy - jmp __b1 - str: .text @"\nSolution " - .byte 0 - str1: .text @":\n " - .byte 0 - str2: .text @"\n" - .byte 0 - str3: .text "Q" - .byte 0 - str4: .text "-" - .byte 0 -} - // printf_uchar -// Print an unsigned char using a specific format -// printf_uchar(byte zp($2f) uvalue) -printf_uchar: { - .label uvalue = $2f - jmp __b1 - // printf_uchar::@1 - __b1: - // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 - // Handle any sign - lda #0 - sta printf_buffer - // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#3 -- vbuz1=vbuz2 - lda.z uvalue - sta.z uctoa.value - // [229] call uctoa - // Format number into buffer - // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] - uctoa_from___b1: - jsr uctoa - jmp __b2 - // printf_uchar::@2 - __b2: - // [230] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 - lda printf_buffer - sta.z printf_number_buffer.buffer_sign - // [231] call printf_number_buffer - // Print using format - // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] - printf_number_buffer_from___b2: - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_min_length - jsr printf_number_buffer - jmp __breturn - // printf_uchar::@return - __breturn: - // [232] return - rts } // uctoa // Converts unsigned number value to a string representing it in RADIX format. @@ -6688,44 +7440,44 @@ printf_uchar: { // - value : The number to be converted to RADIX // - buffer : receives the string representing the number and zero-termination. // - radix : The radix to convert the number to (from the enum RADIX) -// uctoa(byte zp($31) value, byte* zp($64) buffer) +// uctoa(byte zp($2d) value, byte* zp($69) buffer) uctoa: { - .label digit_value = $66 - .label buffer = $64 - .label digit = $30 - .label value = $31 - .label buffer_1 = $33 - .label started = $32 - // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + .label digit_value = $6b + .label buffer = $69 + .label digit = $2c + .label value = $2d + .label buffer_1 = $2f + .label started = $2e + // [188] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] __b1_from_uctoa: - // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + // [188] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z buffer_1+1 - // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 lda #0 sta.z started - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 lda #0 sta.z digit jmp __b1 // uctoa::@1 __b1: - // [235] if((byte) uctoa::digit#2<(byte) 3-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 + // [189] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z digit - cmp #3-1 + cmp #2-1 bcc __b2 jmp __b3 // uctoa::@3 __b3: - // [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z value lda DIGITS,y ldy #0 sta (buffer_1),y - // [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz2 + // [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz2 lda.z buffer_1 clc adc #1 @@ -6733,87 +7485,87 @@ uctoa: { lda.z buffer_1+1 adc #0 sta.z buffer+1 - // [238] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [192] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (buffer),y jmp __breturn // uctoa::@return __breturn: - // [239] return + // [193] return rts // uctoa::@2 __b2: - // [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_DECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 + // [194] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z digit - lda RADIX_DECIMAL_VALUES_CHAR,y + lda RADIX_HEXADECIMAL_VALUES_CHAR,y sta.z digit_value - // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + // [195] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z started bne __b5 jmp __b7 // uctoa::@7 __b7: - // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 + // [196] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 lda.z value cmp.z digit_value bcs __b5 - // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + // [197] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] __b4_from___b7: - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy jmp __b4 // uctoa::@4 __b4: - // [244] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 + // [198] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 inc.z digit - // [234] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] + // [188] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] __b1_from___b4: - // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy - // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + // [188] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [188] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy jmp __b1 // uctoa::@5 __b5: - // [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 -- pbuz1=pbuz2 + // [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 -- pbuz1=pbuz2 lda.z buffer_1 sta.z uctoa_append.buffer lda.z buffer_1+1 sta.z uctoa_append.buffer+1 - // [246] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 -- vbuz1=vbuz2 + // [200] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 -- vbuz1=vbuz2 lda.z value sta.z uctoa_append.value - // [247] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 -- vbuz1=vbuz2 + // [201] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 -- vbuz1=vbuz2 lda.z digit_value sta.z uctoa_append.sub - // [248] call uctoa_append - // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + // [202] call uctoa_append + // [206] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] uctoa_append_from___b5: jsr uctoa_append - // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 -- vbuz1=vbuz2 + // [203] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 -- vbuz1=vbuz2 lda.z uctoa_append.value sta.z uctoa_append.return jmp __b6 // uctoa::@6 __b6: - // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 -- vbuz1=vbuz2 + // [204] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 -- vbuz1=vbuz2 lda.z uctoa_append.return sta.z value - // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + // [205] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 inc.z buffer_1 bne !+ inc.z buffer_1+1 !: - // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + // [197] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] __b4_from___b6: - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 lda #1 sta.z started - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy jmp __b4 } // uctoa_append @@ -6825,30 +7577,30 @@ uctoa: { // - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. // (For decimal the subs used are 10000, 1000, 100, 10, 1) // returns : the value reduced by sub * digit so that it is less than sub. -// uctoa_append(byte* zp($67) buffer, byte zp($35) value, byte zp($69) sub) +// uctoa_append(byte* zp($6c) buffer, byte zp($31) value, byte zp($6e) sub) uctoa_append: { - .label buffer = $67 - .label value = $35 - .label sub = $69 - .label return = $6a - .label digit = $36 - // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + .label buffer = $6c + .label value = $31 + .label sub = $6e + .label return = $6f + .label digit = $32 + // [207] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] __b1_from_uctoa_append: - // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 + // [207] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 lda #0 sta.z digit - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy jmp __b1 // uctoa_append::@1 __b1: - // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 + // [208] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z value cmp.z sub bcs __b2 jmp __b3 // uctoa_append::@3 __b3: - // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [209] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy.z digit lda DIGITS,y ldy #0 @@ -6856,183 +7608,847 @@ uctoa_append: { jmp __breturn // uctoa_append::@return __breturn: - // [256] return + // [210] return rts // uctoa_append::@2 __b2: - // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 + // [211] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 inc.z digit - // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + // [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 lda.z value sec sbc.z sub sta.z value - // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + // [207] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] __b1_from___b2: - // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + // [207] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy jmp __b1 } - // place -// function to check conflicts -// If no conflict for desired postion returns 1 otherwise returns 0 -// place(byte zp($5f) row, byte zp($60) column) -place: { - .label __0 = $6b - .label __3 = $6d - .label __4 = $6f - .label row = $5f - .label column = $60 - .label return = $61 - .label return_1 = $38 - .label i = $37 - // [260] phi from place to place::@1 [phi:place->place::@1] - __b1_from_place: - // [260] phi (byte) place::i#3 = (byte) 1 [phi:place->place::@1#0] -- vbuz1=vbuc1 + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp($56) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = $56 + jmp __b1 + // printf_ulong::@1 + __b1: + // [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 -- vduz1=vduz2 + lda.z uvalue + sta.z ultoa.value + lda.z uvalue+1 + sta.z ultoa.value+1 + lda.z uvalue+2 + sta.z ultoa.value+2 + lda.z uvalue+3 + sta.z ultoa.value+3 + // [216] call ultoa + // Format number into buffer + // [220] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + ultoa_from___b1: + jsr ultoa + jmp __b2 + // printf_ulong::@2 + __b2: + // [217] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [218] call printf_number_buffer + // Print using format + // [70] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_ulong::@return + __breturn: + // [219] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp($34) value, byte* zp($71) buffer) +ultoa: { + .const max_digits = $a + .label __10 = $73 + .label __11 = $70 + .label digit_value = $74 + .label buffer = $71 + .label digit = $33 + .label value = $34 + .label buffer_1 = $39 + .label started = $38 + // [221] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + __b1_from_ultoa: + // [221] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer_1+1 + // [221] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // ultoa::@1 + __b1: + // [222] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // ultoa::@3 + __b3: + // [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 -- vbuz1=_byte_vduz2 + lda.z value + sta.z __11 + // [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer_1),y + // [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz2 + lda.z buffer_1 + clc + adc #1 + sta.z buffer + lda.z buffer_1+1 + adc #0 + sta.z buffer+1 + // [226] *((byte*) ultoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa::@return + __breturn: + // [227] return + rts + // ultoa::@2 + __b2: + // [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 + lda.z digit + asl + asl + sta.z __10 + // [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) -- vduz1=pduc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES_LONG,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES_LONG+1,y + sta.z digit_value+1 + lda RADIX_DECIMAL_VALUES_LONG+2,y + sta.z digit_value+2 + lda RADIX_DECIMAL_VALUES_LONG+3,y + sta.z digit_value+3 + // [230] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // ultoa::@7 + __b7: + // [231] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [232] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + __b4_from___b7: + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + jmp __b4 + // ultoa::@4 + __b4: + // [233] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [221] phi from ultoa::@4 to ultoa::@1 [phi:ultoa::@4->ultoa::@1] + __b1_from___b4: + // [221] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [221] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 -- pbuz1=pbuz2 + lda.z buffer_1 + sta.z ultoa_append.buffer + lda.z buffer_1+1 + sta.z ultoa_append.buffer+1 + // [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 -- vduz1=vduz2 + lda.z value + sta.z ultoa_append.value + lda.z value+1 + sta.z ultoa_append.value+1 + lda.z value+2 + sta.z ultoa_append.value+2 + lda.z value+3 + sta.z ultoa_append.value+3 + // [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 -- vduz1=vduz2 + lda.z digit_value + sta.z ultoa_append.sub + lda.z digit_value+1 + sta.z ultoa_append.sub+1 + lda.z digit_value+2 + sta.z ultoa_append.sub+2 + lda.z digit_value+3 + sta.z ultoa_append.sub+3 + // [237] call ultoa_append + // [241] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + ultoa_append_from___b5: + jsr ultoa_append + // [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 -- vduz1=vduz2 + lda.z ultoa_append.value + sta.z ultoa_append.return + lda.z ultoa_append.value+1 + sta.z ultoa_append.return+1 + lda.z ultoa_append.value+2 + sta.z ultoa_append.return+2 + lda.z ultoa_append.value+3 + sta.z ultoa_append.return+3 + jmp __b6 + // ultoa::@6 + __b6: + // [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 -- vduz1=vduz2 + lda.z ultoa_append.return + sta.z value + lda.z ultoa_append.return+1 + sta.z value+1 + lda.z ultoa_append.return+2 + sta.z value+2 + lda.z ultoa_append.return+3 + sta.z value+3 + // [240] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer_1 + bne !+ + inc.z buffer_1+1 + !: + // [232] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + __b4_from___b6: + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($78) buffer, dword zp($3b) value, dword zp($7a) sub) +ultoa_append: { + .label buffer = $78 + .label value = $3b + .label sub = $7a + .label return = $7e + .label digit = $3f + // [242] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + __b1_from_ultoa_append: + // [242] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + jmp __b1 + // ultoa_append::@1 + __b1: + // [243] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + jmp __b3 + // ultoa_append::@3 + __b3: + // [244] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa_append::@return + __breturn: + // [245] return + rts + // ultoa_append::@2 + __b2: + // [246] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [247] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [242] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] + __b1_from___b2: + // [242] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy + jmp __b1 +} + // legal +// 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 +// legal(byte zp($52) row, byte zp($53) column) +legal: { + .label __0 = $82 + .label __3 = $84 + .label __4 = $86 + .label row = $52 + .label column = $53 + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return = $54 + // Placement is legal + // The same column is a conflict. + // The same diagonal is a conflict. + .label return_1 = $41 + .label i = $40 + // [249] phi from legal to legal::@1 [phi:legal->legal::@1] + __b1_from_legal: + // [249] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuz1=vbuc1 lda #1 sta.z i jmp __b1 - // place::@1 + // legal::@1 __b1: - // [261] (byte~) place::$0 ← (byte) place::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + // [250] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 ldx.z row dex stx.z __0 - // [262] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 -- vbuz1_le_vbuz2_then_la1 + // [251] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuz1_le_vbuz2_then_la1 lda.z __0 cmp.z i bcs __b2 - // [263] phi from place::@1 to place::@return [phi:place::@1->place::@return] + // [252] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] __breturn_from___b1: - // [263] phi (byte) place::return#4 = (byte) 1 [phi:place::@1->place::@return#0] -- vbuz1=vbuc1 + // [252] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuz1=vbuc1 lda #1 sta.z return_1 jmp __breturn - // [263] phi from place::@2 place::@6 to place::@return [phi:place::@2/place::@6->place::@return] + // [252] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] __breturn_from___b2: __breturn_from___b6: - // [263] phi (byte) place::return#4 = (byte) 0 [phi:place::@2/place::@6->place::@return#0] -- vbuz1=vbuc1 + // [252] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuz1=vbuc1 lda #0 sta.z return_1 jmp __breturn - // place::@return + // legal::@return __breturn: - // [264] return + // [253] return rts - // place::@2 + // legal::@2 __b2: - // [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //checking column and digonal conflicts + // [254] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 ldy.z i lda board,y cmp.z column beq __breturn_from___b2 jmp __b4 - // place::@4 + // legal::@4 __b4: - // [266] (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#3) -- vbuz1=pbuc1_derefidx_vbuz2 + // [255] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z i lda board,y sta.z diff.a - // [267] (byte) diff::b#0 ← (byte) place::column#0 -- vbuz1=vbuz2 + // [256] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuz1=vbuz2 lda.z column sta.z diff.b - // [268] call diff - // [278] phi from place::@4 to diff [phi:place::@4->diff] + // [257] call diff + // [267] phi from legal::@4 to diff [phi:legal::@4->diff] diff_from___b4: - // [278] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:place::@4->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:place::@4->diff#1] -- register_copy + // [267] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy jsr diff - // [269] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 + // [258] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 lda.z diff.return_2 sta.z diff.return jmp __b5 - // place::@5 + // legal::@5 __b5: - // [270] (byte~) place::$3 ← (byte) diff::return#0 -- vbuz1=vbuz2 + // [259] (byte~) legal::$3 ← (byte) diff::return#0 -- vbuz1=vbuz2 lda.z diff.return sta.z __3 - // [271] (byte) diff::a#1 ← (byte) place::i#3 -- vbuz1=vbuz2 + // [260] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuz1=vbuz2 lda.z i sta.z diff.a - // [272] (byte) diff::b#1 ← (byte) place::row#0 -- vbuz1=vbuz2 + // [261] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuz1=vbuz2 lda.z row sta.z diff.b - // [273] call diff - // [278] phi from place::@5 to diff [phi:place::@5->diff] + // [262] call diff + // [267] phi from legal::@5 to diff [phi:legal::@5->diff] diff_from___b5: - // [278] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:place::@5->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:place::@5->diff#1] -- register_copy + // [267] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy jsr diff - // [274] (byte) diff::return#1 ← (byte) diff::return#4 -- vbuz1=vbuz2 + // [263] (byte) diff::return#1 ← (byte) diff::return#4 -- vbuz1=vbuz2 lda.z diff.return_2 sta.z diff.return_1 jmp __b6 - // place::@6 + // legal::@6 __b6: - // [275] (byte~) place::$4 ← (byte) diff::return#1 -- vbuz1=vbuz2 + // [264] (byte~) legal::$4 ← (byte) diff::return#1 -- vbuz1=vbuz2 lda.z diff.return_1 sta.z __4 - // [276] if((byte~) place::$3!=(byte~) place::$4) goto place::@3 -- vbuz1_neq_vbuz2_then_la1 + // [265] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuz2_then_la1 lda.z __3 cmp.z __4 bne __b3 jmp __breturn_from___b6 - // place::@3 + // legal::@3 __b3: - // [277] (byte) place::i#2 ← ++ (byte) place::i#3 -- vbuz1=_inc_vbuz1 + // [266] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [260] phi from place::@3 to place::@1 [phi:place::@3->place::@1] + // [249] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] __b1_from___b3: - // [260] phi (byte) place::i#3 = (byte) place::i#2 [phi:place::@3->place::@1#0] -- register_copy + // [249] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy jmp __b1 } // diff // Find the absolute difference between two unsigned chars -// diff(byte zp($39) a, byte zp($3a) b) +// diff(byte zp($42) a, byte zp($43) b) diff: { - .label a = $39 - .label b = $3a - .label return = $6c - .label return_1 = $6e - .label return_2 = $3b - // [279] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuz1_lt_vbuz2_then_la1 + .label a = $42 + .label b = $43 + .label return = $83 + .label return_1 = $85 + .label return_2 = $44 + // [268] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuz1_lt_vbuz2_then_la1 lda.z a cmp.z b bcc __b1 jmp __b2 // diff::@2 __b2: - // [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuz1=vbuz2_minus_vbuz3 + // [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuz1=vbuz2_minus_vbuz3 lda.z a sec sbc.z b sta.z return_2 - // [281] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] + // [270] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] __breturn_from___b1: __breturn_from___b2: - // [281] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + // [270] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy jmp __breturn // diff::@return __breturn: - // [282] return + // [271] return rts // diff::@1 __b1: - // [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz3 + // [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz3 lda.z b sec sbc.z a sta.z return_2 jmp __breturn_from___b1 +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + jmp __b1 + // printf_uint::@1 + __b1: + // [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [275] call utoa + // Format number into buffer + // [279] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + utoa_from___b1: + jsr utoa + jmp __b2 + // printf_uint::@2 + __b2: + // [276] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [277] call printf_number_buffer + // Print using format + // [70] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 + lda #format_min_length + sta.z printf_number_buffer.format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uint::@return + __breturn: + // [278] return + rts +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($46) value, byte* zp($88) buffer) +utoa: { + .const max_digits = 5 + .label __10 = $8a + .label __11 = $87 + .label digit_value = $8b + .label buffer = $88 + .label digit = $45 + .label value = $46 + .label buffer_1 = $49 + .label started = $48 + // [280] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + __b1_from_utoa: + // [280] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer_1+1 + // [280] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 + lda #0 + sta.z started + // [280] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [280] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // utoa::@1 + __b1: + // [281] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // utoa::@3 + __b3: + // [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuz1=_byte_vwuz2 + lda.z value + sta.z __11 + // [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z __11 + lda DIGITS,y + ldy #0 + sta (buffer_1),y + // [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz2 + lda.z buffer_1 + clc + adc #1 + sta.z buffer + lda.z buffer_1+1 + adc #0 + sta.z buffer+1 + // [285] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // utoa::@return + __breturn: + // [286] return + rts + // utoa::@2 + __b2: + // [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + lda.z digit + asl + sta.z __10 + // [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy.z __10 + lda RADIX_DECIMAL_VALUES,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES+1,y + sta.z digit_value+1 + // [289] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 + lda #0 + cmp.z started + bne __b5 + jmp __b7 + // utoa::@7 + __b7: + // [290] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [291] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + __b4_from___b7: + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [291] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + jmp __b4 + // utoa::@4 + __b4: + // [292] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [280] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] + __b1_from___b4: + // [280] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [280] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [280] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [280] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 -- pbuz1=pbuz2 + lda.z buffer_1 + sta.z utoa_append.buffer + lda.z buffer_1+1 + sta.z utoa_append.buffer+1 + // [294] (word) utoa_append::value#0 ← (word) utoa::value#2 -- vwuz1=vwuz2 + lda.z value + sta.z utoa_append.value + lda.z value+1 + sta.z utoa_append.value+1 + // [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 -- vwuz1=vwuz2 + lda.z digit_value + sta.z utoa_append.sub + lda.z digit_value+1 + sta.z utoa_append.sub+1 + // [296] call utoa_append + // [300] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + utoa_append_from___b5: + jsr utoa_append + // [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 -- vwuz1=vwuz2 + lda.z utoa_append.value + sta.z utoa_append.return + lda.z utoa_append.value+1 + sta.z utoa_append.return+1 + jmp __b6 + // utoa::@6 + __b6: + // [298] (word) utoa::value#0 ← (word) utoa_append::return#0 -- vwuz1=vwuz2 + lda.z utoa_append.return + sta.z value + lda.z utoa_append.return+1 + sta.z value+1 + // [299] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer_1 + bne !+ + inc.z buffer_1+1 + !: + // [291] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + __b4_from___b6: + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 + lda #1 + sta.z started + // [291] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp($8d) buffer, word zp($4b) value, word zp($8f) sub) +utoa_append: { + .label buffer = $8d + .label value = $4b + .label sub = $8f + .label return = $91 + .label digit = $4d + // [301] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + __b1_from_utoa_append: + // [301] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 + lda #0 + sta.z digit + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + jmp __b1 + // utoa_append::@1 + __b1: + // [302] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + jmp __b3 + // utoa_append::@3 + __b3: + // [303] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + ldy.z digit + lda DIGITS,y + ldy #0 + sta (buffer),y + jmp __breturn + // utoa_append::@return + __breturn: + // [304] return + rts + // utoa_append::@2 + __b2: + // [305] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [306] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [301] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + __b1_from___b2: + // [301] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // [308] call memset + // [132] phi from printf_cls to memset [phi:printf_cls->memset] + memset_from_printf_cls: + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 + lda #' ' + sta.z memset.c + // [132] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [132] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + jmp __b1 + // printf_cls::@1 + __b1: + // [309] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // [310] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [311] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_y + jmp __breturn + // printf_cls::@return + __breturn: + // [312] return + rts } // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" - // Values of decimal digits - RADIX_DECIMAL_VALUES_CHAR: .byte $64, $a + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 // Values of decimal digits RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. board: .fill $14, 0 // Buffer used for stringified number being printed printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 @@ -7041,300 +8457,338 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] (byte) printf_cursor_x ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a Statement [2] (byte) printf_cursor_y ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a Statement [3] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a -Statement [4] (byte) count ← (byte) 0 [ count printf_buffer ] ( [ count printf_buffer ] { } ) always clobbers reg byte a -Statement [16] stackpush(byte) ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] ( main:6 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] { } ) always clobbers reg byte a -Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:6::printf_uint:15 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a -Statement [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:2 [ printf_number_buffer::format_min_length#2 ] -Removing always clobbered register reg byte a as potential for zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] -Removing always clobbered register reg byte a as potential for zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] -Removing always clobbered register reg byte a as potential for zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] -Removing always clobbered register reg byte a as potential for zp[1]:45 [ print::i1#2 print::i1#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:44 [ print::i#2 print::i#1 ] -Statement [30] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a -Statement [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] -Statement [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a -Statement [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] -Removing always clobbered register reg byte y as potential for zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] -Removing always clobbered register reg byte y as potential for zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] -Removing always clobbered register reg byte y as potential for zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:45 [ print::i1#2 print::i1#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:44 [ print::i#2 print::i#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] -Removing always clobbered register reg byte y as potential for zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] -Removing always clobbered register reg byte y as potential for zp[1]:12 [ printf_padding::pad#5 ] -Removing always clobbered register reg byte y as potential for zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:46 [ print::j#2 print::j#1 ] -Statement [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:12 [ printf_padding::pad#5 ] -Removing always clobbered register reg byte a as potential for zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:46 [ print::j#2 print::j#1 ] -Statement [75] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a -Statement [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } ) always clobbers reg byte a -Statement [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [89] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:19 [ memset::c#4 ] -Statement [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:19 [ memset::c#4 ] -Statement [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a -Statement [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:6::printf_str:11 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_str:13 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:204 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:211 [ queen::r queen::column count printf_buffer print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:219 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:222 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } ) always clobbers reg byte a reg byte y -Statement [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } ) always clobbers reg byte a -Statement [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } ) always clobbers reg byte a -Statement [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [118] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y -Statement [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y -Statement [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54::toupper:127 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a -Statement [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strlen:29 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strlen:29 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:2 [ printf_number_buffer::format_min_length#2 ] -Statement [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a -Statement [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y -Statement [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a -Statement [149] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y -Statement [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:38 [ utoa::started#2 utoa::started#4 ] -Statement [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a -Statement [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a -Statement [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [158] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [162] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a -Statement [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] -Statement [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] -Statement [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [173] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [174] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [175] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] { } ) always clobbers reg byte a reg byte x -Statement [179] (byte) queen::column ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a reg byte y -Statement [189] if((byte) queen::r==(byte) 8) goto queen::@4 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement asm { ldacolumn pha ldar pha } always clobbers reg byte a -Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement asm { pla star pla stacolumn } always clobbers reg byte a -Statement [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] { } ) always clobbers reg byte a -Statement [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] ( main:6::queen:17::print:198::printf_uchar:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] -Statement [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y -Statement [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a -Statement [238] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y -Statement [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:102 [ uctoa::digit_value#0 ] -Statement [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229::uctoa_append:248 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] -Removing always clobbered register reg byte a as potential for zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] -Removing always clobbered register reg byte y as potential for zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] -Statement [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229::uctoa_append:248 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:105 [ uctoa_append::sub#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] -Statement [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return [ place::row#0 place::column#0 place::i#3 ] ( main:6::queen:17::place:184 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 ] { { place::row#0 = queen::r } { place::column#0 = queen::column } { place::return#0 = place::return#4 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:95 [ place::row#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:96 [ place::column#0 ] -Removing always clobbered register reg byte a as potential for zp[1]:55 [ place::i#3 place::i#2 ] -Statement [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:6::queen:17::place:184::diff:268 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 diff::return#3 ] { { place::row#0 = queen::r } { place::return#0 = place::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 place::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::place:184::diff:273 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 place::$3 diff::return#3 ] { { place::column#0 = queen::column } { place::return#0 = place::return#4 } { diff::a#1 = diff::a#2 place::i#3 } { diff::b#1 = diff::b#2 place::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp[1]:109 [ place::$3 ] -Statement [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:6::queen:17::place:184::diff:268 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 diff::return#2 ] { { place::row#0 = queen::r } { place::return#0 = place::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 place::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::place:184::diff:273 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 place::$3 diff::return#2 ] { { place::column#0 = queen::column } { place::return#0 = place::return#4 } { diff::a#1 = diff::a#2 place::i#3 } { diff::b#1 = diff::b#2 place::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] ( main:5::queens:16 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] +Statement [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] ( main:5::queens:16 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] { } ) always clobbers reg byte a +Statement [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 printf_ulong::uvalue#0 printf_buffer ] ( main:5::queens:16::print:31 [ queens::row#10 printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 printf_ulong::uvalue#0 printf_buffer ] { { count#13 = printf_ulong::uvalue#0 } } ) always clobbers reg byte a +Statement [54] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 print::i1#2 print::j#2 printf_buffer ] ( main:5::queens:16::print:31 [ queens::row#10 printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 print::i1#2 print::j#2 printf_buffer ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:8 [ print::i1#2 print::i1#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:9 [ print::j#2 print::j#1 ] +Statement [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] ( main:5::queens:16::print:31::printf_uchar:50 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:10 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:7 [ print::i#2 print::i#1 ] +Statement [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:11 [ printf_number_buffer::format_min_length#3 ] +Removing always clobbered register reg byte a as potential for zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] +Removing always clobbered register reg byte a as potential for zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Statement [74] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Statement [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] +Removing always clobbered register reg byte y as potential for zp[1]:8 [ print::i1#2 print::i1#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Removing always clobbered register reg byte y as potential for zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:7 [ print::i#2 print::i#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Removing always clobbered register reg byte y as potential for zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Removing always clobbered register reg byte y as potential for zp[1]:21 [ printf_padding::pad#5 ] +Removing always clobbered register reg byte y as potential for zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:9 [ print::j#2 print::j#1 ] +Statement [118] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:21 [ printf_padding::pad#5 ] +Removing always clobbered register reg byte a as potential for zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] +Statement [119] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [123] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [133] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:28 [ memset::c#4 ] +Statement [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [135] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [137] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:28 [ memset::c#4 ] +Statement [143] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:5::printf_str:10 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::printf_str:12 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:37 [ queens::row#10 count#13 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:41 [ queens::row#10 count#13 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:48 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:56 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:59 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [162] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y +Statement [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y +Statement [178] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98::toupper:171 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98::toupper:171 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98::toupper:171 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98::toupper:171 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a +Statement [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strlen:73 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strlen:73 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strlen:73 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277::strlen:73 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:11 [ printf_number_buffer::format_min_length#3 ] +Statement [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [192] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:45 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:107 [ uctoa::digit_value#0 ] +Statement [209] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:49 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Removing always clobbered register reg byte y as potential for zp[1]:49 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] +Statement [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:110 [ uctoa_append::sub#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:50 [ uctoa_append::digit#2 uctoa_append::digit#1 ] +Statement [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_ulong::uvalue#0 printf_buffer ] ( main:5::queens:16::print:31::printf_ulong:39 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_ulong::uvalue#0 printf_buffer ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] ( main:5::queens:16::print:31::printf_ulong:39 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ultoa::$11 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ printf_buffer ultoa::buffer#3 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#3 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [226] *((byte*) ultoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:56 [ ultoa::started#2 ultoa::started#4 ] +Statement [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [231] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [243] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:63 [ ultoa_append::digit#2 ultoa_append::digit#1 ] +Statement [244] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] +Statement [247] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [254] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#2 ] ( main:5::queens:16::legal:24 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:82 [ legal::row#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:83 [ legal::column#0 ] +Removing always clobbered register reg byte a as potential for zp[1]:64 [ legal::i#2 legal::i#1 ] +Statement [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:5::queens:16::legal:24::diff:257 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 diff::return#3 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 } { diff::return#0 = diff::return#4 } } main:5::queens:16::legal:24::diff:262 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#3 ] { { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queens::row#10 } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:132 [ legal::$3 ] +Statement [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:5::queens:16::legal:24::diff:257 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 diff::return#2 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 } { diff::return#0 = diff::return#4 } } main:5::queens:16::legal:24::diff:262 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#2 ] { { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queens::row#10 } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:5::printf_uint:14 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a +Statement [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a +Statement [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y +Statement [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a +Statement [285] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y +Statement [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] +Removing always clobbered register reg byte a as potential for zp[1]:72 [ utoa::started#2 utoa::started#4 ] +Statement [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [290] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [294] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [298] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a +Statement [302] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp[1]:77 [ utoa_append::digit#2 utoa_append::digit#1 ] +Statement [303] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] +Statement [306] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [309] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [310] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [311] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a Statement [1] (byte) printf_cursor_x ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a Statement [2] (byte) printf_cursor_y ← (byte) 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a Statement [3] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a -Statement [4] (byte) count ← (byte) 0 [ count printf_buffer ] ( [ count printf_buffer ] { } ) always clobbers reg byte a -Statement [16] stackpush(byte) ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] ( main:6 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer ] { } ) always clobbers reg byte a -Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:6::printf_uint:15 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a -Statement [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a -Statement [30] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a -Statement [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a -Statement [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a -Statement [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:6::printf_uint:15::printf_number_buffer:24 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a -Statement [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y -Statement [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a -Statement [75] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a -Statement [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } ) always clobbers reg byte a -Statement [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [89] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a -Statement [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a -Statement [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a -Statement [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a -Statement [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memset:83 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:6::printf_cls:9::memset:172 [ count printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a -Statement [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::printf_char:47::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_char:47::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:44::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:51::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_uint:15::printf_number_buffer:24::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_padding:61::printf_char:68::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:6::printf_str:11::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:13::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:200::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:204::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:211::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:219::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::queen:17::print:198::printf_str:222::printf_char:112::printf_scroll:77::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:6::printf_str:11::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_str:13::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114::printf_scroll:120::memcpy:81 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } ) always clobbers reg byte a reg byte y -Statement [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:6::printf_str:11 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_str:13 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:204 [ queen::r queen::column count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:211 [ queen::r queen::column count printf_buffer print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:219 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:6::queen:17::print:198::printf_str:222 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } ) always clobbers reg byte a reg byte y -Statement [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } ) always clobbers reg byte a -Statement [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } ) always clobbers reg byte a -Statement [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [118] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_str:11::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_str:13::printf_ln:114 [ count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::printf_uint:15::printf_number_buffer:24::printf_str:56::printf_ln:114 [ count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::printf_str:56::printf_ln:114 [ queen::r queen::column count print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_str:200::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:204::printf_ln:114 [ queen::r queen::column count printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:211::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:219::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:6::queen:17::print:198::printf_str:222::printf_ln:114 [ queen::r queen::column count printf_buffer print::i1#2 print::j#2 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y -Statement [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y -Statement [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y -Statement [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:6::printf_uint:15::printf_number_buffer:24::strupr:54::toupper:127 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strupr:54::toupper:127 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a -Statement [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:6::printf_uint:15::printf_number_buffer:24::strlen:29 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:202::printf_number_buffer:231::strlen:29 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:213::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:6::queen:17::print:198::printf_uchar:224::printf_number_buffer:231::strlen:29 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y -Statement [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a -Statement [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y -Statement [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a -Statement [149] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y -Statement [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a -Statement [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a -Statement [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a -Statement [157] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [158] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [159] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [162] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:6::printf_uint:15::utoa:22 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a -Statement [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y -Statement [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:6::printf_uint:15::utoa:22::utoa_append:160 [ count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a -Statement [173] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [174] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [175] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:6::printf_cls:9 [ count printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a -Statement [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::row#0 ] { } ) always clobbers reg byte a reg byte x -Statement [179] (byte) queen::column ← (byte) 1 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a reg byte y -Statement [189] if((byte) queen::r==(byte) 8) goto queen::@4 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] ( main:6::queen:17 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column ] { } ) always clobbers reg byte a -Statement asm { ldacolumn pha ldar pha } always clobbers reg byte a -Statement sideeffect stackpullbytes((number) 1) always clobbers reg byte a -Statement asm { pla star pla stacolumn } always clobbers reg byte a -Statement [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] ( main:6::queen:17::print:198 [ queen::r queen::column printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer print::i1#2 print::j#2 ] { } ) always clobbers reg byte a -Statement [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] ( main:6::queen:17::print:198::printf_uchar:202 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_uchar::uvalue#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a -Statement [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y -Statement [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a -Statement [238] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y -Statement [245] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a -Statement [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229::uctoa_append:248 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y -Statement [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:6::queen:17::print:198::printf_uchar:202::uctoa:229::uctoa_append:248 [ queen::r queen::column count printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#3 count uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:213::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#2 = printf_uchar::uvalue#3 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:6::queen:17::print:198::printf_uchar:224::uctoa:229::uctoa_append:248 [ queen::r queen::column count print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#3 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a -Statement [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return [ place::row#0 place::column#0 place::i#3 ] ( main:6::queen:17::place:184 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 ] { { place::row#0 = queen::r } { place::column#0 = queen::column } { place::return#0 = place::return#4 } } ) always clobbers reg byte a -Statement [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:6::queen:17::place:184::diff:268 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 diff::return#3 ] { { place::row#0 = queen::r } { place::return#0 = place::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 place::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::place:184::diff:273 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 place::$3 diff::return#3 ] { { place::column#0 = queen::column } { place::return#0 = place::return#4 } { diff::a#1 = diff::a#2 place::i#3 } { diff::b#1 = diff::b#2 place::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a -Statement [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:6::queen:17::place:184::diff:268 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 diff::return#2 ] { { place::row#0 = queen::r } { place::return#0 = place::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 place::column#0 queen::column } { diff::return#0 = diff::return#4 } } main:6::queen:17::place:184::diff:273 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count printf_buffer queen::r queen::column place::row#0 place::column#0 place::i#3 place::$3 diff::return#2 ] { { place::column#0 = queen::column } { place::return#0 = place::return#4 } { diff::a#1 = diff::a#2 place::i#3 } { diff::b#1 = diff::b#2 place::row#0 queen::r } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a -Potential registers zp[1]:2 [ printf_number_buffer::format_min_length#2 ] : zp[1]:2 , reg byte x , -Potential registers zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] : zp[1]:3 , reg byte x , -Potential registers zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] : zp[1]:4 , reg byte x , -Potential registers zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] : zp[2]:5 , -Potential registers zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] : zp[1]:7 , reg byte x , -Potential registers zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] : zp[1]:8 , reg byte x , -Potential registers zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] : zp[1]:10 , reg byte x , -Potential registers zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] : zp[1]:11 , reg byte x , -Potential registers zp[1]:12 [ printf_padding::pad#5 ] : zp[1]:12 , reg byte x , -Potential registers zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] : zp[1]:13 , reg byte x , -Potential registers zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:15 [ memset::num#2 ] : zp[2]:15 , -Potential registers zp[2]:17 [ memset::str#3 ] : zp[2]:17 , -Potential registers zp[1]:19 [ memset::c#4 ] : zp[1]:19 , reg byte x , -Potential registers zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:20 , -Potential registers zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] : zp[2]:22 , -Potential registers zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] : zp[2]:24 , -Potential registers zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] : zp[2]:26 , -Potential registers zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] : zp[2]:28 , -Potential registers zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] : zp[2]:31 , -Potential registers zp[2]:33 [ strlen::len#2 strlen::len#1 ] : zp[2]:33 , -Potential registers zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:35 , reg byte x , -Potential registers zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] : zp[2]:36 , -Potential registers zp[1]:38 [ utoa::started#2 utoa::started#4 ] : zp[1]:38 , reg byte x , reg byte y , -Potential registers zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:39 , -Potential registers zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:41 , -Potential registers zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:43 , reg byte x , reg byte y , -Potential registers zp[1]:44 [ print::i#2 print::i#1 ] : zp[1]:44 , reg byte x , -Potential registers zp[1]:45 [ print::i1#2 print::i1#1 ] : zp[1]:45 , reg byte x , -Potential registers zp[1]:46 [ print::j#2 print::j#1 ] : zp[1]:46 , reg byte x , -Potential registers zp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] : zp[1]:47 , reg byte x , reg byte y , -Potential registers zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] : zp[1]:48 , reg byte x , -Potential registers zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] : zp[1]:49 , reg byte x , reg byte y , -Potential registers zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] : zp[2]:51 , -Potential registers zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] : zp[1]:53 , reg byte x , -Potential registers zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] : zp[1]:54 , reg byte x , reg byte y , -Potential registers zp[1]:55 [ place::i#3 place::i#2 ] : zp[1]:55 , reg byte x , reg byte y , -Potential registers zp[1]:56 [ place::return#4 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:58 [ diff::b#2 diff::b#0 diff::b#1 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:59 [ diff::return#4 diff::return#2 diff::return#3 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:60 [ printf_cursor_x ] : zp[1]:60 , -Potential registers zp[1]:61 [ printf_cursor_y ] : zp[1]:61 , -Potential registers zp[2]:62 [ printf_cursor_ptr ] : zp[2]:62 , -Potential registers zp[1]:64 [ count ] : zp[1]:64 , -Potential registers zp[2]:65 [ strlen::return#2 ] : zp[2]:65 , -Potential registers zp[2]:67 [ printf_number_buffer::$19 ] : zp[2]:67 , -Potential registers zp[2]:69 [ printf_scroll::$4 ] : zp[2]:69 , -Potential registers zp[2]:71 [ memset::end#0 ] : zp[2]:71 , -Potential registers zp[1]:73 [ printf_str::ch#0 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:74 [ printf_ln::$0 ] : zp[2]:74 , -Potential registers zp[2]:76 [ printf_ln::$1 ] : zp[2]:76 , -Potential registers zp[1]:78 [ toupper::return#3 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:79 [ strupr::$0 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:80 [ utoa::$11 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:81 [ utoa::buffer#3 ] : zp[2]:81 , -Potential registers zp[1]:83 [ utoa::$10 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:84 [ utoa::digit_value#0 ] : zp[2]:84 , -Potential registers zp[2]:86 [ utoa_append::buffer#0 ] : zp[2]:86 , -Potential registers zp[2]:88 [ utoa_append::sub#0 ] : zp[2]:88 , -Potential registers zp[2]:90 [ utoa_append::return#0 ] : zp[2]:90 , -Potential registers zp[1]:92 [ queen::row#0 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:93 [ queen::r ] : zp[1]:93 , -Potential registers zp[1]:94 [ queen::column ] : zp[1]:94 , -Potential registers zp[1]:95 [ place::row#0 ] : zp[1]:95 , reg byte x , reg byte y , -Potential registers zp[1]:96 [ place::column#0 ] : zp[1]:96 , reg byte x , reg byte y , -Potential registers zp[1]:97 [ place::return#0 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:98 [ queen::$1 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:99 [ queen::$4 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp[2]:100 [ uctoa::buffer#3 ] : zp[2]:100 , -Potential registers zp[1]:102 [ uctoa::digit_value#0 ] : zp[1]:102 , reg byte x , reg byte y , -Potential registers zp[2]:103 [ uctoa_append::buffer#0 ] : zp[2]:103 , -Potential registers zp[1]:105 [ uctoa_append::sub#0 ] : zp[1]:105 , reg byte x , reg byte y , -Potential registers zp[1]:106 [ uctoa_append::return#0 ] : zp[1]:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:107 [ place::$0 ] : zp[1]:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:108 [ diff::return#0 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:109 [ place::$3 ] : zp[1]:109 , reg byte x , reg byte y , -Potential registers zp[1]:110 [ diff::return#1 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp[1]:111 [ place::$4 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y , +Statement [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] ( main:5::queens:16 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] { } ) always clobbers reg byte a +Statement [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] ( main:5::queens:16 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer ] { } ) always clobbers reg byte a +Statement [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 printf_ulong::uvalue#0 printf_buffer ] ( main:5::queens:16::print:31 [ queens::row#10 printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 printf_ulong::uvalue#0 printf_buffer ] { { count#13 = printf_ulong::uvalue#0 } } ) always clobbers reg byte a +Statement [54] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 [ printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 print::i1#2 print::j#2 printf_buffer ] ( main:5::queens:16::print:31 [ queens::row#10 printf_cursor_x printf_cursor_y printf_cursor_ptr count#13 print::i1#2 print::j#2 printf_buffer ] { } ) always clobbers reg byte a +Statement [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] ( main:5::queens:16::print:31::printf_uchar:50 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_uchar::uvalue#2 printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [74] (word) strlen::return#2 ← (word) strlen::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a +Statement [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a +Statement [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::str#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte y +Statement [118] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [119] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } ) always clobbers reg byte a +Statement [123] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return [ printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 [ printf_cursor_y printf_scroll::$4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_scroll::$4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 [ printf_cursor_y printf_cursor_ptr ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [133] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::num#2 memset::str#3 memset::c#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a +Statement [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::str#3 memset::c#4 memset::end#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a +Statement [135] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#4 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a +Statement [137] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a +Statement [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memset:127 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memset:127 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memset::c#4 memset::end#0 memset::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_cls:8::memset:308 [ printf_buffer memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y +Statement [143] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src#2 memcpy::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src#2 memcpy::dst#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_char:91::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_char:91::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#2 = printf_char::ch#3 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:88::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#0 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:95::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#10 printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#1 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_uint:14::printf_number_buffer:277::printf_padding:105::printf_char:112::printf_scroll:121::memcpy:125 [ printf_buffer printf_padding::length#4 printf_padding::pad#5 printf_padding::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_padding::length#2 = printf_padding::length#4 } { printf_char::ch#0 = printf_char::ch#3 printf_padding::pad#5 } } main:5::printf_str:10::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:12::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:37::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:41::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:48::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:56::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_str:59::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_char:156::printf_scroll:121::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } { printf_char::ch#1 = printf_char::ch#3 printf_str::ch#0 } } main:5::printf_str:10::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::printf_str:12::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158::printf_scroll:164::memcpy:125 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr memcpy::src#2 memcpy::dst#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] ( main:5::printf_str:10 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::printf_str:12 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:37 [ queens::row#10 count#13 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:41 [ queens::row#10 count#13 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:48 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:56 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_str:59 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_str::str#10 printf_str::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x [ printf_cursor_y printf_ln::$0 ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$0 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 [ printf_cursor_y printf_ln::$1 ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_ln::$1 ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_ln::$1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 [ printf_cursor_y printf_cursor_ptr ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [162] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::printf_str:10::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::printf_str:12::printf_ln:158 [ printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:37::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:41::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:48::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:56::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_str:59::printf_ln:158 [ queens::row#10 count#13 print::i1#2 print::j#2 printf_buffer printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i1#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::printf_str:100::printf_ln:158 [ queens::row#10 count#13 print::i#2 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::printf_str:100::printf_ln:158 [ queens::row#10 count#13 printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::printf_str:100::printf_ln:158 [ printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::padding#10 printf_str::str#0 printf_cursor_x printf_cursor_y printf_cursor_ptr ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { printf_str::str#1 = printf_str::str#11 printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a +Statement [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 [ strupr::src#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte a reg byte y +Statement [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) [ strupr::src#2 toupper::ch#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::ch#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a reg byte y +Statement [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 [ strupr::src#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } } ) always clobbers reg byte y +Statement [178] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' [ toupper::return#0 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strupr:98::toupper:171 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strupr:98::toupper:171 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strupr:98::toupper:171 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } main:5::printf_uint:14::printf_number_buffer:277::strupr:98::toupper:171 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::padding#10 strupr::src#2 toupper::return#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strupr::str#0 = printf_number_buffer::buffer_digits#10 } { toupper::return#2 = toupper::return#3 } } ) always clobbers reg byte a +Statement [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 [ strlen::len#2 strlen::str#2 ] ( main:5::queens:16::print:31::printf_uchar:50::printf_number_buffer:68::strlen:73 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_uchar:61::printf_number_buffer:68::strlen:73 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::queens:16::print:31::printf_ulong:39::printf_number_buffer:218::strlen:73 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { count#13 = printf_ulong::uvalue#0 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } main:5::printf_uint:14::printf_number_buffer:277::strlen:73 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_digits#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::len#2 strlen::str#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::str#1 = printf_number_buffer::buffer_digits#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a reg byte y +Statement [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) [ printf_buffer uctoa::buffer#11 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#11 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 [ printf_buffer uctoa::buffer#3 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::buffer#3 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a +Statement [192] *((byte*) uctoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 [ printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Statement [209] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) [ uctoa_append::value#2 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( main:5::queens:16::print:31::printf_uchar:50::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i1#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } main:5::queens:16::print:31::printf_uchar:61::uctoa:66::uctoa_append:202 [ queens::row#10 count#13 print::i#2 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 uctoa::value#1 } { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } } ) always clobbers reg byte a +Statement [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_ulong::uvalue#0 printf_buffer ] ( main:5::queens:16::print:31::printf_ulong:39 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_ulong::uvalue#0 printf_buffer ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] ( main:5::queens:16::print:31::printf_ulong:39 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::value#1 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ultoa::$11 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#11 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 [ printf_buffer ultoa::buffer#3 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::buffer#3 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [226] *((byte*) ultoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a reg byte y +Statement [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::$10 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [231] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::started#2 ultoa::buffer#11 ultoa::digit_value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 [ printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::value#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::digit_value#0 ultoa_append::buffer#0 ultoa_append::value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::value#0 ultoa_append::sub#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::return#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 [ printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa::value#0 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } } ) always clobbers reg byte a +Statement [243] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#2 ultoa_append::digit#2 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [244] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) [ ultoa_append::value#2 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::value#2 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [247] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 [ ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] ( main:5::queens:16::print:31::printf_ulong:39::ultoa:216::ultoa_append:237 [ queens::row#10 count#13 printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ultoa::digit#2 ultoa::buffer#11 ultoa_append::buffer#0 ultoa_append::sub#0 ultoa_append::value#1 ultoa_append::digit#1 ] { { count#13 = printf_ulong::uvalue#0 ultoa::value#1 } { ultoa_append::buffer#0 = ultoa::buffer#11 } { ultoa_append::value#0 = ultoa::value#2 } { ultoa_append::sub#0 = ultoa::digit_value#0 } { ultoa_append::return#0 = ultoa_append::value#2 } } ) always clobbers reg byte a +Statement [254] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#2 ] ( main:5::queens:16::legal:24 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a +Statement [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 [ diff::return#3 ] ( main:5::queens:16::legal:24::diff:257 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 diff::return#3 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 } { diff::return#0 = diff::return#4 } } main:5::queens:16::legal:24::diff:262 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#3 ] { { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queens::row#10 } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 [ diff::return#2 ] ( main:5::queens:16::legal:24::diff:257 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 diff::return#2 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } { diff::a#0 = diff::a#2 } { diff::b#0 = diff::b#2 legal::column#0 } { diff::return#0 = diff::return#4 } } main:5::queens:16::legal:24::diff:262 [ printf_cursor_x printf_cursor_y printf_cursor_ptr queens::row#10 count#11 printf_buffer legal::row#0 legal::column#0 legal::i#2 legal::$3 diff::return#2 ] { { legal::return#0 = legal::return#4 } { diff::a#1 = diff::a#2 legal::i#2 } { diff::b#1 = diff::b#2 legal::row#0 queens::row#10 } { diff::return#1 = diff::return#4 } } ) always clobbers reg byte a +Statement [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] ( main:5::printf_uint:14 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a +Statement [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 [ printf_buffer utoa::buffer#11 utoa::$11 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 utoa::$11 ] { } ) always clobbers reg byte a +Statement [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) [ printf_buffer utoa::buffer#11 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#11 ] { } ) always clobbers reg byte a reg byte y +Statement [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::buffer#3 ] { } ) always clobbers reg byte a +Statement [285] *((byte*) utoa::buffer#3) ← (byte) 0 [ printf_buffer ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer ] { } ) always clobbers reg byte a reg byte y +Statement [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { } ) always clobbers reg byte a +Statement [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [290] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { } ) always clobbers reg byte a +Statement [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [294] (word) utoa_append::value#0 ← (word) utoa::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [298] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:5::printf_uint:14::utoa:275 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a +Statement [302] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [303] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) [ utoa_append::value#2 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y +Statement [306] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:5::printf_uint:14::utoa:275::utoa_append:296 [ printf_cursor_x printf_cursor_y printf_cursor_ptr printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a +Statement [309] (byte*) printf_cursor_ptr ← (byte*) 1024 [ printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [310] (byte) printf_cursor_x ← (byte) 0 [ printf_cursor_x printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_x printf_cursor_ptr ] { } ) always clobbers reg byte a +Statement [311] (byte) printf_cursor_y ← (byte) 0 [ printf_cursor_x printf_cursor_y printf_cursor_ptr ] ( main:5::printf_cls:8 [ printf_buffer printf_cursor_x printf_cursor_y printf_cursor_ptr ] { } ) always clobbers reg byte a +Potential registers zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] : zp[1]:2 , reg byte x , +Potential registers zp[4]:3 [ count#11 count#13 ] : zp[4]:3 , +Potential registers zp[1]:7 [ print::i#2 print::i#1 ] : zp[1]:7 , reg byte x , +Potential registers zp[1]:8 [ print::i1#2 print::i1#1 ] : zp[1]:8 , reg byte x , +Potential registers zp[1]:9 [ print::j#2 print::j#1 ] : zp[1]:9 , reg byte x , +Potential registers zp[1]:10 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] : zp[1]:10 , reg byte x , reg byte y , +Potential registers zp[1]:11 [ printf_number_buffer::format_min_length#3 ] : zp[1]:11 , reg byte x , +Potential registers zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] : zp[1]:12 , reg byte x , +Potential registers zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] : zp[1]:13 , reg byte x , +Potential registers zp[2]:14 [ printf_number_buffer::buffer_digits#10 ] : zp[2]:14 , +Potential registers zp[1]:16 [ 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[1]:16 , reg byte x , +Potential registers zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] : zp[1]:17 , reg byte x , +Potential registers zp[1]:18 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] : zp[1]:19 , reg byte x , +Potential registers zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] : zp[1]:20 , reg byte x , +Potential registers zp[1]:21 [ printf_padding::pad#5 ] : zp[1]:21 , reg byte x , +Potential registers zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] : zp[1]:22 , reg byte x , +Potential registers zp[1]:23 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:24 [ memset::num#2 ] : zp[2]:24 , +Potential registers zp[2]:26 [ memset::str#3 ] : zp[2]:26 , +Potential registers zp[1]:28 [ memset::c#4 ] : zp[1]:28 , reg byte x , +Potential registers zp[2]:29 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:29 , +Potential registers zp[2]:31 [ memcpy::src#2 memcpy::src#1 ] : zp[2]:31 , +Potential registers zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 ] : zp[2]:33 , +Potential registers zp[2]:35 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] : zp[2]:35 , +Potential registers zp[2]:37 [ strupr::src#2 strupr::str#0 strupr::src#1 ] : zp[2]:37 , +Potential registers zp[1]:39 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 ] : zp[2]:40 , +Potential registers zp[2]:42 [ strlen::len#2 strlen::len#1 ] : zp[2]:42 , +Potential registers zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] : zp[1]:44 , reg byte x , +Potential registers zp[1]:45 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] : zp[1]:45 , reg byte x , reg byte y , +Potential registers zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] : zp[2]:47 , +Potential registers zp[1]:49 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] : zp[1]:49 , reg byte x , +Potential registers zp[1]:50 [ uctoa_append::digit#2 uctoa_append::digit#1 ] : zp[1]:50 , reg byte x , reg byte y , +Potential registers zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] : zp[1]:51 , reg byte x , +Potential registers zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] : zp[4]:52 , +Potential registers zp[1]:56 [ ultoa::started#2 ultoa::started#4 ] : zp[1]:56 , reg byte x , reg byte y , +Potential registers zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] : zp[2]:57 , +Potential registers zp[4]:59 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] : zp[4]:59 , +Potential registers zp[1]:63 [ ultoa_append::digit#2 ultoa_append::digit#1 ] : zp[1]:63 , reg byte x , reg byte y , +Potential registers zp[1]:64 [ legal::i#2 legal::i#1 ] : zp[1]:64 , reg byte x , reg byte y , +Potential registers zp[1]:65 [ legal::return#4 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:66 [ diff::a#2 diff::a#0 diff::a#1 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:67 [ diff::b#2 diff::b#0 diff::b#1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:68 [ diff::return#4 diff::return#2 diff::return#3 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:69 , reg byte x , +Potential registers zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 ] : zp[2]:70 , +Potential registers zp[1]:72 [ utoa::started#2 utoa::started#4 ] : zp[1]:72 , reg byte x , reg byte y , +Potential registers zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:73 , +Potential registers zp[2]:75 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:75 , +Potential registers zp[1]:77 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:77 , reg byte x , reg byte y , +Potential registers zp[1]:78 [ printf_cursor_x ] : zp[1]:78 , +Potential registers zp[1]:79 [ printf_cursor_y ] : zp[1]:79 , +Potential registers zp[2]:80 [ printf_cursor_ptr ] : zp[2]:80 , +Potential registers zp[1]:82 [ legal::row#0 ] : zp[1]:82 , reg byte x , reg byte y , +Potential registers zp[1]:83 [ legal::column#0 ] : zp[1]:83 , reg byte x , reg byte y , +Potential registers zp[1]:84 [ legal::return#0 ] : zp[1]:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:85 [ queens::$2 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp[4]:86 [ printf_ulong::uvalue#0 ] : zp[4]:86 , +Potential registers zp[2]:90 [ strlen::return#2 ] : zp[2]:90 , +Potential registers zp[2]:92 [ printf_number_buffer::$19 ] : zp[2]:92 , +Potential registers zp[2]:94 [ printf_scroll::$4 ] : zp[2]:94 , +Potential registers zp[2]:96 [ memset::end#0 ] : zp[2]:96 , +Potential registers zp[1]:98 [ printf_str::ch#0 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:99 [ printf_ln::$0 ] : zp[2]:99 , +Potential registers zp[2]:101 [ printf_ln::$1 ] : zp[2]:101 , +Potential registers zp[1]:103 [ toupper::return#3 ] : zp[1]:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:104 [ strupr::$0 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:105 [ uctoa::buffer#3 ] : zp[2]:105 , +Potential registers zp[1]:107 [ uctoa::digit_value#0 ] : zp[1]:107 , reg byte x , reg byte y , +Potential registers zp[2]:108 [ uctoa_append::buffer#0 ] : zp[2]:108 , +Potential registers zp[1]:110 [ uctoa_append::sub#0 ] : zp[1]:110 , reg byte x , reg byte y , +Potential registers zp[1]:111 [ uctoa_append::return#0 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:112 [ ultoa::$11 ] : zp[1]:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:113 [ ultoa::buffer#3 ] : zp[2]:113 , +Potential registers zp[1]:115 [ ultoa::$10 ] : zp[1]:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp[4]:116 [ ultoa::digit_value#0 ] : zp[4]:116 , +Potential registers zp[2]:120 [ ultoa_append::buffer#0 ] : zp[2]:120 , +Potential registers zp[4]:122 [ ultoa_append::sub#0 ] : zp[4]:122 , +Potential registers zp[4]:126 [ ultoa_append::return#0 ] : zp[4]:126 , +Potential registers zp[1]:130 [ legal::$0 ] : zp[1]:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:131 [ diff::return#0 ] : zp[1]:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:132 [ legal::$3 ] : zp[1]:132 , reg byte x , reg byte y , +Potential registers zp[1]:133 [ diff::return#1 ] : zp[1]:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:134 [ legal::$4 ] : zp[1]:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp[1]:135 [ utoa::$11 ] : zp[1]:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:136 [ utoa::buffer#3 ] : zp[2]:136 , +Potential registers zp[1]:138 [ utoa::$10 ] : zp[1]:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp[2]:139 [ utoa::digit_value#0 ] : zp[2]:139 , +Potential registers zp[2]:141 [ utoa_append::buffer#0 ] : zp[2]:141 , +Potential registers zp[2]:143 [ utoa_append::sub#0 ] : zp[2]:143 , +Potential registers zp[2]:145 [ utoa_append::return#0 ] : zp[2]:145 , Potential registers mem[12] [ printf_buffer ] : mem[12] , REGISTER UPLIFT SCOPES -Uplift Scope [memcpy] 30,000,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] 20,000,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] -Uplift Scope [memset] 33,333,333,333,335,670,000,000,000,000,000,000,000,000,000: zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,666,666,666,666,833,500,000,000,000,000,000,000,000,000: zp[2]:71 [ memset::end#0 ] 1,250,000,000,000,000,000,000,000,000,000,000,000,000,000: zp[1]:19 [ memset::c#4 ] 1,000,000,000,000,000,000,000,000,000,000: zp[2]:15 [ memset::num#2 ] 0: zp[2]:17 [ memset::str#3 ] -Uplift Scope [uctoa_append] 25,000,000,000,000,550,000,000,000,000,000,000,000,000: zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] 20,000,000,000,000,500,000,000,000,000,000,000,000,000: zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] 3,333,333,333,333,350,000,000,000,000,000,000,000,000: zp[1]:105 [ uctoa_append::sub#0 ] 200,000,000,000,000,000,000,000,000: zp[1]:106 [ uctoa_append::return#0 ] 137,500,000,000,000,010,000,000,000: zp[2]:103 [ uctoa_append::buffer#0 ] -Uplift Scope [printf_scroll] 200,000,000,000,000,000,000,000,000,000: zp[2]:69 [ printf_scroll::$4 ] -Uplift Scope [toupper] 47,333,333,333,333,330,000,000,000,000: zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] 2,000,000,000,000,000,000,000,000,000: zp[1]:78 [ toupper::return#3 ] -Uplift Scope [printf_char] 13,300,000,000,000,300,000,000,000,000: zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] -Uplift Scope [strupr] 2,714,285,714,286,407,300,000,000,000: zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] 2,000,000,000,000,000,000,000,000,000: zp[1]:79 [ strupr::$0 ] -Uplift Scope [strlen] 3,000,000,000,000,883,000,000,000,000: zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] 1,500,000,000,000,025,000,000,000,000: zp[2]:33 [ strlen::len#2 strlen::len#1 ] 200,000,000,000,002: zp[2]:65 [ strlen::return#2 ] -Uplift Scope [printf_ln] 2,000,000,000,000,000,000,000,000,000: zp[2]:74 [ printf_ln::$0 ] 2,000,000,000,000,000,000,000,000,000: zp[2]:76 [ printf_ln::$1 ] -Uplift Scope [] 2,118,421,052,631,578,800,000,000,000: zp[1]:61 [ printf_cursor_y ] 1,536,423,841,059,602,400,000,000,000: zp[2]:62 [ printf_cursor_ptr ] 297,872,340,425,531,920,000,000,000: zp[1]:60 [ printf_cursor_x ] 0.58: zp[1]:64 [ count ] 0: mem[12] [ printf_buffer ] -Uplift Scope [printf_padding] 2,750,000,000,000,000,400,000,000,000: zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] 166,666,666,667,316,670,000,000,000: zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] 166,666,666,666,666,660,000,000,000: zp[1]:12 [ printf_padding::pad#5 ] -Uplift Scope [uctoa] 383,333,333,333,350,040,000,000,000: zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] 316,666,666,666,755,000,000,000,000: zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] 230,769,230,769,230,770,000,000,000: zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] 160,000,000,000,000,000,000,000,000: zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] 60,000,000,000,000,010,000,000,000: zp[1]:102 [ uctoa::digit_value#0 ] 200,000,000,000,002: zp[2]:100 [ uctoa::buffer#3 ] -Uplift Scope [printf_str] 242,857,142,858,942,900,000,000,000: zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] 100,000,000,000,000,000,000,000,000: zp[1]:73 [ printf_str::ch#0 ] -Uplift Scope [printf_number_buffer] 650,000,000,000,006.5: zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] 119,047,619,047,620.23: zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] 100,000,000,000,001: zp[2]:67 [ printf_number_buffer::$19 ] 35,500,000,000,209.25: zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] 10,344,827,586,207: zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] 10,000,000,000,000.1: zp[1]:2 [ printf_number_buffer::format_min_length#2 ] 9,375,000,000,000.09: zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] 6,451,612,903,225.87: zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] 3,846,153,846,153.88: zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] -Uplift Scope [diff] 45,500,000,000,005: zp[1]:59 [ diff::return#4 diff::return#2 diff::return#3 ] 20,000,000,000,006.5: zp[1]:58 [ diff::b#2 diff::b#0 diff::b#1 ] 18,000,000,000,004.5: zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 ] 2,000,000,000,002: zp[1]:108 [ diff::return#0 ] 2,000,000,000,002: zp[1]:110 [ diff::return#1 ] -Uplift Scope [print] 25,714,285,714,288.29: zp[1]:46 [ print::j#2 print::j#1 ] 3,000,000,000,003: zp[1]:44 [ print::i#2 print::i#1 ] 3,000,000,000,002.36: zp[1]:45 [ print::i1#2 print::i1#1 ] -Uplift Scope [printf_uchar] 10,000,000,000,033: zp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] -Uplift Scope [place] 2,400,000,000,002.4: zp[1]:55 [ place::i#3 place::i#2 ] 2,000,000,000,002: zp[1]:107 [ place::$0 ] 2,000,000,000,002: zp[1]:111 [ place::$4 ] 333,333,333,333.67: zp[1]:109 [ place::$3 ] 200,000,000,002: zp[1]:97 [ place::return#0 ] 116,666,666,666.83: zp[1]:96 [ place::column#0 ] 110,526,315,789.63: zp[1]:95 [ place::row#0 ] 33,333,333,333.67: zp[1]:56 [ place::return#4 ] -Uplift Scope [queen] 200,000,000,002: zp[1]:98 [ queen::$1 ] 200,000,000,002: zp[1]:99 [ queen::$4 ] 29,411,764,706.82: zp[1]:94 [ queen::column ] 21,052,631,579.74: zp[1]:93 [ queen::r ] 22: zp[1]:92 [ queen::row#0 ] -Uplift Scope [utoa_append] 25,055,003.5: zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 20,050,002.5: zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] 3,335,000.5: zp[2]:88 [ utoa_append::sub#0 ] 20,002: zp[2]:90 [ utoa_append::return#0 ] 13,750.25: zp[2]:86 [ utoa_append::buffer#0 ] -Uplift Scope [utoa] 38,003.93: zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 30,717.36: zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] 22,859.43: zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] 20,002: zp[1]:83 [ utoa::$10 ] 15,001.5: zp[1]:38 [ utoa::started#2 utoa::started#4 ] 6,000.6: zp[2]:84 [ utoa::digit_value#0 ] 2,002: zp[1]:80 [ utoa::$11 ] 2,002: zp[2]:81 [ utoa::buffer#3 ] +Uplift Scope [memcpy] 30,000,000,000,000,000,000: zp[2]:31 [ memcpy::src#2 memcpy::src#1 ] 20,000,000,000,000,000,000: zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 ] +Uplift Scope [memset] 335,666,666,666,666,620: zp[2]:29 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 16,833,333,333,333,332: zp[2]:96 [ memset::end#0 ] 12,500,000,000,000,000: zp[1]:28 [ memset::c#4 ] 1,000,000,000,000,001: zp[2]:24 [ memset::num#2 ] 0: zp[2]:26 [ memset::str#3 ] +Uplift Scope [uctoa_append] 25,000,550,000,000,000: zp[1]:49 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] 20,000,500,000,000,000: zp[1]:50 [ uctoa_append::digit#2 uctoa_append::digit#1 ] 3,333,350,000,000,000: zp[1]:110 [ uctoa_append::sub#0 ] 200,000,000,002: zp[1]:111 [ uctoa_append::return#0 ] 137,500,000,000.25: zp[2]:108 [ uctoa_append::buffer#0 ] +Uplift Scope [printf_scroll] 200,000,000,000,002: zp[2]:94 [ printf_scroll::$4 ] +Uplift Scope [toupper] 47,333,333,333,338.66: zp[1]:39 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] 2,000,000,000,002: zp[1]:103 [ toupper::return#3 ] +Uplift Scope [printf_char] 13,030,300,000,010: zp[1]:23 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Uplift Scope [ultoa_append] 2,500,550,000,003.5: zp[4]:59 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] 2,000,500,000,002.5: zp[1]:63 [ ultoa_append::digit#2 ultoa_append::digit#1 ] 333,350,000,000.5: zp[4]:122 [ ultoa_append::sub#0 ] 200,000,002: zp[4]:126 [ ultoa_append::return#0 ] 137,500,000.25: zp[2]:120 [ ultoa_append::buffer#0 ] +Uplift Scope [strupr] 2,714,978,571,432.43: zp[2]:37 [ strupr::src#2 strupr::str#0 strupr::src#1 ] 2,000,000,000,002: zp[1]:104 [ strupr::$0 ] +Uplift Scope [strlen] 3,000,883,333,337.67: zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 ] 1,500,025,000,001.75: zp[2]:42 [ strlen::len#2 strlen::len#1 ] 200,000,002: zp[2]:90 [ strlen::return#2 ] +Uplift Scope [] 2,079,220,779,221.49: zp[1]:79 [ printf_cursor_y ] 1,504,575,163,399.41: zp[2]:80 [ printf_cursor_ptr ] 281,118,881,119.64: zp[1]:78 [ printf_cursor_x ] 1,883.97: zp[4]:3 [ count#11 count#13 ] 0: mem[12] [ printf_buffer ] +Uplift Scope [printf_padding] 2,750,000,000,002.75: zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] 167,316,666,673.33: zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] 166,666,666,666.83: zp[1]:21 [ printf_padding::pad#5 ] +Uplift Scope [uctoa] 383,350,000,004: zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] 316,755,000,004.5: zp[1]:45 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] 230,769,230,771.54: zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] 160,000,000,001.6: zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] 60,000,000,000.6: zp[1]:107 [ uctoa::digit_value#0 ] 200,000,002: zp[2]:105 [ uctoa::buffer#3 ] +Uplift Scope [printf_ln] 200,000,000,002: zp[2]:99 [ printf_ln::$0 ] 200,000,000,002: zp[2]:101 [ printf_ln::$1 ] +Uplift Scope [printf_str] 26,085,714,292.64: zp[2]:35 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] 10,000,000,001: zp[1]:98 [ printf_str::ch#0 ] +Uplift Scope [ultoa] 378,714,289.64: zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] 307,835,718.5: zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] 228,571,430.86: zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] 200,000,002: zp[1]:115 [ ultoa::$10 ] 150,000,001.5: zp[1]:56 [ ultoa::started#2 ultoa::started#4 ] 60,000,000.6: zp[4]:116 [ ultoa::digit_value#0 ] 2,000,002: zp[1]:112 [ ultoa::$11 ] 2,000,002: zp[2]:113 [ ultoa::buffer#3 ] +Uplift Scope [printf_number_buffer] 650,000,006.5: zp[1]:18 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] 119,047,620.24: zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] 100,000,001: zp[2]:92 [ printf_number_buffer::$19 ] 35,705,211.3: zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] 10,344,827.69: zp[2]:14 [ printf_number_buffer::buffer_digits#10 ] 10,000,000.1: zp[1]:11 [ printf_number_buffer::format_min_length#3 ] 9,375,000.09: zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] 6,451,612.97: zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] 3,846,153.88: zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Uplift Scope [diff] 45,500,005: zp[1]:68 [ diff::return#4 diff::return#2 diff::return#3 ] 20,000,006.5: zp[1]:67 [ diff::b#2 diff::b#0 diff::b#1 ] 18,000,004.5: zp[1]:66 [ diff::a#2 diff::a#0 diff::a#1 ] 2,000,002: zp[1]:131 [ diff::return#0 ] 2,000,002: zp[1]:133 [ diff::return#1 ] +Uplift Scope [utoa_append] 25,055,003.5: zp[2]:75 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 20,050,002.5: zp[1]:77 [ utoa_append::digit#2 utoa_append::digit#1 ] 3,335,000.5: zp[2]:143 [ utoa_append::sub#0 ] 20,002: zp[2]:145 [ utoa_append::return#0 ] 13,750.25: zp[2]:141 [ utoa_append::buffer#0 ] +Uplift Scope [print] 25,714,288.29: zp[1]:9 [ print::j#2 print::j#1 ] 3,000,003: zp[1]:7 [ print::i#2 print::i#1 ] 3,000,002.36: zp[1]:8 [ print::i1#2 print::i1#1 ] +Uplift Scope [printf_uchar] 10,000,005.5: zp[1]:10 [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Uplift Scope [legal] 2,400,002.4: zp[1]:64 [ legal::i#2 legal::i#1 ] 2,000,002: zp[1]:130 [ legal::$0 ] 2,000,002: zp[1]:134 [ legal::$4 ] 333,333.67: zp[1]:132 [ legal::$3 ] 111,166.83: zp[1]:83 [ legal::column#0 ] 105,315.95: zp[1]:82 [ legal::row#0 ] 2,002: zp[1]:84 [ legal::return#0 ] 333.67: zp[1]:65 [ legal::return#4 ] +Uplift Scope [utoa] 38,003.93: zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 30,717.36: zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 ] 22,859.43: zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] 20,002: zp[1]:138 [ utoa::$10 ] 15,001.5: zp[1]:72 [ utoa::started#2 utoa::started#4 ] 6,000.6: zp[2]:139 [ utoa::digit_value#0 ] 2,002: zp[1]:135 [ utoa::$11 ] 2,002: zp[2]:136 [ utoa::buffer#3 ] +Uplift Scope [printf_ulong] 36,667.33: zp[4]:86 [ printf_ulong::uvalue#0 ] +Uplift Scope [queens] 5,148: zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] 2,002: zp[1]:85 [ queens::$2 ] Uplift Scope [RADIX] Uplift Scope [printf_format_number] Uplift Scope [printf_buffer_number] @@ -7343,167 +8797,173 @@ Uplift Scope [printf_cls] Uplift Scope [printf_uint] Uplift Scope [main] +Uplifting [memcpy] best 1735184 combination zp[2]:31 [ memcpy::src#2 memcpy::src#1 ] zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 ] +Uplifting [memset] best 1735078 combination zp[2]:29 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:96 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:24 [ memset::num#2 ] zp[2]:26 [ memset::str#3 ] +Uplifting [uctoa_append] best 1613075 combination 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]:110 [ uctoa_append::sub#0 ] reg byte x [ uctoa_append::return#0 ] zp[2]:108 [ uctoa_append::buffer#0 ] +Uplifting [printf_scroll] best 1613075 combination zp[2]:94 [ printf_scroll::$4 ] +Uplifting [toupper] best 1601068 combination reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ] reg byte a [ toupper::return#3 ] +Uplifting [printf_char] best 1598032 combination reg byte a [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] +Uplifting [ultoa_append] best 1592029 combination zp[4]:59 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ] zp[4]:122 [ ultoa_append::sub#0 ] zp[4]:126 [ ultoa_append::return#0 ] zp[2]:120 [ ultoa_append::buffer#0 ] +Uplifting [strupr] best 1586029 combination zp[2]:37 [ strupr::src#2 strupr::str#0 strupr::src#1 ] reg byte a [ strupr::$0 ] +Uplifting [strlen] best 1586029 combination zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 ] zp[2]:42 [ strlen::len#2 strlen::len#1 ] zp[2]:90 [ strlen::return#2 ] +Uplifting [] best 1586029 combination zp[1]:79 [ printf_cursor_y ] zp[2]:80 [ printf_cursor_ptr ] zp[1]:78 [ printf_cursor_x ] zp[4]:3 [ count#11 count#13 ] mem[12] [ printf_buffer ] +Uplifting [printf_padding] best 1586029 combination zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] zp[1]:21 [ printf_padding::pad#5 ] +Uplifting [uctoa] best 1577023 combination zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] zp[1]:107 [ uctoa::digit_value#0 ] zp[2]:105 [ uctoa::buffer#3 ] +Uplifting [printf_ln] best 1577023 combination zp[2]:99 [ printf_ln::$0 ] zp[2]:101 [ printf_ln::$1 ] +Uplifting [printf_str] best 1576903 combination zp[2]:35 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] reg byte a [ printf_str::ch#0 ] +Uplifting [ultoa] best 1575599 combination zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$10 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:116 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$11 ] zp[2]:113 [ ultoa::buffer#3 ] +Uplifting [printf_number_buffer] best 1575585 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:92 [ printf_number_buffer::$19 ] zp[1]:16 [ 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[2]:14 [ printf_number_buffer::buffer_digits#10 ] reg byte x [ printf_number_buffer::format_min_length#3 ] zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] Limited combination testing to 100 combinations of 256 possible. +Uplifting [diff] best 1573181 combination reg byte a [ diff::return#4 diff::return#2 diff::return#3 ] reg byte x [ diff::b#2 diff::b#0 diff::b#1 ] reg byte a [ diff::a#2 diff::a#0 diff::a#1 ] reg byte a [ diff::return#0 ] zp[1]:133 [ diff::return#1 ] Limited combination testing to 100 combinations of 1024 possible. +Uplifting [utoa_append] best 1572578 combination zp[2]:75 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:143 [ utoa_append::sub#0 ] zp[2]:145 [ utoa_append::return#0 ] zp[2]:141 [ utoa_append::buffer#0 ] +Uplifting [print] best 1572578 combination zp[1]:9 [ print::j#2 print::j#1 ] zp[1]:7 [ print::i#2 print::i#1 ] zp[1]:8 [ print::i1#2 print::i1#1 ] +Uplifting [printf_uchar] best 1571975 combination reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ] +Uplifting [legal] best 1569775 combination reg byte y [ legal::i#2 legal::i#1 ] reg byte x [ legal::$0 ] reg byte a [ legal::$4 ] zp[1]:132 [ legal::$3 ] zp[1]:83 [ legal::column#0 ] zp[1]:82 [ legal::row#0 ] zp[1]:84 [ legal::return#0 ] zp[1]:65 [ legal::return#4 ] Limited combination testing to 100 combinations of 20736 possible. -Attempting to uplift remaining variables inzp[1]:19 [ memset::c#4 ] -Attempting to uplift remaining variables inzp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] -Attempting to uplift remaining variables inzp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] -Attempting to uplift remaining variables inzp[1]:105 [ uctoa_append::sub#0 ] -Attempting to uplift remaining variables inzp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] -Attempting to uplift remaining variables inzp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] -Attempting to uplift remaining variables inzp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] -Attempting to uplift remaining variables inzp[1]:61 [ printf_cursor_y ] -Attempting to uplift remaining variables inzp[1]:78 [ toupper::return#3 ] -Attempting to uplift remaining variables inzp[1]:79 [ strupr::$0 ] -Attempting to uplift remaining variables inzp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] -Attempting to uplift remaining variables inzp[1]:60 [ printf_cursor_x ] -Attempting to uplift remaining variables inzp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] -Attempting to uplift remaining variables inzp[1]:106 [ uctoa_append::return#0 ] -Attempting to uplift remaining variables inzp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] -Attempting to uplift remaining variables inzp[1]:12 [ printf_padding::pad#5 ] -Attempting to uplift remaining variables inzp[1]:50 [ uctoa::started#2 uctoa::started#4 ] -Attempting to uplift remaining variables inzp[1]:73 [ printf_str::ch#0 ] -Attempting to uplift remaining variables inzp[1]:102 [ uctoa::digit_value#0 ] -Attempting to uplift remaining variables inzp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] -Attempting to uplift remaining variables inzp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] -Attempting to uplift remaining variables inzp[1]:59 [ diff::return#4 diff::return#2 diff::return#3 ] -Attempting to uplift remaining variables inzp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] -Attempting to uplift remaining variables inzp[1]:46 [ print::j#2 print::j#1 ] -Attempting to uplift remaining variables inzp[1]:58 [ diff::b#2 diff::b#0 diff::b#1 ] -Attempting to uplift remaining variables inzp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 ] -Attempting to uplift remaining variables inzp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] -Attempting to uplift remaining variables inzp[1]:2 [ printf_number_buffer::format_min_length#2 ] -Attempting to uplift remaining variables inzp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] -Attempting to uplift remaining variables inzp[1]:3 [ printf_number_buffer::format_justify_left#10 ] -Attempting to uplift remaining variables inzp[1]:8 [ printf_number_buffer::format_upper_case#10 ] -Attempting to uplift remaining variables inzp[1]:44 [ print::i#2 print::i#1 ] -Attempting to uplift remaining variables inzp[1]:45 [ print::i1#2 print::i1#1 ] -Attempting to uplift remaining variables inzp[1]:55 [ place::i#3 place::i#2 ] -Attempting to uplift remaining variables inzp[1]:107 [ place::$0 ] -Attempting to uplift remaining variables inzp[1]:108 [ diff::return#0 ] -Attempting to uplift remaining variables inzp[1]:110 [ diff::return#1 ] -Attempting to uplift remaining variables inzp[1]:111 [ place::$4 ] -Attempting to uplift remaining variables inzp[1]:109 [ place::$3 ] -Attempting to uplift remaining variables inzp[1]:97 [ place::return#0 ] -Attempting to uplift remaining variables inzp[1]:98 [ queen::$1 ] -Attempting to uplift remaining variables inzp[1]:99 [ queen::$4 ] -Attempting to uplift remaining variables inzp[1]:96 [ place::column#0 ] -Attempting to uplift remaining variables inzp[1]:95 [ place::row#0 ] -Attempting to uplift remaining variables inzp[1]:56 [ place::return#4 ] -Attempting to uplift remaining variables inzp[1]:94 [ queen::column ] -Attempting to uplift remaining variables inzp[1]:93 [ queen::r ] -Attempting to uplift remaining variables inzp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] -Attempting to uplift remaining variables inzp[1]:35 [ utoa::digit#2 utoa::digit#1 ] -Attempting to uplift remaining variables inzp[1]:83 [ utoa::$10 ] -Attempting to uplift remaining variables inzp[1]:38 [ utoa::started#2 utoa::started#4 ] -Attempting to uplift remaining variables inzp[1]:80 [ utoa::$11 ] -Attempting to uplift remaining variables inzp[1]:92 [ queen::row#0 ] -Attempting to uplift remaining variables inzp[1]:64 [ count ] -Coalescing zero page register [ zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 ] ] with [ zp[1]:59 [ diff::return#4 diff::return#2 diff::return#3 ] ] - score: 2 -Coalescing zero page register [ zp[2]:62 [ printf_cursor_ptr ] ] with [ zp[2]:69 [ printf_scroll::$4 ] ] - score: 2 -Coalescing zero page register [ zp[1]:2 [ printf_number_buffer::format_min_length#2 ] ] with [ zp[1]:10 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:5 [ printf_number_buffer::buffer_digits#10 ] ] with [ zp[2]:26 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:12 [ printf_padding::pad#5 ] ] with [ zp[1]:14 [ printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:15 [ memset::num#2 ] ] with [ zp[2]:71 [ memset::end#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:17 [ memset::str#3 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 ] ] with [ zp[1]:78 [ toupper::return#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:33 [ strlen::len#2 strlen::len#1 ] ] with [ zp[2]:65 [ strlen::return#2 ] ] - score: 1 -Coalescing zero page register [ zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 ] ] with [ zp[2]:41 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:36 [ utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:90 [ utoa_append::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:81 [ utoa::buffer#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:86 [ utoa_append::buffer#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:44 [ print::i#2 print::i#1 ] ] with [ zp[1]:47 [ printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] ] with [ zp[1]:53 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:49 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] ] with [ zp[1]:106 [ uctoa_append::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] ] with [ zp[2]:100 [ uctoa::buffer#3 ] ] - score: 1 -Coalescing zero page register [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 ] ] with [ zp[2]:103 [ uctoa_append::buffer#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:56 [ place::return#4 ] ] with [ zp[1]:97 [ place::return#0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:62 [ printf_cursor_ptr printf_scroll::$4 ] ] with [ zp[2]:74 [ printf_ln::$0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:62 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 ] ] with [ zp[2]:76 [ printf_ln::$1 ] ] - score: 1 -Coalescing zero page register [ zp[2]:84 [ utoa::digit_value#0 ] ] with [ zp[2]:88 [ utoa_append::sub#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:92 [ queen::row#0 ] ] with [ zp[1]:93 [ queen::r ] ] - score: 1 -Coalescing zero page register [ zp[1]:94 [ queen::column ] ] with [ zp[1]:96 [ place::column#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:102 [ uctoa::digit_value#0 ] ] with [ zp[1]:105 [ uctoa_append::sub#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:108 [ diff::return#0 ] ] with [ zp[1]:109 [ place::$3 ] ] - score: 1 -Coalescing zero page register [ zp[1]:110 [ diff::return#1 ] ] with [ zp[1]:111 [ place::$4 ] ] - score: 1 -Coalescing zero page register [ zp[1]:12 [ printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ] ] with [ zp[1]:73 [ printf_str::ch#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 ] ] with [ zp[1]:79 [ strupr::$0 ] ] - score: 1 -Coalescing zero page register [ zp[2]:33 [ strlen::len#2 strlen::len#1 strlen::return#2 ] ] with [ zp[2]:67 [ printf_number_buffer::$19 ] ] - score: 1 -Coalescing zero page register [ zp[1]:44 [ print::i#2 print::i#1 printf_uchar::uvalue#3 printf_uchar::uvalue#0 printf_uchar::uvalue#2 printf_uchar::uvalue#1 ] ] with [ zp[1]:45 [ print::i1#2 print::i1#1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:56 [ place::return#4 place::return#0 ] ] with [ zp[1]:98 [ queen::$1 ] ] - score: 1 -Coalescing zero page register [ zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 ] ] with [ zp[1]:110 [ diff::return#1 place::$4 ] ] - score: 1 -Coalescing zero page register [ zp[1]:92 [ queen::row#0 queen::r ] ] with [ zp[1]:95 [ place::row#0 ] ] - score: 1 -Coalescing zero page register [ zp[1]:92 [ queen::row#0 queen::r place::row#0 ] ] with [ zp[1]:99 [ queen::$4 ] ] - score: 1 -Coalescing zero page register [ zp[2]:22 [ memcpy::src#2 memcpy::src#1 ] ] with [ zp[2]:15 [ memset::num#2 memset::end#0 ] ] -Coalescing zero page register [ zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 ] ] with [ zp[2]:17 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] -Coalescing zero page register [ zp[1]:30 [ toupper::return#2 toupper::return#0 toupper::ch#0 toupper::return#3 strupr::$0 ] ] with [ zp[1]:11 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] ] -Coalescing zero page register [ zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 ] ] with [ zp[2]:28 [ strupr::src#2 strupr::str#0 strupr::src#1 ] ] -Coalescing zero page register [ zp[1]:35 [ utoa::digit#2 utoa::digit#1 ] ] with [ zp[1]:2 [ printf_number_buffer::format_min_length#2 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] -Coalescing zero page register [ zp[2]:36 [ 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 ] ] with [ zp[2]:5 [ printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] -Coalescing zero page register [ zp[1]:38 [ utoa::started#2 utoa::started#4 ] ] with [ zp[1]:3 [ printf_number_buffer::format_justify_left#10 ] ] -Coalescing zero page register [ zp[2]:39 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ] ] with [ zp[2]:33 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ] ] -Coalescing zero page register [ zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 ] ] with [ zp[1]:4 [ printf_number_buffer::format_zero_padding#10 ] ] -Coalescing zero page register [ zp[1]:46 [ print::j#2 print::j#1 ] ] with [ zp[1]:7 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] ] -Coalescing zero page register [ zp[1]:48 [ uctoa::digit#2 uctoa::digit#1 ] ] with [ zp[1]:8 [ printf_number_buffer::format_upper_case#10 ] ] -Coalescing zero page register [ zp[1]:49 [ 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 ] ] with [ zp[1]:9 [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] ] -Coalescing zero page register [ zp[1]:50 [ uctoa::started#2 uctoa::started#4 ] ] with [ zp[1]:12 [ printf_padding::pad#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 printf_str::ch#0 ] ] -Coalescing zero page register [ zp[1]:54 [ uctoa_append::digit#2 uctoa_append::digit#1 ] ] with [ zp[1]:13 [ printf_padding::i#2 printf_padding::i#1 ] ] -Coalescing zero page register [ zp[1]:55 [ place::i#3 place::i#2 ] ] with [ zp[1]:19 [ memset::c#4 ] ] -Coalescing zero page register [ zp[1]:56 [ place::return#4 place::return#0 queen::$1 ] ] with [ zp[1]:44 [ 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 ] ] -Coalescing zero page register [ zp[1]:80 [ utoa::$11 ] ] with [ zp[1]:57 [ diff::a#2 diff::a#0 diff::a#1 diff::return#4 diff::return#2 diff::return#3 diff::return#1 place::$4 ] ] -Coalescing zero page register [ zp[1]:83 [ utoa::$10 ] ] with [ zp[1]:58 [ diff::b#2 diff::b#0 diff::b#1 ] ] -Coalescing zero page register [ zp[2]:84 [ utoa::digit_value#0 utoa_append::sub#0 ] ] with [ zp[2]:51 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] -Coalescing zero page register [ zp[1]:107 [ place::$0 ] ] with [ zp[1]:102 [ uctoa::digit_value#0 uctoa_append::sub#0 ] ] -Coalescing zero page register [ zp[2]:31 [ strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 ] ] with [ zp[2]:22 [ memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ] ] -Coalescing zero page register [ zp[2]:39 [ 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 ] ] with [ zp[2]:24 [ memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] -Coalescing zero page register [ zp[1]:49 [ 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 ] ] with [ zp[1]:30 [ 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 ] ] -Coalescing zero page register [ zp[1]:80 [ 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 ] ] with [ zp[1]:43 [ utoa_append::digit#2 utoa_append::digit#1 printf_number_buffer::format_zero_padding#10 ] ] -Coalescing zero page register [ zp[1]:83 [ utoa::$10 diff::b#2 diff::b#0 diff::b#1 ] ] with [ zp[1]:46 [ print::j#2 print::j#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] ] -Coalescing zero page register [ zp[1]:107 [ place::$0 uctoa::digit_value#0 uctoa_append::sub#0 ] ] with [ zp[1]:35 [ utoa::digit#2 utoa::digit#1 printf_number_buffer::format_min_length#2 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] ] -Coalescing zero page register [ zp[1]:108 [ diff::return#0 place::$3 ] ] with [ zp[1]:38 [ utoa::started#2 utoa::started#4 printf_number_buffer::format_justify_left#10 ] ] -Coalescing zero page register [ zp[2]:84 [ utoa::digit_value#0 utoa_append::sub#0 uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] with [ zp[2]:31 [ 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 ] ] -Allocated (was zp[2]:36) 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 ] -Allocated (was zp[2]:39) 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 ] -Allocated (was zp[1]:48) zp[1]:6 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_upper_case#10 ] -Allocated (was zp[1]:49) 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 ] -Allocated (was zp[1]:50) 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 ] -Allocated (was zp[1]:54) zp[1]:9 [ uctoa_append::digit#2 uctoa_append::digit#1 printf_padding::i#2 printf_padding::i#1 ] -Allocated (was zp[1]:55) zp[1]:10 [ place::i#3 place::i#2 memset::c#4 ] -Allocated (was zp[1]:56) 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 ] -Allocated (was zp[1]:60) zp[1]:12 [ printf_cursor_x ] -Allocated (was zp[1]:61) zp[1]:13 [ printf_cursor_y ] -Allocated (was zp[2]:62) zp[2]:14 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ] -Allocated (was zp[1]:64) zp[1]:16 [ count ] -Allocated (was zp[1]:80) 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 ] -Allocated (was zp[1]:83) 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 ] -Allocated (was zp[2]:84) 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 ] -Allocated (was zp[1]:92) zp[1]:21 [ queen::row#0 queen::r place::row#0 queen::$4 ] -Allocated (was zp[1]:94) zp[1]:22 [ queen::column place::column#0 ] -Allocated (was zp[1]:107) 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 ] -Allocated (was zp[1]:108) zp[1]:24 [ diff::return#0 place::$3 utoa::started#2 utoa::started#4 printf_number_buffer::format_justify_left#10 ] +Uplifting [utoa] best 1569641 combination zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 ] zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:139 [ utoa::digit_value#0 ] reg byte a [ utoa::$11 ] zp[2]:136 [ utoa::buffer#3 ] +Uplifting [printf_ulong] best 1569641 combination zp[4]:86 [ printf_ulong::uvalue#0 ] +Uplifting [queens] best 1569581 combination zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] reg byte a [ queens::$2 ] +Uplifting [RADIX] best 1569581 combination +Uplifting [printf_format_number] best 1569581 combination +Uplifting [printf_buffer_number] best 1569581 combination +Uplifting [printf_format_string] best 1569581 combination +Uplifting [printf_cls] best 1569581 combination +Uplifting [printf_uint] best 1569581 combination +Uplifting [main] best 1569581 combination +Attempting to uplift remaining variables inzp[1]:110 [ uctoa_append::sub#0 ] +Uplifting [uctoa_append] best 1569581 combination zp[1]:110 [ uctoa_append::sub#0 ] +Attempting to uplift remaining variables inzp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] +Uplifting [printf_padding] best 1569581 combination zp[1]:22 [ printf_padding::i#2 printf_padding::i#1 ] +Attempting to uplift remaining variables inzp[1]:79 [ printf_cursor_y ] +Uplifting [] best 1569581 combination zp[1]:79 [ printf_cursor_y ] +Attempting to uplift remaining variables inzp[1]:78 [ printf_cursor_x ] +Uplifting [] best 1569581 combination zp[1]:78 [ printf_cursor_x ] +Attempting to uplift remaining variables inzp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] +Uplifting [uctoa] best 1569581 combination zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Uplifting [printf_padding] best 1569581 combination zp[1]:20 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Attempting to uplift remaining variables inzp[1]:21 [ printf_padding::pad#5 ] +Uplifting [printf_padding] best 1569581 combination zp[1]:21 [ printf_padding::pad#5 ] +Attempting to uplift remaining variables inzp[1]:46 [ uctoa::started#2 uctoa::started#4 ] +Uplifting [uctoa] best 1569581 combination zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] +Attempting to uplift remaining variables inzp[1]:107 [ uctoa::digit_value#0 ] +Uplifting [uctoa] best 1569581 combination zp[1]:107 [ uctoa::digit_value#0 ] +Attempting to uplift remaining variables inzp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] +Uplifting [ultoa] best 1569581 combination zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Uplifting [printf_number_buffer] best 1569581 combination zp[1]:19 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Attempting to uplift remaining variables inzp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Uplifting [printf_number_buffer] best 1569581 combination zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] +Attempting to uplift remaining variables inzp[1]:9 [ print::j#2 print::j#1 ] +Uplifting [print] best 1569581 combination zp[1]:9 [ print::j#2 print::j#1 ] +Attempting to uplift remaining variables inzp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] +Uplifting [printf_number_buffer] best 1569581 combination zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] +Attempting to uplift remaining variables inzp[1]:12 [ printf_number_buffer::format_justify_left#10 ] +Uplifting [printf_number_buffer] best 1569581 combination zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] +Attempting to uplift remaining variables inzp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Uplifting [printf_number_buffer] best 1569581 combination zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] +Attempting to uplift remaining variables inzp[1]:7 [ print::i#2 print::i#1 ] +Uplifting [print] best 1569581 combination zp[1]:7 [ print::i#2 print::i#1 ] +Attempting to uplift remaining variables inzp[1]:8 [ print::i1#2 print::i1#1 ] +Uplifting [print] best 1569581 combination zp[1]:8 [ print::i1#2 print::i1#1 ] +Attempting to uplift remaining variables inzp[1]:133 [ diff::return#1 ] +Uplifting [diff] best 1568981 combination reg byte a [ diff::return#1 ] +Attempting to uplift remaining variables inzp[1]:132 [ legal::$3 ] +Uplifting [legal] best 1568981 combination zp[1]:132 [ legal::$3 ] +Attempting to uplift remaining variables inzp[1]:83 [ legal::column#0 ] +Uplifting [legal] best 1568981 combination zp[1]:83 [ legal::column#0 ] +Attempting to uplift remaining variables inzp[1]:82 [ legal::row#0 ] +Uplifting [legal] best 1568981 combination zp[1]:82 [ legal::row#0 ] +Attempting to uplift remaining variables inzp[1]:69 [ utoa::digit#2 utoa::digit#1 ] +Uplifting [utoa] best 1568981 combination zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] +Attempting to uplift remaining variables inzp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] +Uplifting [queens] best 1568981 combination zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] +Attempting to uplift remaining variables inzp[1]:84 [ legal::return#0 ] +Uplifting [legal] best 1568921 combination reg byte a [ legal::return#0 ] +Attempting to uplift remaining variables inzp[1]:65 [ legal::return#4 ] +Uplifting [legal] best 1568885 combination reg byte a [ legal::return#4 ] +Coalescing zero page register [ zp[2]:80 [ printf_cursor_ptr ] ] with [ zp[2]:94 [ printf_scroll::$4 ] ] - score: 2 +Coalescing zero page register [ zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 ] ] with [ zp[1]:82 [ legal::row#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:3 [ count#11 count#13 ] ] with [ zp[4]:86 [ printf_ulong::uvalue#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:14 [ printf_number_buffer::buffer_digits#10 ] ] with [ zp[2]:35 [ printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:24 [ memset::num#2 ] ] with [ zp[2]:96 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:26 [ memset::str#3 ] ] with [ zp[2]:29 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:42 [ strlen::len#2 strlen::len#1 ] ] with [ zp[2]:90 [ strlen::return#2 ] ] - score: 1 +Coalescing zero page register [ zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] ] with [ zp[2]:105 [ uctoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 ] ] with [ zp[2]:108 [ uctoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] ] with [ zp[4]:59 [ ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] ] - score: 1 +Coalescing zero page register [ zp[4]:52 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ] ] with [ zp[4]:126 [ ultoa_append::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] ] with [ zp[2]:113 [ ultoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ] ] with [ zp[2]:120 [ ultoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 ] ] with [ zp[2]:75 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] - score: 1 +Coalescing zero page register [ zp[2]:70 [ utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:145 [ utoa_append::return#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:136 [ utoa::buffer#3 ] ] - score: 1 +Coalescing zero page register [ zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:141 [ utoa_append::buffer#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:80 [ printf_cursor_ptr printf_scroll::$4 ] ] with [ zp[2]:99 [ printf_ln::$0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:80 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 ] ] with [ zp[2]:101 [ printf_ln::$1 ] ] - score: 1 +Coalescing zero page register [ zp[1]:107 [ uctoa::digit_value#0 ] ] with [ zp[1]:110 [ uctoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[4]:116 [ ultoa::digit_value#0 ] ] with [ zp[4]:122 [ ultoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:139 [ utoa::digit_value#0 ] ] with [ zp[2]:143 [ utoa_append::sub#0 ] ] - score: 1 +Coalescing zero page register [ zp[2]:42 [ strlen::len#2 strlen::len#1 strlen::return#2 ] ] with [ zp[2]:92 [ printf_number_buffer::$19 ] ] - score: 1 +Coalescing zero page register [ zp[2]:31 [ memcpy::src#2 memcpy::src#1 ] ] with [ zp[2]:24 [ memset::num#2 memset::end#0 ] ] +Coalescing zero page register [ zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 ] ] with [ zp[2]:26 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] +Coalescing zero page register [ zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 ] ] with [ zp[2]:37 [ strupr::src#2 strupr::str#0 strupr::src#1 ] ] +Coalescing zero page register [ zp[1]:44 [ uctoa::digit#2 uctoa::digit#1 ] ] with [ zp[1]:12 [ printf_number_buffer::format_justify_left#10 ] ] +Coalescing zero page register [ zp[1]:46 [ uctoa::started#2 uctoa::started#4 ] ] with [ zp[1]:13 [ printf_number_buffer::format_zero_padding#10 ] ] +Coalescing zero page register [ zp[2]:47 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] with [ zp[2]:14 [ printf_number_buffer::buffer_digits#10 printf_str::str#10 printf_str::str#11 printf_str::str#1 printf_str::str#0 ] ] +Coalescing zero page register [ zp[1]:51 [ ultoa::digit#2 ultoa::digit#1 ] ] with [ zp[1]:16 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] ] +Coalescing zero page register [ zp[2]:57 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 ] ] with [ zp[2]:42 [ strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ] ] +Coalescing zero page register [ zp[1]:69 [ utoa::digit#2 utoa::digit#1 ] ] with [ zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 legal::row#0 ] ] +Coalescing zero page register [ zp[1]:83 [ legal::column#0 ] ] with [ zp[1]:7 [ print::i#2 print::i#1 ] ] +Coalescing zero page register [ zp[1]:107 [ uctoa::digit_value#0 uctoa_append::sub#0 ] ] with [ zp[1]:17 [ printf_number_buffer::format_upper_case#10 ] ] +Coalescing zero page register [ zp[1]:132 [ legal::$3 ] ] with [ zp[1]:8 [ print::i1#2 print::i1#1 ] ] +Coalescing zero page register [ zp[2]:40 [ strlen::str#2 strlen::str#1 strlen::str#0 strupr::src#2 strupr::str#0 strupr::src#1 ] ] with [ zp[2]:31 [ memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ] ] +Coalescing zero page register [ zp[2]:57 [ 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 ] ] with [ zp[2]:33 [ memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] +Coalescing zero page register [ zp[2]:70 [ 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 ] ] with [ zp[2]:47 [ 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 ] ] +Coalescing zero page register [ zp[2]:73 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ] ] with [ zp[2]:40 [ 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 ] ] +Coalescing zero page register [ zp[2]:139 [ utoa::digit_value#0 utoa_append::sub#0 ] ] with [ zp[2]:57 [ 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 ] ] +Allocated (was zp[4]:3) zp[4]:2 [ count#11 count#13 printf_ulong::uvalue#0 ] +Allocated (was zp[1]:9) zp[1]:6 [ print::j#2 print::j#1 ] +Allocated (was zp[1]:19) zp[1]:7 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] +Allocated (was zp[1]:20) zp[1]:8 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ] +Allocated (was zp[1]:21) zp[1]:9 [ printf_padding::pad#5 ] +Allocated (was zp[1]:22) zp[1]:10 [ printf_padding::i#2 printf_padding::i#1 ] +Allocated (was zp[1]:44) zp[1]:11 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_justify_left#10 ] +Allocated (was zp[1]:46) zp[1]:12 [ uctoa::started#2 uctoa::started#4 printf_number_buffer::format_zero_padding#10 ] +Allocated (was zp[1]:51) 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 ] +Allocated (was zp[4]:52) 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 ] +Allocated (was zp[1]:69) zp[1]:18 [ utoa::digit#2 utoa::digit#1 queens::row#10 queens::row#1 queens::row#2 legal::row#0 ] +Allocated (was zp[2]:70) 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 ] +Allocated (was zp[2]:73) 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 ] +Allocated (was zp[1]:78) zp[1]:23 [ printf_cursor_x ] +Allocated (was zp[1]:79) zp[1]:24 [ printf_cursor_y ] +Allocated (was zp[2]:80) zp[2]:25 [ printf_cursor_ptr printf_scroll::$4 printf_ln::$0 printf_ln::$1 ] +Allocated (was zp[1]:83) zp[1]:27 [ legal::column#0 print::i#2 print::i#1 ] +Allocated (was zp[1]:107) zp[1]:28 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_number_buffer::format_upper_case#10 ] +Allocated (was zp[4]:116) zp[4]:29 [ ultoa::digit_value#0 ultoa_append::sub#0 ] +Allocated (was zp[1]:132) zp[1]:33 [ legal::$3 print::i1#2 print::i1#1 ] +Allocated (was zp[2]:139) 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 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments // 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. // Upstart .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 - .const STACK_BASE = $103 .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c - .label printf_cursor_x = $c - .label printf_cursor_y = $d - .label printf_cursor_ptr = $e - .label count = $10 + .label printf_cursor_x = $17 + .label printf_cursor_y = $18 + .label printf_cursor_ptr = $19 + // The number of found solutions + .label count = 2 // @begin __bbegin: jmp __b1 @@ -7523,486 +8983,775 @@ __b1: sta.z printf_cursor_ptr lda #>$400 sta.z printf_cursor_ptr+1 + // [4] phi from @1 to @2 [phi:@1->@2] +__b2_from___b1: jmp __b2 // @2 __b2: - // [4] (byte) count ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z count - // [5] phi from @2 to @3 [phi:@2->@3] -__b3_from___b2: - jmp __b3 - // @3 -__b3: - // [6] call main - // [8] phi from @3 to main [phi:@3->main] -main_from___b3: + // [5] call main + // [7] phi from @2 to main [phi:@2->main] +main_from___b2: jsr main - // [7] phi from @3 to @end [phi:@3->@end] -__bend_from___b3: + // [6] phi from @2 to @end [phi:@2->@end] +__bend_from___b2: jmp __bend // @end __bend: // main main: { - // [9] call printf_cls - // [171] phi from main to printf_cls [phi:main->printf_cls] + // [8] call printf_cls + // [307] phi from main to printf_cls [phi:main->printf_cls] printf_cls_from_main: jsr printf_cls - // [10] phi from main to main::@1 [phi:main->main::@1] + // [9] phi from main to main::@1 [phi:main->main::@1] __b1_from_main: jmp __b1 // main::@1 __b1: - // [11] call printf_str - // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] + // [10] call printf_str + // [148] phi from main::@1 to printf_str [phi:main::@1->printf_str] printf_str_from___b1: - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 lda #str sta.z printf_str.str+1 jsr printf_str - // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] __b2_from___b1: jmp __b2 // main::@2 __b2: - // [13] call printf_str - // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] + // [12] call printf_str + // [148] phi from main::@2 to printf_str [phi:main::@2->printf_str] printf_str_from___b2: - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 lda #str1 sta.z printf_str.str+1 jsr printf_str - // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [13] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: - // [15] call printf_uint - // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + // [14] call printf_uint + // [273] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] printf_uint_from___b3: jsr printf_uint + // [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + __b4_from___b3: jmp __b4 // main::@4 __b4: - // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 - lda #1 - pha - // [17] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla + // [16] call queens + // [18] phi from main::@4 to queens [phi:main::@4->queens] + queens_from___b4: + jsr queens jmp __breturn // main::@return __breturn: - // [19] return + // [17] return rts - str: .text " - N Queens Problem Using Backtracking -" + str: .text " - n queens problem using backtracking -" .byte 0 - str1: .text @"\n\nNumber of Queens:" + str1: .text @"\nNumber of queens:" .byte 0 } - // printf_uint -// Print an unsigned int using a specific format -printf_uint: { - .label uvalue = 8 - .const format_min_length = 0 - .const format_justify_left = 0 - .const format_zero_padding = 0 - .const format_upper_case = 0 + // queens +// 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 +queens: { + // The current row where the queen is moving + .label row = $12 + // [19] phi from queens to queens::@1 [phi:queens->queens::@1] + __b1_from_queens: + // [19] phi (dword) count#11 = (dword) 0 [phi:queens->queens::@1#0] -- vduz1=vduc1 + lda #<0 + sta.z count + lda #>0 + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [19] phi (byte) queens::row#10 = (byte) 1 [phi:queens->queens::@1#1] -- vbuz1=vbuc1 + lda #1 + sta.z row jmp __b1 - // printf_uint::@1 + // queens::@1 __b1: - // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + jmp __b2 + // queens::@2 + __b2: + // [20] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + ldx.z row + inc board,x + // [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 -- pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1 + ldy.z row + lda board,y + cmp #8+1 + beq __b3 + jmp __b7 + // queens::@7 + __b7: + // [22] (byte) legal::row#0 ← (byte) queens::row#10 + // [23] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy.z row + lda board,y + sta.z legal.column + // [24] call legal + // [248] phi from queens::@7 to legal [phi:queens::@7->legal] + legal_from___b7: + jsr legal + // [25] (byte) legal::return#0 ← (byte) legal::return#4 + jmp __b9 + // queens::@9 + __b9: + // [26] (byte~) queens::$2 ← (byte) legal::return#0 + // [27] if((byte) 0!=(byte~) queens::$2) goto queens::@4 -- vbuc1_neq_vbuaa_then_la1 + // check if the current position on row 1-row is legal + cmp #0 + bne __b4 + // [19] phi from queens::@5 queens::@6 queens::@8 queens::@9 to queens::@1 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1] + __b1_from___b5: + __b1_from___b6: + __b1_from___b8: + __b1_from___b9: + // [19] phi (dword) count#11 = (dword) count#13 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#0] -- register_copy + // [19] phi (byte) queens::row#10 = (byte) queens::row#10 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#1] -- register_copy + jmp __b1 + // queens::@4 + __b4: + // [28] if((byte) queens::row#10==(byte) 8) goto queens::@5 -- vbuz1_eq_vbuc1_then_la1 + // position is legal - move up to the next row + lda #8 + cmp.z row + beq __b5_from___b4 + jmp __b6 + // queens::@6 + __b6: + // [29] (byte) queens::row#1 ← ++ (byte) queens::row#10 -- vbuz1=_inc_vbuz1 + inc.z row + jmp __b1_from___b6 + // [30] phi from queens::@4 to queens::@5 [phi:queens::@4->queens::@5] + __b5_from___b4: + jmp __b5 + // queens::@5 + __b5: + // [31] call print + // We have a complete legal board - print it! + jsr print + jmp __b1_from___b5 + // queens::@3 + __b3: + // [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + // We moved past the end of the row - reset position and go down to the lower row + lda #0 + ldy.z row + sta board,y + // [33] if((byte) queens::row#10==(byte) 1) goto queens::@return -- vbuz1_eq_vbuc1_then_la1 + lda #1 + cmp.z row + beq __breturn + jmp __b8 + // queens::@8 + __b8: + // [34] (byte) queens::row#2 ← -- (byte) queens::row#10 -- vbuz1=_dec_vbuz1 + dec.z row + jmp __b1_from___b8 + // queens::@return + __breturn: + // [35] return + rts +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $1b + .label i1 = $21 + .label j = 6 + // [36] (dword) count#13 ← ++ (dword) count#11 -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // [37] call printf_str + // [148] phi from print to printf_str [phi:print->printf_str] + printf_str_from_print: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + jmp __b11 + // print::@11 + __b11: + // [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 + // [39] call printf_ulong + // [213] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + printf_ulong_from___b11: + jsr printf_ulong + // [40] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + __b12_from___b11: + jmp __b12 + // print::@12 + __b12: + // [41] call printf_str + // [148] phi from print::@12 to printf_str [phi:print::@12->printf_str] + printf_str_from___b12: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [42] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + __b1_from___b12: + // [42] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + jmp __b1 + // print::@1 + __b1: + // [43] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [44] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + __b3_from___b1: + // [44] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + jmp __b3 + // print::@3 + __b3: + // [45] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4_from___b3 + jmp __breturn + // print::@return + __breturn: + // [46] return + rts + // [47] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + __b4_from___b3: + jmp __b4 + // print::@4 + __b4: + // [48] call printf_str + // [148] phi from print::@4 to printf_str [phi:print::@4->printf_str] + printf_str_from___b4: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + jmp __b14 + // print::@14 + __b14: + // [49] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 -- vbuxx=vbuz1 + ldx.z i1 + // [50] call printf_uchar + // [63] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + printf_uchar_from___b14: + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [51] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + __b5_from___b14: + // [51] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + jmp __b5 + // print::@5 + __b5: + // [52] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + jmp __b7 + // print::@7 + __b7: + // [53] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [44] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + __b3_from___b7: + // [44] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // [54] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8_from___b6 + // [55] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + __b10_from___b6: + jmp __b10 + // print::@10 + __b10: + // [56] call printf_str + // [148] phi from print::@10 to printf_str [phi:print::@10->printf_str] + printf_str_from___b10: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@9 + __b9: + // [57] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [51] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + __b5_from___b9: + // [51] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [58] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + __b8_from___b6: + jmp __b8 + // print::@8 + __b8: + // [59] call printf_str + // [148] phi from print::@8 to printf_str [phi:print::@8->printf_str] + printf_str_from___b8: + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // [60] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 -- vbuxx=vbuz1 + ldx.z i + // [61] call printf_uchar + // [63] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + printf_uchar_from___b2: + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + jmp __b13 + // print::@13 + __b13: + // [62] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [42] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + __b1_from___b13: + // [42] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte register(X) uvalue) +printf_uchar: { + jmp __b1 + // printf_uchar::@1 + __b1: + // [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Handle any sign lda #0 sta printf_buffer - // [22] call utoa + // [65] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 + // [66] call uctoa // Format number into buffer - // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] - utoa_from___b1: - jsr utoa + // [187] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + uctoa_from___b1: + jsr uctoa jmp __b2 - // printf_uint::@2 + // printf_uchar::@2 __b2: - // [23] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + // [67] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 lda printf_buffer sta.z printf_number_buffer.buffer_sign - // [24] call printf_number_buffer + // [68] call printf_number_buffer // Print using format - // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + // [70] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] printf_number_buffer_from___b2: - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #format_upper_case + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #format_zero_padding + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - lda #format_justify_left + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - lda #format_min_length - sta.z printf_number_buffer.format_min_length + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + ldx #0 jsr printf_number_buffer jmp __breturn - // printf_uint::@return + // printf_uchar::@return __breturn: - // [25] return + // [69] return rts } // printf_number_buffer // Print the contents of the number buffer using a specific format. // This handles minimum length, zero-filling, and left/right justification from the format -// printf_number_buffer(byte zp($12) buffer_sign, byte* zp(2) buffer_digits, byte zp($17) format_min_length, byte zp($18) format_justify_left, byte zp($11) format_zero_padding, byte zp(6) format_upper_case) +// printf_number_buffer(byte zp($d) buffer_sign, byte* zp($13) buffer_digits, byte register(X) format_min_length, byte zp($b) format_justify_left, byte zp($c) format_zero_padding, byte zp($1c) format_upper_case) printf_number_buffer: { - .label __19 = 4 - .label buffer_sign = $12 - .label len = 7 - .label padding = $17 - .label format_min_length = $17 - .label format_zero_padding = $11 - .label format_justify_left = $18 - .label buffer_digits = 2 - .label format_upper_case = 6 - // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 - lda #0 - cmp.z format_min_length + .label __19 = $22 + .label buffer_sign = $d + .label padding = 7 + .label format_zero_padding = $c + .label format_justify_left = $b + .label buffer_digits = $13 + .label format_upper_case = $1c + // [71] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuxx_then_la1 + cpx #0 beq __b1_from_printf_number_buffer jmp __b6 // printf_number_buffer::@6 __b6: - // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strlen.str lda.z buffer_digits+1 sta.z strlen.str+1 - // [29] call strlen - // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + // [73] call strlen + // [181] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] strlen_from___b6: jsr strlen - // [30] (word) strlen::return#2 ← (word) strlen::len#2 + // [74] (word) strlen::return#2 ← (word) strlen::len#2 jmp __b14 // printf_number_buffer::@14 __b14: - // [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 -- vbsz1=_sbyte_vwuz2 + // [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 + // [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1 // There is a minimum length - work out the padding lda.z __19 - sta.z len - // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + tay + // [77] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b13_from___b14 jmp __b7 // printf_number_buffer::@7 __b7: - // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 - inc.z len - // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + // [78] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsyy=_inc_vbsyy + iny + // [79] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] __b13_from___b14: __b13_from___b7: - // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + // [79] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy jmp __b13 // printf_number_buffer::@13 __b13: - // [36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsz1_minus_vbsz2 - lda.z padding + // [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsxx_minus_vbsyy + txa + sty.z $ff sec - sbc.z len + sbc.z $ff sta.z padding - // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + // [81] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 lda.z padding cmp #0 bpl __b21_from___b13 - // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + // [83] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] __b1_from_printf_number_buffer: __b1_from___b13: - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 lda #0 sta.z padding jmp __b1 - // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + // [82] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] __b21_from___b13: jmp __b21 // printf_number_buffer::@21 __b21: - // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + // [83] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] __b1_from___b21: - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy jmp __b1 // printf_number_buffer::@1 __b1: - // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [84] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_justify_left bne __b2 jmp __b17 // printf_number_buffer::@17 __b17: - // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [85] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding bne __b2 jmp __b16 // printf_number_buffer::@16 __b16: - // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + // [86] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b8 jmp __b2 // printf_number_buffer::@8 __b8: - // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [87] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [44] call printf_padding - // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + // [88] call printf_padding + // [107] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] printf_padding_from___b8: - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy jsr printf_padding jmp __b2 // printf_number_buffer::@2 __b2: - // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + // [89] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b3 jmp __b9 // printf_number_buffer::@9 __b9: - // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + // [90] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuaa=vbuz1 lda.z buffer_sign - sta.z printf_char.ch - // [47] call printf_char - // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + // [91] call printf_char + // [114] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] printf_char_from___b9: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy jsr printf_char jmp __b3 // printf_number_buffer::@3 __b3: - // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + // [92] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding beq __b4 jmp __b18 // printf_number_buffer::@18 __b18: - // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + // [93] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b10 jmp __b4 // printf_number_buffer::@10 __b10: - // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [94] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [51] call printf_padding - // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + // [95] call printf_padding + // [107] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] printf_padding_from___b10: - // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 lda #'0' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy jsr printf_padding jmp __b4 // printf_number_buffer::@4 __b4: - // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + // [96] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_upper_case beq __b5 jmp __b11 // printf_number_buffer::@11 __b11: - // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strupr.str lda.z buffer_digits+1 sta.z strupr.str+1 - // [54] call strupr - // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + // [98] call strupr + // [166] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] strupr_from___b11: jsr strupr jmp __b5 // printf_number_buffer::@5 __b5: - // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 - // [56] call printf_str - // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + // [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + // [100] call printf_str + // [148] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] printf_str_from___b5: - // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + // [148] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy jsr printf_str jmp __b15 // printf_number_buffer::@15 __b15: - // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + // [101] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_justify_left beq __breturn jmp __b20 // printf_number_buffer::@20 __b20: - // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + // [102] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding bne __breturn jmp __b19 // printf_number_buffer::@19 __b19: - // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + // [103] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 lda #0 cmp.z padding bne __b12 jmp __breturn // printf_number_buffer::@12 __b12: - // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [104] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [61] call printf_padding - // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + // [105] call printf_padding + // [107] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] printf_padding_from___b12: - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy jsr printf_padding jmp __breturn // printf_number_buffer::@return __breturn: - // [62] return + // [106] return rts } // printf_padding // Print a padding char a number of times -// printf_padding(byte zp(8) pad, byte zp(7) length) +// printf_padding(byte zp(9) pad, byte zp(8) length) printf_padding: { - .label i = 9 - .label length = 7 - .label pad = 8 - // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + .label i = $a + .label length = 8 + .label pad = 9 + // [108] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] __b1_from_printf_padding: - // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + // [108] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 // printf_padding::@1 __b1: - // [65] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 + // [109] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2 -- vbuz1_lt_vbuz2_then_la1 lda.z i cmp.z length bcc __b2 jmp __breturn // printf_padding::@return __breturn: - // [66] return + // [110] return rts // printf_padding::@2 __b2: - // [67] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 - // [68] call printf_char - // [70] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] + // [111] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 -- vbuaa=vbuz1 + lda.z pad + // [112] call printf_char + // [114] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] printf_char_from___b2: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy jsr printf_char jmp __b3 // printf_padding::@3 __b3: - // [69] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 + // [113] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2 -- vbuz1=_inc_vbuz1 inc.z i - // [64] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] + // [108] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] __b1_from___b3: - // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + // [108] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy jmp __b1 } // printf_char // Print a single char // If the end of the screen is reached scroll it up one char and place the cursor at the -// printf_char(byte zp(8) ch) +// printf_char(byte register(A) ch) printf_char: { - .label ch = 8 - // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 - lda.z ch + // [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (printf_cursor_ptr),y - // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + // [116] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 inc.z printf_cursor_ptr bne !+ inc.z printf_cursor_ptr+1 !: - // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + // [117] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 inc.z printf_cursor_x - // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + // [118] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z printf_cursor_x bne __breturn jmp __b1 // printf_char::@1 __b1: - // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [119] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x - // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [120] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y - // [77] call printf_scroll + // [121] call printf_scroll jsr printf_scroll jmp __breturn // printf_char::@return __breturn: - // [78] return + // [122] return rts } // printf_scroll // Scroll the entire screen if the cursor is on the last line printf_scroll: { - .label __4 = $e - // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + .label __4 = $19 + // [123] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z printf_cursor_y bne __breturn - // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + // [124] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] __b1_from_printf_scroll: jmp __b1 // printf_scroll::@1 __b1: - // [81] call memcpy - // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + // [125] call memcpy + // [141] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] memcpy_from___b1: jsr memcpy - // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + // [126] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] __b2_from___b1: jmp __b2 // printf_scroll::@2 __b2: - // [83] call memset - // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + // [127] call memset + // [132] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] memset_from___b2: - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 - lda #' ' - sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuxx=vbuc1 + ldx #' ' + // [132] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 lda #<$400+$28*$19-$28 sta.z memset.str lda #>$400+$28*$19-$28 sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + // [132] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 lda #<$28 sta.z memset.num lda #>$28 @@ -8011,7 +9760,7 @@ printf_scroll: { jmp __b3 // printf_scroll::@3 __b3: - // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 + // [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 lda.z __4 sec sbc #<$28 @@ -8019,25 +9768,24 @@ printf_scroll: { lda.z __4+1 sbc #>$28 sta.z __4+1 - // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 - // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + // [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + // [130] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 dec.z printf_cursor_y jmp __breturn // printf_scroll::@return __breturn: - // [87] return + // [131] return rts } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp(4) str, byte zp($a) c, word zp($13) num) +// memset(void* zp($22) str, byte register(X) c, word zp($15) num) memset: { - .label end = $13 - .label dst = 4 - .label num = $13 - .label str = 4 - .label c = $a - // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + .label end = $15 + .label dst = $22 + .label num = $15 + .label str = $22 + // [133] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -8046,7 +9794,7 @@ memset: { jmp __b1 // memset::@1 __b1: - // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -8054,15 +9802,15 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [135] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [136] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: - // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [136] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: - // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [137] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -8072,15 +9820,15 @@ memset: { jmp __breturn // memset::@return __breturn: - // [94] return + // [138] return rts // memset::@3 __b3: - // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 - lda.z c + // [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (dst),y - // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [140] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -8095,16 +9843,16 @@ memcpy: { .label source = $400+$28 .const num = $28*$19-$28 .label src_end = source+num - .label dst = 4 - .label src = $13 - // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + .label dst = $22 + .label src = $15 + // [142] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] __b1_from_memcpy: - // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + // [142] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 lda #destination sta.z dst+1 - // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + // [142] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 lda #source @@ -8112,7 +9860,7 @@ memcpy: { jmp __b1 // memcpy::@1 __b1: - // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z src+1 cmp #>src_end bne __b2 @@ -8122,98 +9870,94 @@ memcpy: { jmp __breturn // memcpy::@return __breturn: - // [100] return + // [144] return rts // memcpy::@2 __b2: - // [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + // [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - // [102] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + // [146] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [103] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + // [147] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 !: - // [98] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] + // [142] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] __b1_from___b2: - // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy - // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + // [142] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [142] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy jmp __b1 } // printf_str // Print a zero-terminated string // Handles escape codes such as newline -// printf_str(byte* zp(2) str) +// printf_str(byte* zp($13) str) printf_str: { - .label ch = 8 - .label str = 2 - // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + .label str = $13 + // [149] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] __b1_from_printf_str: __b1_from___b4: __b1_from___b5: - // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + // [149] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy jmp __b1 // printf_str::@1 __b1: jmp __b2 // printf_str::@2 __b2: - // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + // [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - sta.z ch - // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + // [151] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: - // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 - lda.z ch + // [152] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuaa_neq_0_then_la1 cmp #0 bne __b3 jmp __breturn // printf_str::@return __breturn: - // [109] return + // [153] return rts // printf_str::@3 __b3: - // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 - lda #'\n' - cmp.z ch + // [154] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #'\n' beq __b4_from___b3 jmp __b5 // printf_str::@5 __b5: - // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 - // [112] call printf_char - // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + // [155] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + // [156] call printf_char + // [114] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] printf_char_from___b5: - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy jsr printf_char jmp __b1_from___b5 - // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + // [157] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] __b4_from___b3: jmp __b4 // printf_str::@4 __b4: - // [114] call printf_ln + // [158] call printf_ln jsr printf_ln jmp __b1_from___b4 } // printf_ln // Print a newline printf_ln: { - .label __0 = $e - .label __1 = $e - // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 + .label __0 = $19 + .label __1 = $19 + // [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 sec lda.z __0 sbc.z printf_cursor_x @@ -8221,7 +9965,7 @@ printf_ln: { bcs !+ dec.z __0+1 !: - // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z __1 @@ -8229,35 +9973,34 @@ printf_ln: { bcc !+ inc.z __1+1 !: - // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 - // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + // [162] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x - // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [163] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y - // [120] call printf_scroll + // [164] call printf_scroll jsr printf_scroll jmp __breturn // printf_ln::@return __breturn: - // [121] return + // [165] return rts } // strupr // Converts a string to uppercase. -// strupr(byte* zp($13) str) +// strupr(byte* zp($15) str) strupr: { - .label __0 = 7 - .label src = $13 - .label str = $13 - // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + .label src = $15 + .label str = $15 + // [167] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] __b1_from_strupr: __b1_from___b3: - // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + // [167] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy jmp __b1 // strupr::@1 __b1: - // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (src),y cmp #0 @@ -8265,26 +10008,24 @@ strupr: { jmp __breturn // strupr::@return __breturn: - // [125] return + // [169] return rts // strupr::@2 __b2: - // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + // [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (src),y - sta.z toupper.ch - // [127] call toupper + // [171] call toupper jsr toupper - // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 + // [172] (byte) toupper::return#3 ← (byte) toupper::return#2 jmp __b3 // strupr::@3 __b3: - // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 - // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 - lda.z __0 + // [173] (byte~) strupr::$0 ← (byte) toupper::return#3 + // [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuaa ldy #0 sta (src),y - // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + // [175] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 @@ -8294,58 +10035,54 @@ strupr: { // toupper // Convert lowercase alphabet to uppercase // Returns uppercase equivalent to c, if such value exists, else c remains unchanged -// toupper(byte zp(7) ch) +// toupper(byte register(A) ch) toupper: { - .label return = 7 - .label ch = 7 - // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 - lda.z ch + // [176] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuaa_lt_vbuc1_then_la1 cmp #'a' bcc __breturn_from_toupper jmp __b2 // toupper::@2 __b2: - // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 - lda #'z' - cmp.z ch - bcs __b1 - // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + // [177] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuaa_le_vbuc1_then_la1 + cmp #'z' + bcc __b1 + beq __b1 + // [179] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] __breturn_from_toupper: __breturn_from___b1: __breturn_from___b2: - // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + // [179] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy jmp __breturn // toupper::@1 __b1: - // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 - lax.z return - axs #-['A'-'a'] - stx.z return + // [178] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuaa=vbuaa_plus_vbuc1 + clc + adc #'A'-'a' jmp __breturn_from___b1 // toupper::@return __breturn: - // [136] return + // [180] return rts } // strlen // Computes the length of the string str up to but not including the terminating null character. -// strlen(byte* zp($13) str) +// strlen(byte* zp($15) str) strlen: { - .label len = 4 - .label str = $13 - .label return = 4 - // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + .label len = $22 + .label str = $15 + .label return = $22 + // [182] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] __b1_from_strlen: - // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + // [182] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z len lda #>0 sta.z len+1 - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy jmp __b1 // strlen::@1 __b1: - // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 @@ -8353,613 +10090,25 @@ strlen: { jmp __breturn // strlen::@return __breturn: - // [140] return + // [184] return rts // strlen::@2 __b2: - // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + // [185] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 inc.z len bne !+ inc.z len+1 !: - // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + // [186] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: - // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + // [182] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] __b1_from___b2: - // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + // [182] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy jmp __b1 -} - // utoa -// Converts unsigned number value to a string representing it in RADIX format. -// If the leading digits are zero they are not included in the string. -// - value : The number to be converted to RADIX -// - buffer : receives the string representing the number and zero-termination. -// - radix : The radix to convert the number to (from the enum RADIX) -// utoa(word zp(2) value, byte* zp(4) buffer) -utoa: { - .const max_digits = 5 - .label __10 = $12 - .label __11 = $11 - .label digit_value = $13 - .label buffer = 4 - .label digit = $17 - .label value = 2 - .label started = $18 - // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] - __b1_from_utoa: - // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z buffer+1 - // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 - lda #0 - sta.z started - // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 - lda #printf_uint.uvalue - sta.z value+1 - // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 - lda #0 - sta.z digit - jmp __b1 - // utoa::@1 - __b1: - // [145] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z digit - cmp #max_digits-1 - bcc __b2 - jmp __b3 - // utoa::@3 - __b3: - // [146] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuz1=_byte_vwuz2 - lda.z value - sta.z __11 - // [147] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z __11 - lda DIGITS,y - ldy #0 - sta (buffer),y - // [148] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 - inc.z buffer - bne !+ - inc.z buffer+1 - !: - // [149] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 - lda #0 - ldy #0 - sta (buffer),y - jmp __breturn - // utoa::@return - __breturn: - // [150] return - rts - // utoa::@2 - __b2: - // [151] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 - lda.z digit - asl - sta.z __10 - // [152] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy.z __10 - lda RADIX_DECIMAL_VALUES,y - sta.z digit_value - lda RADIX_DECIMAL_VALUES+1,y - sta.z digit_value+1 - // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 - lda #0 - cmp.z started - bne __b5 - jmp __b7 - // utoa::@7 - __b7: - // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 - lda.z digit_value+1 - cmp.z value+1 - bne !+ - lda.z digit_value - cmp.z value - beq __b5 - !: - bcc __b5 - // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] - __b4_from___b7: - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy - // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy - jmp __b4 - // utoa::@4 - __b4: - // [156] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit - // [144] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] - __b1_from___b4: - // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy - // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy - // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy - // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy - jmp __b1 - // utoa::@5 - __b5: - // [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 - // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] - utoa_append_from___b5: - jsr utoa_append - // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 - jmp __b6 - // utoa::@6 - __b6: - // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 - // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 - inc.z buffer - bne !+ - inc.z buffer+1 - !: - // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] - __b4_from___b6: - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 - lda #1 - sta.z started - // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy - jmp __b4 -} - // utoa_append -// Used to convert a single digit of an unsigned number value to a string representation -// Counts a single digit up from '0' as long as the value is larger than sub. -// Each time the digit is increased sub is subtracted from value. -// - buffer : pointer to the char that receives the digit -// - value : The value where the digit will be derived from -// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. -// (For decimal the subs used are 10000, 1000, 100, 10, 1) -// returns : the value reduced by sub * digit so that it is less than sub. -// utoa_append(byte* zp(4) buffer, word zp(2) value, word zp($13) sub) -utoa_append: { - .label buffer = 4 - .label value = 2 - .label sub = $13 - .label return = 2 - .label digit = $11 - // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] - __b1_from_utoa_append: - // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy - jmp __b1 - // utoa_append::@1 - __b1: - // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 - lda.z sub+1 - cmp.z value+1 - bne !+ - lda.z sub - cmp.z value - beq __b2 - !: - bcc __b2 - jmp __b3 - // utoa_append::@3 - __b3: - // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z digit - lda DIGITS,y - ldy #0 - sta (buffer),y - jmp __breturn - // utoa_append::@return - __breturn: - // [168] return - rts - // utoa_append::@2 - __b2: - // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit - // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 - lda.z value - sec - sbc.z sub - sta.z value - lda.z value+1 - sbc.z sub+1 - sta.z value+1 - // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] - __b1_from___b2: - // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy - jmp __b1 -} - // printf_cls -// Clear the screen. Also resets current line/char cursor. -printf_cls: { - // [172] call memset - // [88] phi from printf_cls to memset [phi:printf_cls->memset] - memset_from_printf_cls: - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 - lda #' ' - sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 - lda #<$400 - sta.z memset.str - lda #>$400 - sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 - lda #<$28*$19 - sta.z memset.num - lda #>$28*$19 - sta.z memset.num+1 - jsr memset - jmp __b1 - // printf_cls::@1 - __b1: - // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 - lda #<$400 - sta.z printf_cursor_ptr - lda #>$400 - sta.z printf_cursor_ptr+1 - // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z printf_cursor_x - // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z printf_cursor_y - jmp __breturn - // printf_cls::@return - __breturn: - // [176] return - rts -} - // queen -// Function to check for proper positioning of queen -// queen(byte zp($15) row) -queen: { - .const OFFSET_STACK_ROW = 0 - .label r = $15 - .label column = $16 - .label __1 = $b - .label __4 = $15 - .label row = $15 - // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 - tsx - lda STACK_BASE+OFFSET_STACK_ROW,x - sta.z row - // [178] (byte) queen::r ← (byte) queen::row#0 - // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 - lda #1 - sta.z column - jmp __b1 - // queen::@1 - __b1: - // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z column - cmp #8+1 - bcc __b2 - jmp __breturn - // queen::@return - __breturn: - // [181] return - rts - // queen::@2 - __b2: - // [182] (byte) place::row#0 ← (byte) queen::r - // [183] (byte) place::column#0 ← (byte) queen::column - // [184] call place - // [259] phi from queen::@2 to place [phi:queen::@2->place] - place_from___b2: - jsr place - // [185] (byte) place::return#0 ← (byte) place::return#4 - jmp __b7 - // queen::@7 - __b7: - // [186] (byte~) queen::$1 ← (byte) place::return#0 - // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 - lda #0 - cmp.z __1 - beq __b3 - jmp __b5 - // queen::@5 - __b5: - // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 - lda.z column - ldy.z r - sta board,y - // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 - //no conflicts so place queen - lda #8 - cmp.z r - beq __b4_from___b5 - jmp __b6 - // queen::@6 - __b6: - // asm { ldacolumn pha ldar pha } - // Push the local vars on the stack (waiting for proper recursion support) - lda column - pha - lda r - pha - // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz1_plus_1 - inc.z __4 - // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 - //try queen with next position - lda.z __4 - pha - // [193] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla - // asm { pla star pla stacolumn } - // Pop the local vars on the stack (waiting for proper recursion support) - pla - sta r - pla - sta column - jmp __b3 - // queen::@3 - __b3: - // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 - inc.z column - jmp __b1 - // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] - __b4_from___b5: - jmp __b4 - // queen::@4 - __b4: - // [198] call print - //dead end - jsr print - jmp __b3 -} - // print -//function for printing the solution -print: { - .label i = $b - .label i1 = $b - .label j = $12 - // [199] (byte) count ← ++ (byte) count -- vbuz1=_inc_vbuz1 - inc.z count - // [200] call printf_str - // [104] phi from print to printf_str [phi:print->printf_str] - printf_str_from_print: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 - lda #str - sta.z printf_str.str+1 - jsr printf_str - jmp __b11 - // print::@11 - __b11: - // [201] (byte) printf_uchar::uvalue#0 ← (byte) count -- vbuz1=vbuz2 - lda.z count - sta.z printf_uchar.uvalue - // [202] call printf_uchar - // [226] phi from print::@11 to printf_uchar [phi:print::@11->printf_uchar] - printf_uchar_from___b11: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#0 [phi:print::@11->printf_uchar#0] -- register_copy - jsr printf_uchar - // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] - __b12_from___b11: - jmp __b12 - // print::@12 - __b12: - // [204] call printf_str - // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] - printf_str_from___b12: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 - lda #str1 - sta.z printf_str.str+1 - jsr printf_str - // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] - __b1_from___b12: - // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 - lda #1 - sta.z i - jmp __b1 - // print::@1 - __b1: - // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z i - cmp #8+1 - bcc __b2 - // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] - __b3_from___b1: - // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 - lda #1 - sta.z i1 - jmp __b3 - // print::@3 - __b3: - // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 - lda.z i1 - cmp #8+1 - bcc __b4_from___b3 - jmp __breturn - // print::@return - __breturn: - // [209] return - rts - // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] - __b4_from___b3: - jmp __b4 - // print::@4 - __b4: - // [211] call printf_str - // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] - printf_str_from___b4: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 - lda #str2 - sta.z printf_str.str+1 - jsr printf_str - jmp __b14 - // print::@14 - __b14: - // [212] (byte) printf_uchar::uvalue#2 ← (byte) print::i1#2 - // [213] call printf_uchar - // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] - printf_uchar_from___b14: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#2 [phi:print::@14->printf_uchar#0] -- register_copy - jsr printf_uchar - // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] - __b5_from___b14: - // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 - lda #1 - sta.z j - jmp __b5 - // print::@5 - __b5: - // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 - lda.z j - cmp #8+1 - bcc __b6 - jmp __b7 - // print::@7 - __b7: - // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 - inc.z i1 - // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] - __b3_from___b7: - // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy - jmp __b3 - // print::@6 - __b6: - // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //for nxn board - ldy.z i1 - lda board,y - cmp.z j - beq __b8_from___b6 - // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] - __b10_from___b6: - jmp __b10 - // print::@10 - __b10: - // [219] call printf_str - // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] - printf_str_from___b10: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 - lda #str4 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - // print::@9 - __b9: - // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 - inc.z j - // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] - __b5_from___b9: - // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy - jmp __b5 - // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] - __b8_from___b6: - jmp __b8 - // print::@8 - __b8: - // [222] call printf_str - // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] - printf_str_from___b8: - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 - lda #str3 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - // print::@2 - __b2: - // [223] (byte) printf_uchar::uvalue#1 ← (byte) print::i#2 - // [224] call printf_uchar - // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] - printf_uchar_from___b2: - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#1 [phi:print::@2->printf_uchar#0] -- register_copy - jsr printf_uchar - jmp __b13 - // print::@13 - __b13: - // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] - __b1_from___b13: - // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy - jmp __b1 - str: .text @"\nSolution " - .byte 0 - str1: .text @":\n " - .byte 0 - str2: .text @"\n" - .byte 0 - str3: .text "Q" - .byte 0 - str4: .text "-" - .byte 0 -} - // printf_uchar -// Print an unsigned char using a specific format -// printf_uchar(byte zp($b) uvalue) -printf_uchar: { - .label uvalue = $b - jmp __b1 - // printf_uchar::@1 - __b1: - // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 - // Handle any sign - lda #0 - sta printf_buffer - // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#3 -- vbuz1=vbuz2 - lda.z uvalue - sta.z uctoa.value - // [229] call uctoa - // Format number into buffer - // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] - uctoa_from___b1: - jsr uctoa - jmp __b2 - // printf_uchar::@2 - __b2: - // [230] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 - lda printf_buffer - sta.z printf_number_buffer.buffer_sign - // [231] call printf_number_buffer - // Print using format - // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] - printf_number_buffer_from___b2: - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_min_length - jsr printf_number_buffer - jmp __breturn - // printf_uchar::@return - __breturn: - // [232] return - rts } // uctoa // Converts unsigned number value to a string representing it in RADIX format. @@ -8967,116 +10116,113 @@ printf_uchar: { // - value : The number to be converted to RADIX // - buffer : receives the string representing the number and zero-termination. // - radix : The radix to convert the number to (from the enum RADIX) -// uctoa(byte zp(7) value, byte* zp($13) buffer) +// uctoa(byte register(X) value, byte* zp($13) buffer) uctoa: { - .label digit_value = $17 + .label digit_value = $1c .label buffer = $13 - .label digit = 6 - .label value = 7 - .label started = 8 - // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + .label digit = $b + .label started = $c + // [188] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] __b1_from_uctoa: - // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + // [188] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z buffer+1 - // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 lda #0 sta.z started - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 lda #0 sta.z digit jmp __b1 // uctoa::@1 __b1: - // [235] if((byte) uctoa::digit#2<(byte) 3-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 + // [189] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 lda.z digit - cmp #3-1 + cmp #2-1 bcc __b2 jmp __b3 // uctoa::@3 __b3: - // [236] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z value - lda DIGITS,y + // [190] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda DIGITS,x ldy #0 sta (buffer),y - // [237] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + // [191] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 inc.z buffer bne !+ inc.z buffer+1 !: - // [238] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + // [192] *((byte*) uctoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (buffer),y jmp __breturn // uctoa::@return __breturn: - // [239] return + // [193] return rts // uctoa::@2 __b2: - // [240] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_DECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 + // [194] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy.z digit - lda RADIX_DECIMAL_VALUES_CHAR,y + lda RADIX_HEXADECIMAL_VALUES_CHAR,y sta.z digit_value - // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + // [195] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z started bne __b5 jmp __b7 // uctoa::@7 __b7: - // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 - lda.z value - cmp.z digit_value + // [196] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1 + cpx.z digit_value bcs __b5 - // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + // [197] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] __b4_from___b7: - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy jmp __b4 // uctoa::@4 __b4: - // [244] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 + // [198] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2 -- vbuz1=_inc_vbuz1 inc.z digit - // [234] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] + // [188] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] __b1_from___b4: - // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy - // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + // [188] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [188] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy jmp __b1 // uctoa::@5 __b5: - // [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 - // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + // [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 + // [200] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 + // [201] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 + // [202] call uctoa_append + // [206] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] uctoa_append_from___b5: jsr uctoa_append - // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 + // [203] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 jmp __b6 // uctoa::@6 __b6: - // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 - // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + // [204] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + // [205] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 inc.z buffer bne !+ inc.z buffer+1 !: - // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + // [197] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] __b4_from___b6: - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 lda #1 sta.z started - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy jmp __b4 } // uctoa_append @@ -9088,206 +10234,748 @@ uctoa: { // - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. // (For decimal the subs used are 10000, 1000, 100, 10, 1) // returns : the value reduced by sub * digit so that it is less than sub. -// uctoa_append(byte* zp($13) buffer, byte zp(7) value, byte zp($17) sub) +// uctoa_append(byte* zp($13) buffer, byte register(X) value, byte zp($1c) sub) uctoa_append: { .label buffer = $13 - .label value = 7 - .label sub = $17 - .label return = 7 - .label digit = 9 - // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + .label sub = $1c + // [207] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] __b1_from_uctoa_append: - // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + // [207] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1 + ldy #0 + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy jmp __b1 // uctoa_append::@1 __b1: - // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 - lda.z value - cmp.z sub + // [208] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1 + cpx.z sub bcs __b2 jmp __b3 // uctoa_append::@3 __b3: - // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z digit + // [209] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuyy lda DIGITS,y ldy #0 sta (buffer),y jmp __breturn // uctoa_append::@return __breturn: - // [256] return + // [210] return rts // uctoa_append::@2 __b2: - // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 + // [211] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuyy=_inc_vbuyy + iny + // [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1 + txa + sec + sbc.z sub + tax + // [207] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + __b1_from___b2: + // [207] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp(2) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 2 + jmp __b1 + // printf_ulong::@1 + __b1: + // [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 -- vduz1=vduz2 + lda.z uvalue + sta.z ultoa.value + lda.z uvalue+1 + sta.z ultoa.value+1 + lda.z uvalue+2 + sta.z ultoa.value+2 + lda.z uvalue+3 + sta.z ultoa.value+3 + // [216] call ultoa + // Format number into buffer + // [220] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + ultoa_from___b1: + jsr ultoa + jmp __b2 + // printf_ulong::@2 + __b2: + // [217] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [218] call printf_number_buffer + // Print using format + // [70] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + ldx #format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_ulong::@return + __breturn: + // [219] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp($e) value, byte* zp($22) buffer) +ultoa: { + .const max_digits = $a + .label digit_value = $1d + .label buffer = $22 + .label digit = $d + .label value = $e + // [221] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + __b1_from_ultoa: + // [221] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [221] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuxx=vbuc1 + ldx #0 + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // ultoa::@1 + __b1: + // [222] if((byte) ultoa::digit#2<(const byte) ultoa::max_digits#1-(byte) 1) goto ultoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // ultoa::@3 + __b3: + // [223] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 -- vbuaa=_byte_vduz1 + lda.z value + // [224] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + tay + lda DIGITS,y + ldy #0 + sta (buffer),y + // [225] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [226] *((byte*) ultoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa::@return + __breturn: + // [227] return + rts + // ultoa::@2 + __b2: + // [228] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2 -- vbuaa=vbuz1_rol_2 + lda.z digit + asl + asl + // [229] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10) -- vduz1=pduc1_derefidx_vbuaa + tay + lda RADIX_DECIMAL_VALUES_LONG,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES_LONG+1,y + sta.z digit_value+1 + lda RADIX_DECIMAL_VALUES_LONG+2,y + sta.z digit_value+2 + lda RADIX_DECIMAL_VALUES_LONG+3,y + sta.z digit_value+3 + // [230] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuxx_then_la1 + cpx #0 + bne __b5 + jmp __b7 + // ultoa::@7 + __b7: + // [231] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [232] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + __b4_from___b7: + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + jmp __b4 + // ultoa::@4 + __b4: + // [233] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2 -- vbuz1=_inc_vbuz1 inc.z digit - // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + // [221] phi from ultoa::@4 to ultoa::@1 [phi:ultoa::@4->ultoa::@1] + __b1_from___b4: + // [221] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [221] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 + // [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 + // [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 + // [237] call ultoa_append + // [241] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + ultoa_append_from___b5: + jsr ultoa_append + // [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + jmp __b6 + // ultoa::@6 + __b6: + // [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + // [240] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [232] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + __b4_from___b6: + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuxx=vbuc1 + ldx #1 + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($22) buffer, dword zp($e) value, dword zp($1d) sub) +ultoa_append: { + .label buffer = $22 + .label value = $e + .label sub = $1d + .label return = $e + // [242] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + __b1_from_ultoa_append: + // [242] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + jmp __b1 + // ultoa_append::@1 + __b1: + // [243] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + jmp __b3 + // ultoa_append::@3 + __b3: + // [244] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda DIGITS,x + ldy #0 + sta (buffer),y + jmp __breturn + // ultoa_append::@return + __breturn: + // [245] return + rts + // ultoa_append::@2 + __b2: + // [246] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuxx=_inc_vbuxx + inx + // [247] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 lda.z value sec sbc.z sub sta.z value - // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [242] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] __b1_from___b2: - // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + // [242] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy jmp __b1 } - // place -// function to check conflicts -// If no conflict for desired postion returns 1 otherwise returns 0 -// place(byte zp($15) row, byte zp($16) column) -place: { - .label __0 = $17 - .label __3 = $18 - .label __4 = $11 - .label row = $15 - .label column = $16 - .label return = $b - .label i = $a - // [260] phi from place to place::@1 [phi:place->place::@1] - __b1_from_place: - // [260] phi (byte) place::i#3 = (byte) 1 [phi:place->place::@1#0] -- vbuz1=vbuc1 - lda #1 - sta.z i + // legal +// 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 +// legal(byte zp($12) row, byte zp($1b) column) +legal: { + .label __3 = $21 + .label row = $12 + .label column = $1b + // [249] phi from legal to legal::@1 [phi:legal->legal::@1] + __b1_from_legal: + // [249] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuyy=vbuc1 + ldy #1 jmp __b1 - // place::@1 + // legal::@1 __b1: - // [261] (byte~) place::$0 ← (byte) place::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + // [250] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuxx=vbuz1_minus_1 ldx.z row dex - stx.z __0 - // [262] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 -- vbuz1_le_vbuz2_then_la1 - lda.z __0 - cmp.z i + // [251] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuyy_le_vbuxx_then_la1 + sty.z $ff + cpx.z $ff bcs __b2 - // [263] phi from place::@1 to place::@return [phi:place::@1->place::@return] + // [252] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] __breturn_from___b1: - // [263] phi (byte) place::return#4 = (byte) 1 [phi:place::@1->place::@return#0] -- vbuz1=vbuc1 + // [252] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuaa=vbuc1 lda #1 - sta.z return jmp __breturn - // [263] phi from place::@2 place::@6 to place::@return [phi:place::@2/place::@6->place::@return] + // [252] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] __breturn_from___b2: __breturn_from___b6: - // [263] phi (byte) place::return#4 = (byte) 0 [phi:place::@2/place::@6->place::@return#0] -- vbuz1=vbuc1 + // [252] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuaa=vbuc1 lda #0 - sta.z return jmp __breturn - // place::@return + // legal::@return __breturn: - // [264] return + // [253] return rts - // place::@2 + // legal::@2 __b2: - // [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //checking column and digonal conflicts - ldy.z i + // [254] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1 lda board,y cmp.z column beq __breturn_from___b2 jmp __b4 - // place::@4 + // legal::@4 __b4: - // [266] (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#3) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy.z i + // [255] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuaa=pbuc1_derefidx_vbuyy lda board,y - sta.z diff.a - // [267] (byte) diff::b#0 ← (byte) place::column#0 -- vbuz1=vbuz2 - lda.z column - sta.z diff.b - // [268] call diff - // [278] phi from place::@4 to diff [phi:place::@4->diff] + // [256] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuxx=vbuz1 + ldx.z column + // [257] call diff + // [267] phi from legal::@4 to diff [phi:legal::@4->diff] diff_from___b4: - // [278] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:place::@4->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:place::@4->diff#1] -- register_copy + // [267] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy jsr diff - // [269] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 - lda.z diff.return_1 - sta.z diff.return + // [258] (byte) diff::return#0 ← (byte) diff::return#4 jmp __b5 - // place::@5 + // legal::@5 __b5: - // [270] (byte~) place::$3 ← (byte) diff::return#0 - // [271] (byte) diff::a#1 ← (byte) place::i#3 -- vbuz1=vbuz2 - lda.z i - sta.z diff.a - // [272] (byte) diff::b#1 ← (byte) place::row#0 -- vbuz1=vbuz2 - lda.z row - sta.z diff.b - // [273] call diff - // [278] phi from place::@5 to diff [phi:place::@5->diff] + // [259] (byte~) legal::$3 ← (byte) diff::return#0 -- vbuz1=vbuaa + sta.z __3 + // [260] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuaa=vbuyy + tya + // [261] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuxx=vbuz1 + ldx.z row + // [262] call diff + // [267] phi from legal::@5 to diff [phi:legal::@5->diff] diff_from___b5: - // [278] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:place::@5->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:place::@5->diff#1] -- register_copy + // [267] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy jsr diff - // [274] (byte) diff::return#1 ← (byte) diff::return#4 + // [263] (byte) diff::return#1 ← (byte) diff::return#4 jmp __b6 - // place::@6 + // legal::@6 __b6: - // [275] (byte~) place::$4 ← (byte) diff::return#1 - // [276] if((byte~) place::$3!=(byte~) place::$4) goto place::@3 -- vbuz1_neq_vbuz2_then_la1 - lda.z __3 - cmp.z __4 + // [264] (byte~) legal::$4 ← (byte) diff::return#1 + // [265] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuaa_then_la1 + cmp.z __3 bne __b3 jmp __breturn_from___b6 - // place::@3 + // legal::@3 __b3: - // [277] (byte) place::i#2 ← ++ (byte) place::i#3 -- vbuz1=_inc_vbuz1 - inc.z i - // [260] phi from place::@3 to place::@1 [phi:place::@3->place::@1] + // [266] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuyy=_inc_vbuyy + iny + // [249] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] __b1_from___b3: - // [260] phi (byte) place::i#3 = (byte) place::i#2 [phi:place::@3->place::@1#0] -- register_copy + // [249] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy jmp __b1 } // diff // Find the absolute difference between two unsigned chars -// diff(byte zp($11) a, byte zp($12) b) +// diff(byte register(A) a, byte register(X) b) diff: { - .label a = $11 - .label b = $12 - .label return = $18 - .label return_1 = $11 - // [279] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuz1_lt_vbuz2_then_la1 - lda.z a - cmp.z b + // [268] if((byte) diff::a#2<(byte) diff::b#2) goto diff::@1 -- vbuaa_lt_vbuxx_then_la1 + stx.z $ff + cmp.z $ff bcc __b1 jmp __b2 // diff::@2 __b2: - // [280] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuz1=vbuz1_minus_vbuz2 - lda.z return_1 + // [269] (byte) diff::return#3 ← (byte) diff::a#2 - (byte) diff::b#2 -- vbuaa=vbuaa_minus_vbuxx + stx.z $ff sec - sbc.z b - sta.z return_1 - // [281] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] + sbc.z $ff + // [270] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] __breturn_from___b1: __breturn_from___b2: - // [281] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + // [270] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy jmp __breturn // diff::@return __breturn: - // [282] return + // [271] return rts // diff::@1 __b1: - // [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz1 - lda.z b + // [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuaa=vbuxx_minus_vbuaa + sta.z $ff + txa sec - sbc.z return_1 - sta.z return_1 + sbc.z $ff jmp __breturn_from___b1 +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + jmp __b1 + // printf_uint::@1 + __b1: + // [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // [275] call utoa + // Format number into buffer + // [279] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + utoa_from___b1: + jsr utoa + jmp __b2 + // printf_uint::@2 + __b2: + // [276] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [277] call printf_number_buffer + // Print using format + // [70] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + printf_number_buffer_from___b2: + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + ldx #format_min_length + jsr printf_number_buffer + jmp __breturn + // printf_uint::@return + __breturn: + // [278] return + rts +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($13) value, byte* zp($15) buffer) +utoa: { + .const max_digits = 5 + .label digit_value = $22 + .label buffer = $15 + .label digit = $12 + .label value = $13 + // [280] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + __b1_from_utoa: + // [280] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [280] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuxx=vbuc1 + ldx #0 + // [280] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [280] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + lda #0 + sta.z digit + jmp __b1 + // utoa::@1 + __b1: + // [281] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z digit + cmp #max_digits-1 + bcc __b2 + jmp __b3 + // utoa::@3 + __b3: + // [282] (byte~) utoa::$11 ← (byte)(word) utoa::value#2 -- vbuaa=_byte_vwuz1 + lda.z value + // [283] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + tay + lda DIGITS,y + ldy #0 + sta (buffer),y + // [284] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [285] *((byte*) utoa::buffer#3) ← (byte) 0 -- _deref_pbuz1=vbuc1 + lda #0 + ldy #0 + sta (buffer),y + jmp __breturn + // utoa::@return + __breturn: + // [286] return + rts + // utoa::@2 + __b2: + // [287] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + lda.z digit + asl + // [288] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10) -- vwuz1=pwuc1_derefidx_vbuaa + tay + lda RADIX_DECIMAL_VALUES,y + sta.z digit_value + lda RADIX_DECIMAL_VALUES+1,y + sta.z digit_value+1 + // [289] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuxx_then_la1 + cpx #0 + bne __b5 + jmp __b7 + // utoa::@7 + __b7: + // [290] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + lda.z digit_value+1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [291] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + __b4_from___b7: + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [291] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + jmp __b4 + // utoa::@4 + __b4: + // [292] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2 -- vbuz1=_inc_vbuz1 + inc.z digit + // [280] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1] + __b1_from___b4: + // [280] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [280] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [280] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [280] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 + // [294] (word) utoa_append::value#0 ← (word) utoa::value#2 + // [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 + // [296] call utoa_append + // [300] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + utoa_append_from___b5: + jsr utoa_append + // [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + jmp __b6 + // utoa::@6 + __b6: + // [298] (word) utoa::value#0 ← (word) utoa_append::return#0 + // [299] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [291] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + __b4_from___b6: + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuxx=vbuc1 + ldx #1 + // [291] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp($15) buffer, word zp($13) value, word zp($22) sub) +utoa_append: { + .label buffer = $15 + .label value = $13 + .label sub = $22 + .label return = $13 + // [301] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + __b1_from_utoa_append: + // [301] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + jmp __b1 + // utoa_append::@1 + __b1: + // [302] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + jmp __b3 + // utoa_append::@3 + __b3: + // [303] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda DIGITS,x + ldy #0 + sta (buffer),y + jmp __breturn + // utoa_append::@return + __breturn: + // [304] return + rts + // utoa_append::@2 + __b2: + // [305] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuxx=_inc_vbuxx + inx + // [306] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [301] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + __b1_from___b2: + // [301] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // [308] call memset + // [132] phi from printf_cls to memset [phi:printf_cls->memset] + memset_from_printf_cls: + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuxx=vbuc1 + ldx #' ' + // [132] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [132] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + jmp __b1 + // printf_cls::@1 + __b1: + // [309] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // [310] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // [311] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_y + jmp __breturn + // printf_cls::@return + __breturn: + // [312] return + rts } // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" - // Values of decimal digits - RADIX_DECIMAL_VALUES_CHAR: .byte $64, $a + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 // Values of decimal digits RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. board: .fill $14, 0 // Buffer used for stringified number being printed printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 @@ -9295,7 +10983,6 @@ diff: { ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 Removing instruction jmp __b2 -Removing instruction jmp __b3 Removing instruction jmp __bend Removing instruction jmp __b1 Removing instruction jmp __b2 @@ -9304,6 +10991,26 @@ Removing instruction jmp __b4 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b2 +Removing instruction jmp __b7 +Removing instruction jmp __b9 +Removing instruction jmp __b6 +Removing instruction jmp __b5 +Removing instruction jmp __b8 +Removing instruction jmp __b11 +Removing instruction jmp __b12 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b4 +Removing instruction jmp __b14 +Removing instruction jmp __b5 +Removing instruction jmp __b7 +Removing instruction jmp __b10 +Removing instruction jmp __b9 +Removing instruction jmp __b8 +Removing instruction jmp __b13 +Removing instruction jmp __b1 +Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b6 Removing instruction jmp __b14 @@ -9360,28 +11067,6 @@ Removing instruction jmp __b1 Removing instruction jmp __b3 Removing instruction jmp __breturn Removing instruction jmp __b1 -Removing instruction jmp __breturn -Removing instruction jmp __b1 -Removing instruction jmp __breturn -Removing instruction jmp __b7 -Removing instruction jmp __b5 -Removing instruction jmp __b6 -Removing instruction jmp __b3 -Removing instruction jmp __b4 -Removing instruction jmp __b11 -Removing instruction jmp __b12 -Removing instruction jmp __b1 -Removing instruction jmp __b3 -Removing instruction jmp __breturn -Removing instruction jmp __b4 -Removing instruction jmp __b14 -Removing instruction jmp __b5 -Removing instruction jmp __b7 -Removing instruction jmp __b10 -Removing instruction jmp __b9 -Removing instruction jmp __b8 -Removing instruction jmp __b13 -Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 @@ -9400,21 +11085,43 @@ Removing instruction jmp __b5 Removing instruction jmp __b6 Removing instruction jmp __b2 Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b2 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b7 +Removing instruction jmp __b4 +Removing instruction jmp __b6 +Removing instruction jmp __b1 +Removing instruction jmp __b3 +Removing instruction jmp __breturn +Removing instruction jmp __b1 +Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 +Removing instruction lda #>0 +Removing instruction lda #0 +Replacing instruction ldx #0 with TAX Removing instruction lda.z padding Removing instruction ldy #0 Removing instruction lda #>0 -Replacing instruction ldy.z __11 with TAY -Replacing instruction ldy #0 with TAY -Replacing instruction ldy.z __10 with TAY -Removing instruction lda #0 -Removing instruction lda #0 -Removing instruction lda #0 Removing instruction lda #0 Replacing instruction ldy #0 with TAY -Replacing instruction lda.z __0 with TXA +Replacing instruction lda #0 with TXA +Replacing instruction ldy #0 with TAY +Replacing instruction lda #0 with TXA +Replacing instruction ldy #0 with TAY +Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label __b1 with __b2 +Replacing label __b5_from___b4 with __b5 +Replacing label __b1_from___b6 with __b1_from___b9 +Replacing label __b1_from___b5 with __b1_from___b9 +Replacing label __b1_from___b8 with __b1_from___b9 +Replacing label __b4_from___b3 with __b4 +Replacing label __b8_from___b6 with __b8 Replacing label __b1_from_printf_number_buffer with __b1_from___b13 Replacing label __b13_from___b14 with __b13 Replacing label __b21_from___b13 with __b1 @@ -9425,21 +11132,34 @@ Replacing label __b1_from___b4 with __b2 Replacing label __b1_from___b3 with __b1 Replacing label __breturn_from_toupper with __breturn_from___b2 Replacing label __breturn_from___b1 with __breturn_from___b2 -Replacing label __b4_from___b5 with __b4 -Replacing label __b4_from___b3 with __b4 -Replacing label __b8_from___b6 with __b8 Replacing label __breturn_from___b2 with __breturn_from___b6 Replacing label __breturn_from___b1 with __breturn Removing instruction __b1: -Removing instruction __b3_from___b2: -Removing instruction main_from___b3: -Removing instruction __bend_from___b3: +Removing instruction __b2_from___b1: +Removing instruction main_from___b2: +Removing instruction __bend_from___b2: Removing instruction __b1_from_main: Removing instruction printf_str_from___b1: Removing instruction __b2_from___b1: Removing instruction printf_str_from___b2: Removing instruction __b3_from___b2: Removing instruction printf_uint_from___b3: +Removing instruction __b4_from___b3: +Removing instruction queens_from___b4: +Removing instruction __b1: +Removing instruction __b1_from___b5: +Removing instruction __b1_from___b6: +Removing instruction __b1_from___b8: +Removing instruction __b5_from___b4: +Removing instruction printf_ulong_from___b11: +Removing instruction __b12_from___b11: +Removing instruction printf_str_from___b12: +Removing instruction __b4_from___b3: +Removing instruction printf_str_from___b4: +Removing instruction __b10_from___b6: +Removing instruction printf_str_from___b10: +Removing instruction __b8_from___b6: +Removing instruction printf_str_from___b8: Removing instruction __b13_from___b14: Removing instruction __b13_from___b7: Removing instruction __b1_from_printf_number_buffer: @@ -9447,7 +11167,6 @@ Removing instruction __b21_from___b13: Removing instruction __b21: Removing instruction __b1_from___b21: Removing instruction printf_str_from___b5: -Removing instruction printf_char_from___b2: Removing instruction __b1_from_printf_scroll: Removing instruction memcpy_from___b1: Removing instruction __b2_from___b1: @@ -9465,27 +11184,16 @@ Removing instruction __b1_from___b3: Removing instruction __breturn_from_toupper: Removing instruction __breturn_from___b1: Removing instruction __b4_from___b7: -Removing instruction utoa_append_from___b5: -Removing instruction place_from___b2: -Removing instruction __b4_from___b5: -Removing instruction __b12_from___b11: -Removing instruction printf_str_from___b12: -Removing instruction __b4_from___b3: -Removing instruction printf_str_from___b4: -Removing instruction printf_uchar_from___b14: -Removing instruction __b10_from___b6: -Removing instruction printf_str_from___b10: -Removing instruction __b8_from___b6: -Removing instruction printf_str_from___b8: -Removing instruction printf_uchar_from___b2: -Removing instruction __b4_from___b7: Removing instruction uctoa_append_from___b5: +Removing instruction __b4_from___b7: +Removing instruction ultoa_append_from___b5: Removing instruction __breturn_from___b2: Removing instruction __breturn_from___b1: Removing instruction __breturn_from___b2: +Removing instruction __b4_from___b7: +Removing instruction utoa_append_from___b5: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction __b2: -Removing instruction __b3: Removing instruction __bend: Removing instruction printf_cls_from_main: Removing instruction __b1: @@ -9493,8 +11201,30 @@ Removing instruction __b2: Removing instruction __b3: Removing instruction __b4: Removing instruction __breturn: +Removing instruction __b1_from_queens: +Removing instruction __b7: +Removing instruction legal_from___b7: +Removing instruction __b9: +Removing instruction __b6: +Removing instruction __b8: +Removing instruction printf_str_from_print: +Removing instruction __b11: +Removing instruction __b12: +Removing instruction __b1_from___b12: +Removing instruction __b3_from___b1: +Removing instruction __breturn: +Removing instruction __b14: +Removing instruction printf_uchar_from___b14: +Removing instruction __b5_from___b14: +Removing instruction __b7: +Removing instruction __b3_from___b7: +Removing instruction __b10: +Removing instruction __b5_from___b9: +Removing instruction printf_uchar_from___b2: +Removing instruction __b13: +Removing instruction __b1_from___b13: Removing instruction __b1: -Removing instruction utoa_from___b1: +Removing instruction uctoa_from___b1: Removing instruction __b2: Removing instruction printf_number_buffer_from___b2: Removing instruction __breturn: @@ -9517,6 +11247,7 @@ Removing instruction __b19: Removing instruction printf_padding_from___b12: Removing instruction __b1_from_printf_padding: Removing instruction __breturn: +Removing instruction printf_char_from___b2: Removing instruction __b3: Removing instruction __b1_from___b3: Removing instruction __b1: @@ -9536,6 +11267,47 @@ Removing instruction __b2: Removing instruction __b1_from_strlen: Removing instruction __breturn: Removing instruction __b1_from___b2: +Removing instruction __b1_from_uctoa: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b1_from___b4: +Removing instruction __b6: +Removing instruction __b4_from___b6: +Removing instruction __b1_from_uctoa_append: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __b1: +Removing instruction ultoa_from___b1: +Removing instruction __b2: +Removing instruction printf_number_buffer_from___b2: +Removing instruction __breturn: +Removing instruction __b1_from_ultoa: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b7: +Removing instruction __b1_from___b4: +Removing instruction __b6: +Removing instruction __b4_from___b6: +Removing instruction __b1_from_ultoa_append: +Removing instruction __b3: +Removing instruction __breturn: +Removing instruction __b1_from___b2: +Removing instruction __b1_from_legal: +Removing instruction __breturn_from___b1: +Removing instruction __b4: +Removing instruction diff_from___b4: +Removing instruction __b5: +Removing instruction diff_from___b5: +Removing instruction __b6: +Removing instruction __b1_from___b3: +Removing instruction __b2: +Removing instruction __b1: +Removing instruction utoa_from___b1: +Removing instruction __b2: +Removing instruction printf_number_buffer_from___b2: +Removing instruction __breturn: Removing instruction __b1_from_utoa: Removing instruction __b3: Removing instruction __breturn: @@ -9550,51 +11322,10 @@ Removing instruction __b1_from___b2: Removing instruction memset_from_printf_cls: Removing instruction __b1: Removing instruction __breturn: -Removing instruction __breturn: -Removing instruction __b7: -Removing instruction __b5: -Removing instruction __b6: -Removing instruction printf_str_from_print: -Removing instruction __b11: -Removing instruction printf_uchar_from___b11: -Removing instruction __b12: -Removing instruction __b1_from___b12: -Removing instruction __b3_from___b1: -Removing instruction __breturn: -Removing instruction __b14: -Removing instruction __b5_from___b14: -Removing instruction __b7: -Removing instruction __b3_from___b7: -Removing instruction __b10: -Removing instruction __b5_from___b9: -Removing instruction __b13: -Removing instruction __b1_from___b13: -Removing instruction __b1: -Removing instruction uctoa_from___b1: -Removing instruction __b2: -Removing instruction printf_number_buffer_from___b2: -Removing instruction __breturn: -Removing instruction __b1_from_uctoa: -Removing instruction __b3: -Removing instruction __breturn: -Removing instruction __b7: -Removing instruction __b1_from___b4: -Removing instruction __b6: -Removing instruction __b4_from___b6: -Removing instruction __b1_from_uctoa_append: -Removing instruction __b3: -Removing instruction __breturn: -Removing instruction __b1_from___b2: -Removing instruction __b1_from_place: -Removing instruction __breturn_from___b1: -Removing instruction __b4: -Removing instruction diff_from___b4: -Removing instruction __b5: -Removing instruction diff_from___b5: -Removing instruction __b6: -Removing instruction __b1_from___b3: -Removing instruction __b2: Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to __b2 in jmp __b1_from___b9 +Skipping double jump to __b2 in jmp __b1_from___b9 +Skipping double jump to __b2 in jmp __b1_from___b9 Replacing jump to rts with rts in jmp __breturn Skipping double jump to __breturn in bcc __breturn_from___b2 Replacing jump to rts with rts in jmp __breturn @@ -9602,6 +11333,7 @@ Skipping double jump to __breturn in jmp __breturn_from___b2 Replacing jump to rts with rts in jmp __breturn Replacing jump to rts with rts in jmp __breturn Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label __b1_from___b9 to __b1 Relabelling long label __b1_from___b13 to __b6 Relabelling long label __breturn_from___b2 to __b2 Relabelling long label __breturn_from___b6 to __b4 @@ -9611,14 +11343,15 @@ Succesful ASM optimization Pass5AddMainRts Removing instruction jmp __b1 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination +Removing instruction ldy.z row Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda #0 -Replacing instruction lda r with TYA -Removing instruction ldy.z i +Removing instruction lda.z digit_value+1 Succesful ASM optimization Pass5UnnecesaryLoadElimination +Removing instruction __b1: Removing instruction __b2: Removing instruction __breturn: Removing instruction __breturn: @@ -9627,7 +11360,6 @@ Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE (label) @1 (label) @2 -(label) @3 (label) @begin (label) @end (const byte*) DIGITS[] = (byte*) "0123456789abcdef"z @@ -9637,39 +11369,61 @@ FINAL SYMBOL TABLE (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 @@ -9677,16 +11431,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) @@ -9695,39 +11449,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 @@ -9745,16 +11478,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*) " @@ -9768,16 +11501,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 @@ -9787,11 +11520,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 @@ -9816,46 +11549,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 @@ -9868,12 +11602,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 @@ -9886,10 +11620,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 @@ -9907,57 +11640,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 @@ -9968,47 +11718,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 @@ -10018,90 +11819,122 @@ __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 ] FINAL ASSEMBLER -Score: 2147483647 +Score: 1335318 // File Comments // 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. // Upstart .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1 - .const STACK_BASE = $103 .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c - .label printf_cursor_x = $c - .label printf_cursor_y = $d - .label printf_cursor_ptr = $e - .label count = $10 + .label printf_cursor_x = $17 + .label printf_cursor_y = $18 + .label printf_cursor_ptr = $19 + // The number of found solutions + .label count = 2 // @begin __bbegin: // @1 @@ -10121,429 +11954,686 @@ __bbegin: sta.z printf_cursor_ptr lda #>$400 sta.z printf_cursor_ptr+1 + // [4] phi from @1 to @2 [phi:@1->@2] // @2 - // count - // [4] (byte) count ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z count - // [5] phi from @2 to @3 [phi:@2->@3] - // @3 - // [6] call main - // [8] phi from @3 to main [phi:@3->main] + // [5] call main + // [7] phi from @2 to main [phi:@2->main] jsr main rts - // [7] phi from @3 to @end [phi:@3->@end] + // [6] phi from @2 to @end [phi:@2->@end] // @end // main main: { // printf_cls() - // [9] call printf_cls - // [171] phi from main to printf_cls [phi:main->printf_cls] + // [8] call printf_cls + // [307] phi from main to printf_cls [phi:main->printf_cls] jsr printf_cls - // [10] phi from main to main::@1 [phi:main->main::@1] + // [9] phi from main to main::@1 [phi:main->main::@1] // main::@1 - // printf(" - N Queens Problem Using Backtracking -") - // [11] call printf_str - // [104] phi from main::@1 to printf_str [phi:main::@1->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 + // printf(" - n queens problem using backtracking -") + // [10] call printf_str + // [148] phi from main::@1 to printf_str [phi:main::@1->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str [phi:main::@1->printf_str#0] -- pbuz1=pbuc1 lda #str sta.z printf_str.str+1 jsr printf_str - // [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] // main::@2 - // printf("\n\nNumber of Queens:%u",N) - // [13] call printf_str - // [104] phi from main::@2 to printf_str [phi:main::@2->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 + // printf("\nNumber of queens:%u",QUEENS) + // [12] call printf_str + // [148] phi from main::@2 to printf_str [phi:main::@2->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) main::str1 [phi:main::@2->printf_str#0] -- pbuz1=pbuc1 lda #str1 sta.z printf_str.str+1 jsr printf_str - // [14] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + // [13] phi from main::@2 to main::@3 [phi:main::@2->main::@3] // main::@3 - // printf("\n\nNumber of Queens:%u",N) - // [15] call printf_uint - // [20] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] + // printf("\nNumber of queens:%u",QUEENS) + // [14] call printf_uint + // [273] phi from main::@3 to printf_uint [phi:main::@3->printf_uint] jsr printf_uint + // [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] // main::@4 - // queen(1) - // [16] stackpush(byte) ← (byte) 1 -- _stackpushbyte_=vbuc1 - lda #1 - pha - // [17] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla + // queens() + // [16] call queens + // [18] phi from main::@4 to queens [phi:main::@4->queens] + jsr queens // main::@return // } - // [19] return + // [17] return rts - str: .text " - N Queens Problem Using Backtracking -" + str: .text " - n queens problem using backtracking -" .byte 0 - str1: .text @"\n\nNumber of Queens:" + str1: .text @"\nNumber of queens:" .byte 0 } - // printf_uint -// Print an unsigned int using a specific format -printf_uint: { - .label uvalue = 8 - .const format_min_length = 0 - .const format_justify_left = 0 - .const format_zero_padding = 0 - .const format_upper_case = 0 - // printf_uint::@1 + // queens +// 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 +queens: { + // The current row where the queen is moving + .label row = $12 + // [19] phi from queens to queens::@1 [phi:queens->queens::@1] + // [19] phi (dword) count#11 = (dword) 0 [phi:queens->queens::@1#0] -- vduz1=vduc1 + lda #<0 + sta.z count + sta.z count+1 + lda #<0>>$10 + sta.z count+2 + lda #>0>>$10 + sta.z count+3 + // [19] phi (byte) queens::row#10 = (byte) 1 [phi:queens->queens::@1#1] -- vbuz1=vbuc1 + lda #1 + sta.z row + // queens::@1 + // queens::@2 + __b2: + // board[row]++; + // [20] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + ldx.z row + inc board,x + // if(board[row]==QUEENS+1) + // [21] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3 -- pbuc1_derefidx_vbuz1_eq_vbuc2_then_la1 + ldy.z row + lda board,y + cmp #8+1 + beq __b3 + // queens::@7 + // legal(row, board[row]) + // [22] (byte) legal::row#0 ← (byte) queens::row#10 + // [23] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10) -- vbuz1=pbuc1_derefidx_vbuz2 + lda board,y + sta.z legal.column + // [24] call legal + // [248] phi from queens::@7 to legal [phi:queens::@7->legal] + jsr legal + // legal(row, board[row]) + // [25] (byte) legal::return#0 ← (byte) legal::return#4 + // queens::@9 + // [26] (byte~) queens::$2 ← (byte) legal::return#0 + // if(legal(row, board[row])) + // [27] if((byte) 0!=(byte~) queens::$2) goto queens::@4 -- vbuc1_neq_vbuaa_then_la1 + // check if the current position on row 1-row is legal + cmp #0 + bne __b4 + // [19] phi from queens::@5 queens::@6 queens::@8 queens::@9 to queens::@1 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1] + // [19] phi (dword) count#11 = (dword) count#13 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#0] -- register_copy + // [19] phi (byte) queens::row#10 = (byte) queens::row#10 [phi:queens::@5/queens::@6/queens::@8/queens::@9->queens::@1#1] -- register_copy + jmp __b2 + // queens::@4 + __b4: + // if(row==QUEENS) + // [28] if((byte) queens::row#10==(byte) 8) goto queens::@5 -- vbuz1_eq_vbuc1_then_la1 + // position is legal - move up to the next row + lda #8 + cmp.z row + beq __b5 + // queens::@6 + // row++; + // [29] (byte) queens::row#1 ← ++ (byte) queens::row#10 -- vbuz1=_inc_vbuz1 + inc.z row + jmp __b2 + // [30] phi from queens::@4 to queens::@5 [phi:queens::@4->queens::@5] + // queens::@5 + __b5: + // print() + // [31] call print + // We have a complete legal board - print it! + jsr print + jmp __b2 + // queens::@3 + __b3: + // board[row] = 0 + // [32] *((const byte*) board + (byte) queens::row#10) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + // We moved past the end of the row - reset position and go down to the lower row + lda #0 + ldy.z row + sta board,y + // if(row==1) + // [33] if((byte) queens::row#10==(byte) 1) goto queens::@return -- vbuz1_eq_vbuc1_then_la1 + lda #1 + cmp.z row + beq __breturn + // queens::@8 + // row--; + // [34] (byte) queens::row#2 ← -- (byte) queens::row#10 -- vbuz1=_dec_vbuz1 + dec.z row + jmp __b2 + // queens::@return + __breturn: + // } + // [35] return + rts +} + // print +// Print the board with a legal placement. Also increments the solution count. +print: { + .label i = $1b + .label i1 = $21 + .label j = 6 + // printf("\n#%lu:\n ",++count); + // [36] (dword) count#13 ← ++ (dword) count#11 -- vduz1=_inc_vduz1 + inc.z count + bne !+ + inc.z count+1 + bne !+ + inc.z count+2 + bne !+ + inc.z count+3 + !: + // printf("\n#%lu:\n ",++count) + // [37] call printf_str + // [148] phi from print to printf_str [phi:print->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 + lda #str + sta.z printf_str.str+1 + jsr printf_str + // print::@11 + // printf("\n#%lu:\n ",++count) + // [38] (dword) printf_ulong::uvalue#0 ← (dword) count#13 + // [39] call printf_ulong + // [213] phi from print::@11 to printf_ulong [phi:print::@11->printf_ulong] + jsr printf_ulong + // [40] phi from print::@11 to print::@12 [phi:print::@11->print::@12] + // print::@12 + // printf("\n#%lu:\n ",++count) + // [41] call printf_str + // [148] phi from print::@12 to printf_str [phi:print::@12->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 + lda #str1 + sta.z printf_str.str+1 + jsr printf_str + // [42] phi from print::@12 to print::@1 [phi:print::@12->print::@1] + // [42] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 + lda #1 + sta.z i + // print::@1 + __b1: + // for(char i=1;i<=QUEENS;++i) + // [43] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 + lda.z i + cmp #8+1 + bcc __b2 + // [44] phi from print::@1 to print::@3 [phi:print::@1->print::@3] + // [44] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 + lda #1 + sta.z i1 + // print::@3 + __b3: + // for(char i=1;i<=QUEENS;++i) + // [45] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 + lda.z i1 + cmp #8+1 + bcc __b4 + // print::@return + // } + // [46] return + rts + // [47] phi from print::@3 to print::@4 [phi:print::@3->print::@4] + // print::@4 + __b4: + // printf("\n%x",i) + // [48] call printf_str + // [148] phi from print::@4 to printf_str [phi:print::@4->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 + lda #str2 + sta.z printf_str.str+1 + jsr printf_str + // print::@14 + // printf("\n%x",i) + // [49] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2 -- vbuxx=vbuz1 + ldx.z i1 + // [50] call printf_uchar + // [63] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#1 [phi:print::@14->printf_uchar#0] -- register_copy + jsr printf_uchar + // [51] phi from print::@14 to print::@5 [phi:print::@14->print::@5] + // [51] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 + lda #1 + sta.z j + // print::@5 + __b5: + // for(char j=1;j<=QUEENS;++j) + // [52] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 + lda.z j + cmp #8+1 + bcc __b6 + // print::@7 + // for(char i=1;i<=QUEENS;++i) + // [53] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 + inc.z i1 + // [44] phi from print::@7 to print::@3 [phi:print::@7->print::@3] + // [44] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy + jmp __b3 + // print::@6 + __b6: + // if(board[i]==j) + // [54] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 + ldy.z i1 + lda board,y + cmp.z j + beq __b8 + // [55] phi from print::@6 to print::@10 [phi:print::@6->print::@10] + // print::@10 + // printf("-") + // [56] call printf_str + // [148] phi from print::@10 to printf_str [phi:print::@10->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 + lda #str4 + sta.z printf_str.str+1 + jsr printf_str + // print::@9 + __b9: + // for(char j=1;j<=QUEENS;++j) + // [57] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 + inc.z j + // [51] phi from print::@9 to print::@5 [phi:print::@9->print::@5] + // [51] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy + jmp __b5 + // [58] phi from print::@6 to print::@8 [phi:print::@6->print::@8] + // print::@8 + __b8: + // printf("Q") + // [59] call printf_str + // [148] phi from print::@8 to printf_str [phi:print::@8->printf_str] + // [148] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 + lda #str3 + sta.z printf_str.str+1 + jsr printf_str + jmp __b9 + // print::@2 + __b2: + // printf("%x",i) + // [60] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2 -- vbuxx=vbuz1 + ldx.z i + // [61] call printf_uchar + // [63] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] + // [63] phi (byte) printf_uchar::uvalue#2 = (byte) printf_uchar::uvalue#0 [phi:print::@2->printf_uchar#0] -- register_copy + jsr printf_uchar + // print::@13 + // for(char i=1;i<=QUEENS;++i) + // [62] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 + inc.z i + // [42] phi from print::@13 to print::@1 [phi:print::@13->print::@1] + // [42] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy + jmp __b1 + str: .text @"\n#" + .byte 0 + str1: .text @":\n " + .byte 0 + str2: .text @"\n" + .byte 0 + str3: .text "Q" + .byte 0 + str4: .text "-" + .byte 0 +} + // printf_uchar +// Print an unsigned char using a specific format +// printf_uchar(byte register(X) uvalue) +printf_uchar: { + // printf_uchar::@1 // printf_buffer.sign = format.sign_always?'+':0 - // [21] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [64] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Handle any sign lda #0 sta printf_buffer - // utoa(uvalue, printf_buffer.digits, format.radix) - // [22] call utoa + // uctoa(uvalue, printf_buffer.digits, format.radix) + // [65] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2 + // [66] call uctoa // Format number into buffer - // [143] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] - jsr utoa - // printf_uint::@2 + // [187] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] + jsr uctoa + // printf_uchar::@2 // printf_number_buffer(printf_buffer, format) - // [23] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + // [67] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 lda printf_buffer sta.z printf_number_buffer.buffer_sign - // [24] call printf_number_buffer + // [68] call printf_number_buffer // Print using format - // [26] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #format_upper_case + // [70] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#2 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #format_zero_padding + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #0 sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - lda #format_justify_left + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - lda #format_min_length - sta.z printf_number_buffer.format_min_length + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + tax jsr printf_number_buffer - // printf_uint::@return + // printf_uchar::@return // } - // [25] return + // [69] return rts } // printf_number_buffer // Print the contents of the number buffer using a specific format. // This handles minimum length, zero-filling, and left/right justification from the format -// printf_number_buffer(byte zp($12) buffer_sign, byte* zp(2) buffer_digits, byte zp($17) format_min_length, byte zp($18) format_justify_left, byte zp($11) format_zero_padding, byte zp(6) format_upper_case) +// printf_number_buffer(byte zp($d) buffer_sign, byte* zp($13) buffer_digits, byte register(X) format_min_length, byte zp($b) format_justify_left, byte zp($c) format_zero_padding, byte zp($1c) format_upper_case) printf_number_buffer: { - .label __19 = 4 - .label buffer_sign = $12 - .label len = 7 - .label padding = $17 - .label format_min_length = $17 - .label format_zero_padding = $11 - .label format_justify_left = $18 - .label buffer_digits = 2 - .label format_upper_case = 6 + .label __19 = $22 + .label buffer_sign = $d + .label padding = 7 + .label format_zero_padding = $c + .label format_justify_left = $b + .label buffer_digits = $13 + .label format_upper_case = $1c // if(format.min_length) - // [27] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1 -- vbuc1_eq_vbuz1_then_la1 - lda #0 - cmp.z format_min_length + // [71] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1 -- vbuc1_eq_vbuxx_then_la1 + cpx #0 beq __b6 // printf_number_buffer::@6 // strlen(buffer.digits) - // [28] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [72] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strlen.str lda.z buffer_digits+1 sta.z strlen.str+1 - // [29] call strlen - // [137] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] + // [73] call strlen + // [181] phi from printf_number_buffer::@6 to strlen [phi:printf_number_buffer::@6->strlen] jsr strlen // strlen(buffer.digits) - // [30] (word) strlen::return#2 ← (word) strlen::len#2 + // [74] (word) strlen::return#2 ← (word) strlen::len#2 // printf_number_buffer::@14 - // [31] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 + // [75] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 // len = (signed char)strlen(buffer.digits) - // [32] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsz1=_sbyte_vwuz2 + // [76] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1 // There is a minimum length - work out the padding lda.z __19 - sta.z len + tay // if(buffer.sign) - // [33] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 + // [77] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b13 // printf_number_buffer::@7 // len++; - // [34] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsz1=_inc_vbsz1 - inc.z len - // [35] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] - // [35] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy + // [78] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0 -- vbsyy=_inc_vbsyy + iny + // [79] phi from printf_number_buffer::@14 printf_number_buffer::@7 to printf_number_buffer::@13 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13] + // [79] phi (signed byte) printf_number_buffer::len#2 = (signed byte) printf_number_buffer::len#0 [phi:printf_number_buffer::@14/printf_number_buffer::@7->printf_number_buffer::@13#0] -- register_copy // printf_number_buffer::@13 __b13: // padding = (signed char)format.min_length - len - // [36] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsz1_minus_vbsz2 - lda.z padding + // [80] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 -- vbsz1=vbsxx_minus_vbsyy + txa + sty.z $ff sec - sbc.z len + sbc.z $ff sta.z padding // if(padding<0) - // [37] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 + // [81] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21 -- vbsz1_ge_0_then_la1 cmp #0 bpl __b1 - // [39] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] + // [83] phi from printf_number_buffer printf_number_buffer::@13 to printf_number_buffer::@1 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1] __b6: - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) 0 [phi:printf_number_buffer/printf_number_buffer::@13->printf_number_buffer::@1#0] -- vbsz1=vbsc1 lda #0 sta.z padding - // [38] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] + // [82] phi from printf_number_buffer::@13 to printf_number_buffer::@21 [phi:printf_number_buffer::@13->printf_number_buffer::@21] // printf_number_buffer::@21 - // [39] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] - // [39] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy + // [83] phi from printf_number_buffer::@21 to printf_number_buffer::@1 [phi:printf_number_buffer::@21->printf_number_buffer::@1] + // [83] phi (signed byte) printf_number_buffer::padding#10 = (signed byte) printf_number_buffer::padding#1 [phi:printf_number_buffer::@21->printf_number_buffer::@1#0] -- register_copy // printf_number_buffer::@1 __b1: // if(!format.justify_left && !format.zero_padding && padding) - // [40] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [84] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z format_justify_left bne __b2 // printf_number_buffer::@17 - // [41] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 + // [85] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2 -- vbuc1_neq_vbuz1_then_la1 cmp.z format_zero_padding bne __b2 // printf_number_buffer::@16 - // [42] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 + // [86] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8 -- vbsc1_neq_vbsz1_then_la1 cmp.z padding bne __b8 jmp __b2 // printf_number_buffer::@8 __b8: // printf_padding(' ',(char)padding) - // [43] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [87] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [44] call printf_padding - // [63] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 + // [88] call printf_padding + // [107] phi from printf_number_buffer::@8 to printf_padding [phi:printf_number_buffer::@8->printf_padding] + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@8->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#0 [phi:printf_number_buffer::@8->printf_padding#1] -- register_copy jsr printf_padding // printf_number_buffer::@2 __b2: // if(buffer.sign) - // [45] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 + // [89] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z buffer_sign beq __b3 // printf_number_buffer::@9 // printf_char(buffer.sign) - // [46] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuz1=vbuz2 + // [90] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10 -- vbuaa=vbuz1 lda.z buffer_sign - sta.z printf_char.ch - // [47] call printf_char - // [70] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy + // [91] call printf_char + // [114] phi from printf_number_buffer::@9 to printf_char [phi:printf_number_buffer::@9->printf_char] + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#2 [phi:printf_number_buffer::@9->printf_char#0] -- register_copy jsr printf_char // printf_number_buffer::@3 __b3: // if(format.zero_padding && padding) - // [48] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 + // [92] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_zero_padding beq __b4 // printf_number_buffer::@18 - // [49] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 + // [93] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10 -- vbsc1_neq_vbsz1_then_la1 cmp.z padding bne __b10 jmp __b4 // printf_number_buffer::@10 __b10: // printf_padding('0',(char)padding) - // [50] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [94] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [51] call printf_padding - // [63] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] - // [63] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 + // [95] call printf_padding + // [107] phi from printf_number_buffer::@10 to printf_padding [phi:printf_number_buffer::@10->printf_padding] + // [107] phi (byte) printf_padding::pad#5 = (byte) '0' [phi:printf_number_buffer::@10->printf_padding#0] -- vbuz1=vbuc1 lda #'0' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#1 [phi:printf_number_buffer::@10->printf_padding#1] -- register_copy jsr printf_padding // printf_number_buffer::@4 __b4: // if(format.upper_case) - // [52] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 + // [96] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5 -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_upper_case beq __b5 // printf_number_buffer::@11 // strupr(buffer.digits) - // [53] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 + // [97] (byte*) strupr::str#0 ← (byte*) printf_number_buffer::buffer_digits#10 -- pbuz1=pbuz2 lda.z buffer_digits sta.z strupr.str lda.z buffer_digits+1 sta.z strupr.str+1 - // [54] call strupr - // [122] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] + // [98] call strupr + // [166] phi from printf_number_buffer::@11 to strupr [phi:printf_number_buffer::@11->strupr] jsr strupr // printf_number_buffer::@5 __b5: // printf_str(buffer.digits) - // [55] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 - // [56] call printf_str - // [104] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] - // [104] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy + // [99] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10 + // [100] call printf_str + // [148] phi from printf_number_buffer::@5 to printf_str [phi:printf_number_buffer::@5->printf_str] + // [148] phi (byte*) printf_str::str#11 = (byte*) printf_str::str#1 [phi:printf_number_buffer::@5->printf_str#0] -- register_copy jsr printf_str // printf_number_buffer::@15 // if(format.justify_left && !format.zero_padding && padding) - // [57] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 + // [101] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return -- vbuc1_eq_vbuz1_then_la1 lda #0 cmp.z format_justify_left beq __breturn // printf_number_buffer::@20 - // [58] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 + // [102] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return -- vbuc1_neq_vbuz1_then_la1 cmp.z format_zero_padding bne __breturn // printf_number_buffer::@19 - // [59] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 + // [103] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12 -- vbsc1_neq_vbsz1_then_la1 cmp.z padding bne __b12 rts // printf_number_buffer::@12 __b12: // printf_padding(' ',(char)padding) - // [60] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 + // [104] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10 -- vbuz1=vbuz2 lda.z padding sta.z printf_padding.length - // [61] call printf_padding - // [63] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] - // [63] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 + // [105] call printf_padding + // [107] phi from printf_number_buffer::@12 to printf_padding [phi:printf_number_buffer::@12->printf_padding] + // [107] phi (byte) printf_padding::pad#5 = (byte) ' ' [phi:printf_number_buffer::@12->printf_padding#0] -- vbuz1=vbuc1 lda #' ' sta.z printf_padding.pad - // [63] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy + // [107] phi (byte) printf_padding::length#4 = (byte) printf_padding::length#2 [phi:printf_number_buffer::@12->printf_padding#1] -- register_copy jsr printf_padding // printf_number_buffer::@return __breturn: // } - // [62] return + // [106] return rts } // printf_padding // Print a padding char a number of times -// printf_padding(byte zp(8) pad, byte zp(7) length) +// printf_padding(byte zp(9) pad, byte zp(8) length) printf_padding: { - .label i = 9 - .label length = 7 - .label pad = 8 - // [64] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] - // [64] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 + .label i = $a + .label length = 8 + .label pad = 9 + // [108] phi from printf_padding to printf_padding::@1 [phi:printf_padding->printf_padding::@1] + // [108] phi (byte) printf_padding::i#2 = (byte) 0 [phi:printf_padding->printf_padding::@1#0] -- vbuz1=vbuc1 lda #0 sta.z i // printf_padding::@1 __b1: // for(char i=0;iprintf_char] - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy + // [111] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5 -- vbuaa=vbuz1 + lda.z pad + // [112] call printf_char + // [114] phi from printf_padding::@2 to printf_char [phi:printf_padding::@2->printf_char] + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#0 [phi:printf_padding::@2->printf_char#0] -- register_copy jsr printf_char // printf_padding::@3 // for(char i=0;iprintf_padding::@1] - // [64] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy + // [108] phi from printf_padding::@3 to printf_padding::@1 [phi:printf_padding::@3->printf_padding::@1] + // [108] phi (byte) printf_padding::i#2 = (byte) printf_padding::i#1 [phi:printf_padding::@3->printf_padding::@1#0] -- register_copy jmp __b1 } // printf_char // Print a single char // If the end of the screen is reached scroll it up one char and place the cursor at the -// printf_char(byte zp(8) ch) +// printf_char(byte register(A) ch) printf_char: { - .label ch = 8 // *(printf_cursor_ptr++) = ch - // [71] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuz2 - lda.z ch + // [115] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#3 -- _deref_pbuz1=vbuaa ldy #0 sta (printf_cursor_ptr),y // *(printf_cursor_ptr++) = ch; - // [72] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 + // [116] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr -- pbuz1=_inc_pbuz1 inc.z printf_cursor_ptr bne !+ inc.z printf_cursor_ptr+1 !: // if(++printf_cursor_x==PRINTF_SCREEN_WIDTH) - // [73] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 + // [117] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x -- vbuz1=_inc_vbuz1 inc.z printf_cursor_x - // [74] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 + // [118] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z printf_cursor_x bne __breturn // printf_char::@1 // printf_cursor_x = 0 - // [75] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [119] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x // ++printf_cursor_y; - // [76] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [120] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y // printf_scroll() - // [77] call printf_scroll + // [121] call printf_scroll jsr printf_scroll // printf_char::@return __breturn: // } - // [78] return + // [122] return rts } // printf_scroll // Scroll the entire screen if the cursor is on the last line printf_scroll: { - .label __4 = $e + .label __4 = $19 // if(printf_cursor_y==PRINTF_SCREEN_HEIGHT) - // [79] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 + // [123] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp.z printf_cursor_y bne __breturn - // [80] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] + // [124] phi from printf_scroll to printf_scroll::@1 [phi:printf_scroll->printf_scroll::@1] // printf_scroll::@1 // memcpy(PRINTF_SCREEN_ADDRESS, PRINTF_SCREEN_ADDRESS+PRINTF_SCREEN_WIDTH, PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH) - // [81] call memcpy - // [97] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] + // [125] call memcpy + // [141] phi from printf_scroll::@1 to memcpy [phi:printf_scroll::@1->memcpy] jsr memcpy - // [82] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] + // [126] phi from printf_scroll::@1 to printf_scroll::@2 [phi:printf_scroll::@1->printf_scroll::@2] // printf_scroll::@2 // memset(PRINTF_SCREEN_ADDRESS+PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH, ' ', PRINTF_SCREEN_WIDTH) - // [83] call memset - // [88] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuz1=vbuc1 - lda #' ' - sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 + // [127] call memset + // [132] phi from printf_scroll::@2 to memset [phi:printf_scroll::@2->memset] + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_scroll::@2->memset#0] -- vbuxx=vbuc1 + ldx #' ' + // [132] phi (void*) memset::str#3 = (void*)(number) $400+(number) $28*(number) $19-(number) $28 [phi:printf_scroll::@2->memset#1] -- pvoz1=pvoc1 lda #<$400+$28*$19-$28 sta.z memset.str lda #>$400+$28*$19-$28 sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 + // [132] phi (word) memset::num#2 = (byte) $28 [phi:printf_scroll::@2->memset#2] -- vwuz1=vbuc1 lda #<$28 sta.z memset.num lda #>$28 @@ -10551,7 +12641,7 @@ printf_scroll: { jsr memset // printf_scroll::@3 // printf_cursor_ptr-PRINTF_SCREEN_WIDTH - // [84] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 + // [128] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 lda.z __4 sec sbc #<$28 @@ -10560,27 +12650,26 @@ printf_scroll: { sbc #>$28 sta.z __4+1 // printf_cursor_ptr = printf_cursor_ptr-PRINTF_SCREEN_WIDTH - // [85] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 + // [129] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4 // printf_cursor_y--; - // [86] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 + // [130] (byte) printf_cursor_y ← -- (byte) printf_cursor_y -- vbuz1=_dec_vbuz1 dec.z printf_cursor_y // printf_scroll::@return __breturn: // } - // [87] return + // [131] return rts } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. -// memset(void* zp(4) str, byte zp($a) c, word zp($13) num) +// memset(void* zp($22) str, byte register(X) c, word zp($15) num) memset: { - .label end = $13 - .label dst = 4 - .label num = $13 - .label str = 4 - .label c = $a + .label end = $15 + .label dst = $22 + .label num = $15 + .label str = $22 // if(num>0) - // [89] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + // [133] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 @@ -10588,7 +12677,7 @@ memset: { !: // memset::@1 // end = (char*)str + num - // [90] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + // [134] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda.z end clc adc.z str @@ -10596,13 +12685,13 @@ memset: { lda.z end+1 adc.z str+1 sta.z end+1 - // [91] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 - // [92] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] - // [92] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy + // [135] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 + // [136] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] + // [136] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy // memset::@2 __b2: // for(char* dst = str; dst!=end; dst++) - // [93] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 + // [137] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 @@ -10612,17 +12701,17 @@ memset: { // memset::@return __breturn: // } - // [94] return + // [138] return rts // memset::@3 __b3: // *dst = c - // [95] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 - lda.z c + // [139] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx + txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) - // [96] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + // [140] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 @@ -10637,15 +12726,15 @@ memcpy: { .label source = $400+$28 .const num = $28*$19-$28 .label src_end = source+num - .label dst = 4 - .label src = $13 - // [98] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] - // [98] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 + .label dst = $22 + .label src = $15 + // [142] phi from memcpy to memcpy::@1 [phi:memcpy->memcpy::@1] + // [142] phi (byte*) memcpy::dst#2 = (byte*)(const void*) memcpy::destination#0 [phi:memcpy->memcpy::@1#0] -- pbuz1=pbuc1 lda #destination sta.z dst+1 - // [98] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 + // [142] phi (byte*) memcpy::src#2 = (byte*)(const void*) memcpy::source#0 [phi:memcpy->memcpy::@1#1] -- pbuz1=pbuc1 lda #source @@ -10653,7 +12742,7 @@ memcpy: { // memcpy::@1 __b1: // while(src!=src_end) - // [99] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z src+1 cmp #>src_end bne __b2 @@ -10662,92 +12751,88 @@ memcpy: { bne __b2 // memcpy::@return // } - // [100] return + // [144] return rts // memcpy::@2 __b2: // *dst++ = *src++ - // [101] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + // [145] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y sta (dst),y // *dst++ = *src++; - // [102] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + // [146] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: - // [103] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + // [147] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 !: - // [98] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] - // [98] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy - // [98] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy + // [142] phi from memcpy::@2 to memcpy::@1 [phi:memcpy::@2->memcpy::@1] + // [142] phi (byte*) memcpy::dst#2 = (byte*) memcpy::dst#1 [phi:memcpy::@2->memcpy::@1#0] -- register_copy + // [142] phi (byte*) memcpy::src#2 = (byte*) memcpy::src#1 [phi:memcpy::@2->memcpy::@1#1] -- register_copy jmp __b1 } // printf_str // Print a zero-terminated string // Handles escape codes such as newline -// printf_str(byte* zp(2) str) +// printf_str(byte* zp($13) str) printf_str: { - .label ch = 8 - .label str = 2 - // [105] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] - // [105] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy + .label str = $13 + // [149] phi from printf_str printf_str::@4 printf_str::@5 to printf_str::@1 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1] + // [149] phi (byte*) printf_str::str#10 = (byte*) printf_str::str#11 [phi:printf_str/printf_str::@4/printf_str::@5->printf_str::@1#0] -- register_copy // printf_str::@1 // printf_str::@2 __b2: // ch = *str++ - // [106] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuz1=_deref_pbuz2 + // [150] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#10) -- vbuaa=_deref_pbuz1 ldy #0 lda (str),y - sta.z ch - // [107] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 + // [151] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#10 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: // if(ch==0) - // [108] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuz1_neq_0_then_la1 - lda.z ch + // [152] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3 -- vbuaa_neq_0_then_la1 cmp #0 bne __b3 // printf_str::@return // } - // [109] return + // [153] return rts // printf_str::@3 __b3: // if(ch=='\n') - // [110] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuz1_eq_vbuc1_then_la1 - lda #'\n' - cmp.z ch + // [154] if((byte) printf_str::ch#0==(byte) ' ') goto printf_str::@4 -- vbuaa_eq_vbuc1_then_la1 + cmp #'\n' beq __b4 // printf_str::@5 // printf_char(ch) - // [111] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 - // [112] call printf_char - // [70] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] - // [70] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy + // [155] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0 + // [156] call printf_char + // [114] phi from printf_str::@5 to printf_char [phi:printf_str::@5->printf_char] + // [114] phi (byte) printf_char::ch#3 = (byte) printf_char::ch#1 [phi:printf_str::@5->printf_char#0] -- register_copy jsr printf_char jmp __b2 - // [113] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] + // [157] phi from printf_str::@3 to printf_str::@4 [phi:printf_str::@3->printf_str::@4] // printf_str::@4 __b4: // printf_ln() - // [114] call printf_ln + // [158] call printf_ln jsr printf_ln jmp __b2 } // printf_ln // Print a newline printf_ln: { - .label __0 = $e - .label __1 = $e + .label __0 = $19 + .label __1 = $19 // printf_cursor_ptr - printf_cursor_x - // [115] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 + // [159] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x -- pbuz1=pbuz1_minus_vbuz2 sec lda.z __0 sbc.z printf_cursor_x @@ -10756,7 +12841,7 @@ printf_ln: { dec.z __0+1 !: // printf_cursor_ptr - printf_cursor_x + PRINTF_SCREEN_WIDTH - // [116] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + // [160] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc.z __1 @@ -10765,62 +12850,59 @@ printf_ln: { inc.z __1+1 !: // printf_cursor_ptr = printf_cursor_ptr - printf_cursor_x + PRINTF_SCREEN_WIDTH - // [117] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 + // [161] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1 // printf_cursor_x = 0 - // [118] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + // [162] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta.z printf_cursor_x // printf_cursor_y++; - // [119] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 + // [163] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y -- vbuz1=_inc_vbuz1 inc.z printf_cursor_y // printf_scroll() - // [120] call printf_scroll + // [164] call printf_scroll jsr printf_scroll // printf_ln::@return // } - // [121] return + // [165] return rts } // strupr // Converts a string to uppercase. -// strupr(byte* zp($13) str) +// strupr(byte* zp($15) str) strupr: { - .label __0 = 7 - .label src = $13 - .label str = $13 - // [123] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] - // [123] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy + .label src = $15 + .label str = $15 + // [167] phi from strupr strupr::@3 to strupr::@1 [phi:strupr/strupr::@3->strupr::@1] + // [167] phi (byte*) strupr::src#2 = (byte*) strupr::str#0 [phi:strupr/strupr::@3->strupr::@1#0] -- register_copy // strupr::@1 __b1: // while(*src) - // [124] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [168] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (src),y cmp #0 bne __b2 // strupr::@return // } - // [125] return + // [169] return rts // strupr::@2 __b2: // toupper(*src) - // [126] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuz1=_deref_pbuz2 + // [170] (byte) toupper::ch#0 ← *((byte*) strupr::src#2) -- vbuaa=_deref_pbuz1 ldy #0 lda (src),y - sta.z toupper.ch - // [127] call toupper + // [171] call toupper jsr toupper - // [128] (byte) toupper::return#3 ← (byte) toupper::return#2 + // [172] (byte) toupper::return#3 ← (byte) toupper::return#2 // strupr::@3 - // [129] (byte~) strupr::$0 ← (byte) toupper::return#3 + // [173] (byte~) strupr::$0 ← (byte) toupper::return#3 // *src = toupper(*src) - // [130] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuz2 - lda.z __0 + // [174] *((byte*) strupr::src#2) ← (byte~) strupr::$0 -- _deref_pbuz1=vbuaa ldy #0 sta (src),y // src++; - // [131] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 + // [175] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2 -- pbuz1=_inc_pbuz1 inc.z src bne !+ inc.z src+1 @@ -10830,636 +12912,75 @@ strupr: { // toupper // Convert lowercase alphabet to uppercase // Returns uppercase equivalent to c, if such value exists, else c remains unchanged -// toupper(byte zp(7) ch) +// toupper(byte register(A) ch) toupper: { - .label return = 7 - .label ch = 7 // if(ch>='a' && ch<='z') - // [132] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuz1_lt_vbuc1_then_la1 - lda.z ch + // [176] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return -- vbuaa_lt_vbuc1_then_la1 cmp #'a' bcc __breturn // toupper::@2 - // [133] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuz1_le_vbuc1_then_la1 - lda #'z' - cmp.z ch - bcs __b1 - // [135] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] - // [135] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy + // [177] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1 -- vbuaa_le_vbuc1_then_la1 + cmp #'z' + bcc __b1 + beq __b1 + // [179] phi from toupper toupper::@1 toupper::@2 to toupper::@return [phi:toupper/toupper::@1/toupper::@2->toupper::@return] + // [179] phi (byte) toupper::return#2 = (byte) toupper::ch#0 [phi:toupper/toupper::@1/toupper::@2->toupper::@return#0] -- register_copy rts // toupper::@1 __b1: // return ch + ('A'-'a'); - // [134] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuz1=vbuz1_plus_vbuc1 - lax.z return - axs #-['A'-'a'] - stx.z return + // [178] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a' -- vbuaa=vbuaa_plus_vbuc1 + clc + adc #'A'-'a' // toupper::@return __breturn: // } - // [136] return + // [180] return rts } // strlen // Computes the length of the string str up to but not including the terminating null character. -// strlen(byte* zp($13) str) +// strlen(byte* zp($15) str) strlen: { - .label len = 4 - .label str = $13 - .label return = 4 - // [138] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] - // [138] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 + .label len = $22 + .label str = $15 + .label return = $22 + // [182] phi from strlen to strlen::@1 [phi:strlen->strlen::@1] + // [182] phi (word) strlen::len#2 = (word) 0 [phi:strlen->strlen::@1#0] -- vwuz1=vwuc1 lda #<0 sta.z len sta.z len+1 - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#1 [phi:strlen->strlen::@1#1] -- register_copy // strlen::@1 __b1: // while(*str) - // [139] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 + // [183] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2 -- vbuc1_neq__deref_pbuz1_then_la1 ldy #0 lda (str),y cmp #0 bne __b2 // strlen::@return // } - // [140] return + // [184] return rts // strlen::@2 __b2: // len++; - // [141] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 + // [185] (word) strlen::len#1 ← ++ (word) strlen::len#2 -- vwuz1=_inc_vwuz1 inc.z len bne !+ inc.z len+1 !: // str++; - // [142] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 + // [186] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2 -- pbuz1=_inc_pbuz1 inc.z str bne !+ inc.z str+1 !: - // [138] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] - // [138] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy - // [138] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy + // [182] phi from strlen::@2 to strlen::@1 [phi:strlen::@2->strlen::@1] + // [182] phi (word) strlen::len#2 = (word) strlen::len#1 [phi:strlen::@2->strlen::@1#0] -- register_copy + // [182] phi (byte*) strlen::str#2 = (byte*) strlen::str#0 [phi:strlen::@2->strlen::@1#1] -- register_copy jmp __b1 -} - // utoa -// Converts unsigned number value to a string representing it in RADIX format. -// If the leading digits are zero they are not included in the string. -// - value : The number to be converted to RADIX -// - buffer : receives the string representing the number and zero-termination. -// - radix : The radix to convert the number to (from the enum RADIX) -// utoa(word zp(2) value, byte* zp(4) buffer) -utoa: { - .const max_digits = 5 - .label __10 = $12 - .label __11 = $11 - .label digit_value = $13 - .label buffer = 4 - .label digit = $17 - .label value = 2 - .label started = $18 - // [144] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] - // [144] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z buffer+1 - // [144] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 - lda #0 - sta.z started - // [144] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 - lda #printf_uint.uvalue - sta.z value+1 - // [144] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // utoa::@1 - __b1: - // for( char digit=0; digit= digit_value) - // [153] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuz1_then_la1 - lda #0 - cmp.z started - bne __b5 - // utoa::@7 - // [154] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 - lda.z digit_value+1 - cmp.z value+1 - bne !+ - lda.z digit_value - cmp.z value - beq __b5 - !: - bcc __b5 - // [155] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy - // [155] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy - // utoa::@4 - __b4: - // for( char digit=0; digitutoa::@1] - // [144] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy - // [144] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy - // [144] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy - // [144] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy - jmp __b1 - // utoa::@5 - __b5: - // utoa_append(buffer++, value, digit_value) - // [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 - // [164] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] - jsr utoa_append - // utoa_append(buffer++, value, digit_value) - // [161] (word) utoa_append::return#0 ← (word) utoa_append::value#2 - // utoa::@6 - // value = utoa_append(buffer++, value, digit_value) - // [162] (word) utoa::value#0 ← (word) utoa_append::return#0 - // value = utoa_append(buffer++, value, digit_value); - // [163] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 - inc.z buffer - bne !+ - inc.z buffer+1 - !: - // [155] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] - // [155] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy - // [155] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuz1=vbuc1 - lda #1 - sta.z started - // [155] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy - jmp __b4 -} - // utoa_append -// Used to convert a single digit of an unsigned number value to a string representation -// Counts a single digit up from '0' as long as the value is larger than sub. -// Each time the digit is increased sub is subtracted from value. -// - buffer : pointer to the char that receives the digit -// - value : The value where the digit will be derived from -// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. -// (For decimal the subs used are 10000, 1000, 100, 10, 1) -// returns : the value reduced by sub * digit so that it is less than sub. -// utoa_append(byte* zp(4) buffer, word zp(2) value, word zp($13) sub) -utoa_append: { - .label buffer = 4 - .label value = 2 - .label sub = $13 - .label return = 2 - .label digit = $11 - // [165] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] - // [165] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy - // utoa_append::@1 - __b1: - // while (value >= sub) - // [166] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 - lda.z sub+1 - cmp.z value+1 - bne !+ - lda.z sub - cmp.z value - beq __b2 - !: - bcc __b2 - // utoa_append::@3 - // *buffer = DIGITS[digit] - // [167] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z digit - lda DIGITS,y - ldy #0 - sta (buffer),y - // utoa_append::@return - // } - // [168] return - rts - // utoa_append::@2 - __b2: - // digit++; - // [169] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit - // value -= sub - // [170] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 - lda.z value - sec - sbc.z sub - sta.z value - lda.z value+1 - sbc.z sub+1 - sta.z value+1 - // [165] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] - // [165] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy - // [165] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy - jmp __b1 -} - // printf_cls -// Clear the screen. Also resets current line/char cursor. -printf_cls: { - // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) - // [172] call memset - // [88] phi from printf_cls to memset [phi:printf_cls->memset] - // [88] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuz1=vbuc1 - lda #' ' - sta.z memset.c - // [88] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 - lda #<$400 - sta.z memset.str - lda #>$400 - sta.z memset.str+1 - // [88] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 - lda #<$28*$19 - sta.z memset.num - lda #>$28*$19 - sta.z memset.num+1 - jsr memset - // printf_cls::@1 - // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS - // [173] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 - lda #<$400 - sta.z printf_cursor_ptr - lda #>$400 - sta.z printf_cursor_ptr+1 - // printf_cursor_x = 0 - // [174] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 - lda #0 - sta.z printf_cursor_x - // printf_cursor_y = 0 - // [175] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 - sta.z printf_cursor_y - // printf_cls::@return - // } - // [176] return - rts -} - // queen -// Function to check for proper positioning of queen -// queen(byte zp($15) row) -queen: { - .const OFFSET_STACK_ROW = 0 - .label r = $15 - .label column = $16 - .label __1 = $b - .label __4 = $15 - .label row = $15 - // [177] (byte) queen::row#0 ← stackidx(byte,(const byte) queen::OFFSET_STACK_ROW) -- vbuz1=_stackidxbyte_vbuc1 - tsx - lda STACK_BASE+OFFSET_STACK_ROW,x - sta.z row - // r = row - // [178] (byte) queen::r ← (byte) queen::row#0 - // column=1 - // [179] (byte) queen::column ← (byte) 1 -- vbuz1=vbuc1 - lda #1 - sta.z column - // queen::@1 - __b1: - // for(__ma char column=1;column<=N;++column) - // [180] if((byte) queen::column<(byte) 8+(byte) 1) goto queen::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z column - cmp #8+1 - bcc __b2 - // queen::@return - // } - // [181] return - rts - // queen::@2 - __b2: - // place(r,column) - // [182] (byte) place::row#0 ← (byte) queen::r - // [183] (byte) place::column#0 ← (byte) queen::column - // [184] call place - // [259] phi from queen::@2 to place [phi:queen::@2->place] - jsr place - // place(r,column) - // [185] (byte) place::return#0 ← (byte) place::return#4 - // queen::@7 - // [186] (byte~) queen::$1 ← (byte) place::return#0 - // if(place(r,column)) - // [187] if((byte) 0==(byte~) queen::$1) goto queen::@3 -- vbuc1_eq_vbuz1_then_la1 - lda #0 - cmp.z __1 - beq __b3 - // queen::@5 - // board[r]=column - // [188] *((const byte*) board + (byte) queen::r) ← (byte) queen::column -- pbuc1_derefidx_vbuz1=vbuz2 - lda.z column - ldy.z r - sta board,y - // if(r==N) - // [189] if((byte) queen::r==(byte) 8) goto queen::@4 -- vbuz1_eq_vbuc1_then_la1 - //no conflicts so place queen - lda #8 - cmp.z r - beq __b4 - // queen::@6 - // asm - // asm { ldacolumn pha ldar pha } - // Push the local vars on the stack (waiting for proper recursion support) - lda column - pha - tya - pha - // r+1 - // [191] (byte~) queen::$4 ← (byte) queen::r + (byte) 1 -- vbuz1=vbuz1_plus_1 - inc.z __4 - // queen(r+1) - // [192] stackpush(byte) ← (byte~) queen::$4 -- _stackpushbyte_=vbuz1 - //try queen with next position - lda.z __4 - pha - // [193] callexecute queen -- jsr - jsr queen - // sideeffect stackpullbytes((number) 1) -- _stackpullbyte_1 - pla - // asm - // asm { pla star pla stacolumn } - // Pop the local vars on the stack (waiting for proper recursion support) - pla - sta r - pla - sta column - // queen::@3 - __b3: - // for(__ma char column=1;column<=N;++column) - // [196] (byte) queen::column ← ++ (byte) queen::column -- vbuz1=_inc_vbuz1 - inc.z column - jmp __b1 - // [197] phi from queen::@5 to queen::@4 [phi:queen::@5->queen::@4] - // queen::@4 - __b4: - // print() - // [198] call print - //dead end - jsr print - jmp __b3 -} - // print -//function for printing the solution -print: { - .label i = $b - .label i1 = $b - .label j = $12 - // printf("\nSolution %u:\n ",++count); - // [199] (byte) count ← ++ (byte) count -- vbuz1=_inc_vbuz1 - inc.z count - // printf("\nSolution %u:\n ",++count) - // [200] call printf_str - // [104] phi from print to printf_str [phi:print->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str [phi:print->printf_str#0] -- pbuz1=pbuc1 - lda #str - sta.z printf_str.str+1 - jsr printf_str - // print::@11 - // printf("\nSolution %u:\n ",++count) - // [201] (byte) printf_uchar::uvalue#0 ← (byte) count -- vbuz1=vbuz2 - lda.z count - sta.z printf_uchar.uvalue - // [202] call printf_uchar - // [226] phi from print::@11 to printf_uchar [phi:print::@11->printf_uchar] - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#0 [phi:print::@11->printf_uchar#0] -- register_copy - jsr printf_uchar - // [203] phi from print::@11 to print::@12 [phi:print::@11->print::@12] - // print::@12 - // printf("\nSolution %u:\n ",++count) - // [204] call printf_str - // [104] phi from print::@12 to printf_str [phi:print::@12->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str1 [phi:print::@12->printf_str#0] -- pbuz1=pbuc1 - lda #str1 - sta.z printf_str.str+1 - jsr printf_str - // [205] phi from print::@12 to print::@1 [phi:print::@12->print::@1] - // [205] phi (byte) print::i#2 = (byte) 1 [phi:print::@12->print::@1#0] -- vbuz1=vbuc1 - lda #1 - sta.z i - // print::@1 - __b1: - // for(char i=1;i<=N;++i) - // [206] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2 -- vbuz1_lt_vbuc1_then_la1 - lda.z i - cmp #8+1 - bcc __b2 - // [207] phi from print::@1 to print::@3 [phi:print::@1->print::@3] - // [207] phi (byte) print::i1#2 = (byte) 1 [phi:print::@1->print::@3#0] -- vbuz1=vbuc1 - lda #1 - sta.z i1 - // print::@3 - __b3: - // for(char i=1;i<=N;++i) - // [208] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4 -- vbuz1_lt_vbuc1_then_la1 - lda.z i1 - cmp #8+1 - bcc __b4 - // print::@return - // } - // [209] return - rts - // [210] phi from print::@3 to print::@4 [phi:print::@3->print::@4] - // print::@4 - __b4: - // printf("\n%u",i) - // [211] call printf_str - // [104] phi from print::@4 to printf_str [phi:print::@4->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str2 [phi:print::@4->printf_str#0] -- pbuz1=pbuc1 - lda #str2 - sta.z printf_str.str+1 - jsr printf_str - // print::@14 - // printf("\n%u",i) - // [212] (byte) printf_uchar::uvalue#2 ← (byte) print::i1#2 - // [213] call printf_uchar - // [226] phi from print::@14 to printf_uchar [phi:print::@14->printf_uchar] - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#2 [phi:print::@14->printf_uchar#0] -- register_copy - jsr printf_uchar - // [214] phi from print::@14 to print::@5 [phi:print::@14->print::@5] - // [214] phi (byte) print::j#2 = (byte) 1 [phi:print::@14->print::@5#0] -- vbuz1=vbuc1 - lda #1 - sta.z j - // print::@5 - __b5: - // for(char j=1;j<=N;++j) - // [215] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6 -- vbuz1_lt_vbuc1_then_la1 - lda.z j - cmp #8+1 - bcc __b6 - // print::@7 - // for(char i=1;i<=N;++i) - // [216] (byte) print::i1#1 ← ++ (byte) print::i1#2 -- vbuz1=_inc_vbuz1 - inc.z i1 - // [207] phi from print::@7 to print::@3 [phi:print::@7->print::@3] - // [207] phi (byte) print::i1#2 = (byte) print::i1#1 [phi:print::@7->print::@3#0] -- register_copy - jmp __b3 - // print::@6 - __b6: - // if(board[i]==j) - // [217] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8 -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //for nxn board - ldy.z i1 - lda board,y - cmp.z j - beq __b8 - // [218] phi from print::@6 to print::@10 [phi:print::@6->print::@10] - // print::@10 - // printf("-") - // [219] call printf_str - // [104] phi from print::@10 to printf_str [phi:print::@10->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str4 [phi:print::@10->printf_str#0] -- pbuz1=pbuc1 - lda #str4 - sta.z printf_str.str+1 - jsr printf_str - // print::@9 - __b9: - // for(char j=1;j<=N;++j) - // [220] (byte) print::j#1 ← ++ (byte) print::j#2 -- vbuz1=_inc_vbuz1 - inc.z j - // [214] phi from print::@9 to print::@5 [phi:print::@9->print::@5] - // [214] phi (byte) print::j#2 = (byte) print::j#1 [phi:print::@9->print::@5#0] -- register_copy - jmp __b5 - // [221] phi from print::@6 to print::@8 [phi:print::@6->print::@8] - // print::@8 - __b8: - // printf("Q") - // [222] call printf_str - // [104] phi from print::@8 to printf_str [phi:print::@8->printf_str] - // [104] phi (byte*) printf_str::str#11 = (const byte*) print::str3 [phi:print::@8->printf_str#0] -- pbuz1=pbuc1 - lda #str3 - sta.z printf_str.str+1 - jsr printf_str - jmp __b9 - // print::@2 - __b2: - // printf("%u",i) - // [223] (byte) printf_uchar::uvalue#1 ← (byte) print::i#2 - // [224] call printf_uchar - // [226] phi from print::@2 to printf_uchar [phi:print::@2->printf_uchar] - // [226] phi (byte) printf_uchar::uvalue#3 = (byte) printf_uchar::uvalue#1 [phi:print::@2->printf_uchar#0] -- register_copy - jsr printf_uchar - // print::@13 - // for(char i=1;i<=N;++i) - // [225] (byte) print::i#1 ← ++ (byte) print::i#2 -- vbuz1=_inc_vbuz1 - inc.z i - // [205] phi from print::@13 to print::@1 [phi:print::@13->print::@1] - // [205] phi (byte) print::i#2 = (byte) print::i#1 [phi:print::@13->print::@1#0] -- register_copy - jmp __b1 - str: .text @"\nSolution " - .byte 0 - str1: .text @":\n " - .byte 0 - str2: .text @"\n" - .byte 0 - str3: .text "Q" - .byte 0 - str4: .text "-" - .byte 0 -} - // printf_uchar -// Print an unsigned char using a specific format -// printf_uchar(byte zp($b) uvalue) -printf_uchar: { - .label uvalue = $b - // printf_uchar::@1 - // printf_buffer.sign = format.sign_always?'+':0 - // [227] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 - // Handle any sign - lda #0 - sta printf_buffer - // uctoa(uvalue, printf_buffer.digits, format.radix) - // [228] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#3 -- vbuz1=vbuz2 - lda.z uvalue - sta.z uctoa.value - // [229] call uctoa - // Format number into buffer - // [233] phi from printf_uchar::@1 to uctoa [phi:printf_uchar::@1->uctoa] - jsr uctoa - // printf_uchar::@2 - // printf_number_buffer(printf_buffer, format) - // [230] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 - lda printf_buffer - sta.z printf_number_buffer.buffer_sign - // [231] call printf_number_buffer - // Print using format - // [26] phi from printf_uchar::@2 to printf_number_buffer [phi:printf_uchar::@2->printf_number_buffer] - // [26] phi (byte) printf_number_buffer::format_upper_case#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#0] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_upper_case - // [26] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uchar::@2->printf_number_buffer#1] -- register_copy - // [26] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uchar::@2->printf_number_buffer#2] -- pbuz1=pbuc1 - lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS - sta.z printf_number_buffer.buffer_digits+1 - // [26] phi (byte) printf_number_buffer::format_zero_padding#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#3] -- vbuz1=vbuc1 - lda #0 - sta.z printf_number_buffer.format_zero_padding - // [26] phi (byte) printf_number_buffer::format_justify_left#10 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#4] -- vbuz1=vbuc1 - sta.z printf_number_buffer.format_justify_left - // [26] phi (byte) printf_number_buffer::format_min_length#2 = (byte) 0 [phi:printf_uchar::@2->printf_number_buffer#5] -- vbuz1=vbuc1 - sta.z printf_number_buffer.format_min_length - jsr printf_number_buffer - // printf_uchar::@return - // } - // [232] return - rts } // uctoa // Converts unsigned number value to a string representing it in RADIX format. @@ -11467,112 +12988,109 @@ printf_uchar: { // - value : The number to be converted to RADIX // - buffer : receives the string representing the number and zero-termination. // - radix : The radix to convert the number to (from the enum RADIX) -// uctoa(byte zp(7) value, byte* zp($13) buffer) +// uctoa(byte register(X) value, byte* zp($13) buffer) uctoa: { - .label digit_value = $17 + .label digit_value = $1c .label buffer = $13 - .label digit = 6 - .label value = 7 - .label started = 8 - // [234] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] - // [234] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 + .label digit = $b + .label started = $c + // [188] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1] + // [188] phi (byte*) uctoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS sta.z buffer+1 - // [234] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::started#2 = (byte) 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 lda #0 sta.z started - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 sta.z digit // uctoa::@1 __b1: // for( char digit=0; digit= digit_value) - // [241] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 + // [195] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5 -- vbuc1_neq_vbuz1_then_la1 lda #0 cmp.z started bne __b5 // uctoa::@7 - // [242] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuz1_ge_vbuz2_then_la1 - lda.z value - cmp.z digit_value + // [196] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1 + cpx.z digit_value bcs __b5 - // [243] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy + // [197] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4] + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy // uctoa::@4 __b4: // for( char digit=0; digituctoa::@1] - // [234] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy - // [234] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy - // [234] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy - // [234] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy + // [188] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1] + // [188] phi (byte*) uctoa::buffer#11 = (byte*) uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy + // [188] phi (byte) uctoa::started#2 = (byte) uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy + // [188] phi (byte) uctoa::value#2 = (byte) uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy + // [188] phi (byte) uctoa::digit#2 = (byte) uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy jmp __b1 // uctoa::@5 __b5: // uctoa_append(buffer++, value, digit_value) - // [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 - // [252] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] + // [199] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11 + // [200] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2 + // [201] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0 + // [202] call uctoa_append + // [206] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append] jsr uctoa_append // uctoa_append(buffer++, value, digit_value) - // [249] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 + // [203] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2 // uctoa::@6 // value = uctoa_append(buffer++, value, digit_value) - // [250] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 + // [204] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0 // value = uctoa_append(buffer++, value, digit_value); - // [251] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 + // [205] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11 -- pbuz1=_inc_pbuz1 inc.z buffer bne !+ inc.z buffer+1 !: - // [243] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] - // [243] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy - // [243] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 + // [197] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4] + // [197] phi (byte*) uctoa::buffer#14 = (byte*) uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy + // [197] phi (byte) uctoa::started#4 = (byte) 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 lda #1 sta.z started - // [243] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy + // [197] phi (byte) uctoa::value#6 = (byte) uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy jmp __b4 } // uctoa_append @@ -11584,196 +13102,719 @@ uctoa: { // - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. // (For decimal the subs used are 10000, 1000, 100, 10, 1) // returns : the value reduced by sub * digit so that it is less than sub. -// uctoa_append(byte* zp($13) buffer, byte zp(7) value, byte zp($17) sub) +// uctoa_append(byte* zp($13) buffer, byte register(X) value, byte zp($1c) sub) uctoa_append: { .label buffer = $13 - .label value = 7 - .label sub = $17 - .label return = 7 - .label digit = 9 - // [253] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] - // [253] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuz1=vbuc1 - lda #0 - sta.z digit - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy + .label sub = $1c + // [207] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1] + // [207] phi (byte) uctoa_append::digit#2 = (byte) 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1 + ldy #0 + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy // uctoa_append::@1 __b1: // while (value >= sub) - // [254] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuz1_ge_vbuz2_then_la1 - lda.z value - cmp.z sub + // [208] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1 + cpx.z sub bcs __b2 // uctoa_append::@3 // *buffer = DIGITS[digit] - // [255] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 - ldy.z digit + // [209] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuyy lda DIGITS,y ldy #0 sta (buffer),y // uctoa_append::@return // } - // [256] return + // [210] return rts // uctoa_append::@2 __b2: // digit++; - // [257] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuz1=_inc_vbuz1 - inc.z digit + // [211] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2 -- vbuyy=_inc_vbuyy + iny // value -= sub - // [258] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuz1=vbuz1_minus_vbuz2 + // [212] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1 + txa + sec + sbc.z sub + tax + // [207] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] + // [207] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy + // [207] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_ulong +// Print an unsigned int using a specific format +// printf_ulong(dword zp(2) uvalue) +printf_ulong: { + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + .label uvalue = 2 + // printf_ulong::@1 + // printf_buffer.sign = format.sign_always?'+':0 + // [214] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // ultoa(uvalue, printf_buffer.digits, format.radix) + // [215] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#0 -- vduz1=vduz2 + lda.z uvalue + sta.z ultoa.value + lda.z uvalue+1 + sta.z ultoa.value+1 + lda.z uvalue+2 + sta.z ultoa.value+2 + lda.z uvalue+3 + sta.z ultoa.value+3 + // [216] call ultoa + // Format number into buffer + // [220] phi from printf_ulong::@1 to ultoa [phi:printf_ulong::@1->ultoa] + jsr ultoa + // printf_ulong::@2 + // printf_number_buffer(printf_buffer, format) + // [217] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [218] call printf_number_buffer + // Print using format + // [70] phi from printf_ulong::@2 to printf_number_buffer [phi:printf_ulong::@2->printf_number_buffer] + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_ulong::format_upper_case#0 [phi:printf_ulong::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#0 [phi:printf_ulong::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_ulong::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_ulong::format_zero_padding#0 [phi:printf_ulong::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_ulong::format_justify_left#0 [phi:printf_ulong::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_ulong::format_min_length#0 [phi:printf_ulong::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + ldx #format_min_length + jsr printf_number_buffer + // printf_ulong::@return + // } + // [219] return + rts +} + // ultoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// ultoa(dword zp($e) value, byte* zp($22) buffer) +ultoa: { + .const max_digits = $a + .label digit_value = $1d + .label buffer = $22 + .label digit = $d + .label value = $e + // [221] phi from ultoa to ultoa::@1 [phi:ultoa->ultoa::@1] + // [221] phi (byte*) ultoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:ultoa->ultoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [221] phi (byte) ultoa::started#2 = (byte) 0 [phi:ultoa->ultoa::@1#1] -- vbuxx=vbuc1 + ldx #0 + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#1 [phi:ultoa->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) 0 [phi:ultoa->ultoa::@1#3] -- vbuz1=vbuc1 + txa + sta.z digit + // ultoa::@1 + __b1: + // for( char digit=0; digit= digit_value) + // [230] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5 -- vbuc1_neq_vbuxx_then_la1 + cpx #0 + bne __b5 + // ultoa::@7 + // [231] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z digit_value+3 + bcc !+ + bne __b5 + lda.z value+2 + cmp.z digit_value+2 + bcc !+ + bne __b5 + lda.z value+1 + cmp.z digit_value+1 + bcc !+ + bne __b5 + lda.z value + cmp.z digit_value + bcs __b5 + !: + // [232] phi from ultoa::@7 to ultoa::@4 [phi:ultoa::@7->ultoa::@4] + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#11 [phi:ultoa::@7->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) ultoa::started#2 [phi:ultoa::@7->ultoa::@4#1] -- register_copy + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#2 [phi:ultoa::@7->ultoa::@4#2] -- register_copy + // ultoa::@4 + __b4: + // for( char digit=0; digitultoa::@1] + // [221] phi (byte*) ultoa::buffer#11 = (byte*) ultoa::buffer#14 [phi:ultoa::@4->ultoa::@1#0] -- register_copy + // [221] phi (byte) ultoa::started#2 = (byte) ultoa::started#4 [phi:ultoa::@4->ultoa::@1#1] -- register_copy + // [221] phi (dword) ultoa::value#2 = (dword) ultoa::value#6 [phi:ultoa::@4->ultoa::@1#2] -- register_copy + // [221] phi (byte) ultoa::digit#2 = (byte) ultoa::digit#1 [phi:ultoa::@4->ultoa::@1#3] -- register_copy + jmp __b1 + // ultoa::@5 + __b5: + // ultoa_append(buffer++, value, digit_value) + // [234] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11 + // [235] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2 + // [236] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0 + // [237] call ultoa_append + // [241] phi from ultoa::@5 to ultoa_append [phi:ultoa::@5->ultoa_append] + jsr ultoa_append + // ultoa_append(buffer++, value, digit_value) + // [238] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2 + // ultoa::@6 + // value = ultoa_append(buffer++, value, digit_value) + // [239] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0 + // value = ultoa_append(buffer++, value, digit_value); + // [240] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [232] phi from ultoa::@6 to ultoa::@4 [phi:ultoa::@6->ultoa::@4] + // [232] phi (byte*) ultoa::buffer#14 = (byte*) ultoa::buffer#4 [phi:ultoa::@6->ultoa::@4#0] -- register_copy + // [232] phi (byte) ultoa::started#4 = (byte) 1 [phi:ultoa::@6->ultoa::@4#1] -- vbuxx=vbuc1 + ldx #1 + // [232] phi (dword) ultoa::value#6 = (dword) ultoa::value#0 [phi:ultoa::@6->ultoa::@4#2] -- register_copy + jmp __b4 +} + // ultoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// ultoa_append(byte* zp($22) buffer, dword zp($e) value, dword zp($1d) sub) +ultoa_append: { + .label buffer = $22 + .label value = $e + .label sub = $1d + .label return = $e + // [242] phi from ultoa_append to ultoa_append::@1 [phi:ultoa_append->ultoa_append::@1] + // [242] phi (byte) ultoa_append::digit#2 = (byte) 0 [phi:ultoa_append->ultoa_append::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#0 [phi:ultoa_append->ultoa_append::@1#1] -- register_copy + // ultoa_append::@1 + __b1: + // while (value >= sub) + // [243] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2 -- vduz1_ge_vduz2_then_la1 + lda.z value+3 + cmp.z sub+3 + bcc !+ + bne __b2 + lda.z value+2 + cmp.z sub+2 + bcc !+ + bne __b2 + lda.z value+1 + cmp.z sub+1 + bcc !+ + bne __b2 + lda.z value + cmp.z sub + bcs __b2 + !: + // ultoa_append::@3 + // *buffer = DIGITS[digit] + // [244] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda DIGITS,x + ldy #0 + sta (buffer),y + // ultoa_append::@return + // } + // [245] return + rts + // ultoa_append::@2 + __b2: + // digit++; + // [246] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2 -- vbuxx=_inc_vbuxx + inx + // value -= sub + // [247] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0 -- vduz1=vduz1_minus_vduz2 lda.z value sec sbc.z sub sta.z value - // [253] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1] - // [253] phi (byte) uctoa_append::digit#2 = (byte) uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy - // [253] phi (byte) uctoa_append::value#2 = (byte) uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + lda.z value+2 + sbc.z sub+2 + sta.z value+2 + lda.z value+3 + sbc.z sub+3 + sta.z value+3 + // [242] phi from ultoa_append::@2 to ultoa_append::@1 [phi:ultoa_append::@2->ultoa_append::@1] + // [242] phi (byte) ultoa_append::digit#2 = (byte) ultoa_append::digit#1 [phi:ultoa_append::@2->ultoa_append::@1#0] -- register_copy + // [242] phi (dword) ultoa_append::value#2 = (dword) ultoa_append::value#1 [phi:ultoa_append::@2->ultoa_append::@1#1] -- register_copy jmp __b1 } - // place -// function to check conflicts -// If no conflict for desired postion returns 1 otherwise returns 0 -// place(byte zp($15) row, byte zp($16) column) -place: { - .label __0 = $17 - .label __3 = $18 - .label __4 = $11 - .label row = $15 - .label column = $16 - .label return = $b - .label i = $a - // [260] phi from place to place::@1 [phi:place->place::@1] - // [260] phi (byte) place::i#3 = (byte) 1 [phi:place->place::@1#0] -- vbuz1=vbuc1 - lda #1 - sta.z i - // place::@1 + // legal +// 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 +// legal(byte zp($12) row, byte zp($1b) column) +legal: { + .label __3 = $21 + .label row = $12 + .label column = $1b + // [249] phi from legal to legal::@1 [phi:legal->legal::@1] + // [249] phi (byte) legal::i#2 = (byte) 1 [phi:legal->legal::@1#0] -- vbuyy=vbuc1 + ldy #1 + // legal::@1 __b1: // row-1 - // [261] (byte~) place::$0 ← (byte) place::row#0 - (byte) 1 -- vbuz1=vbuz2_minus_1 + // [250] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1 -- vbuxx=vbuz1_minus_1 ldx.z row dex - stx.z __0 - // for(i=1;i<=row-1;++i) - // [262] if((byte) place::i#3<=(byte~) place::$0) goto place::@2 -- vbuz1_le_vbuz2_then_la1 - txa - cmp.z i + // for(char i=1;i<=row-1;++i) + // [251] if((byte) legal::i#2<=(byte~) legal::$0) goto legal::@2 -- vbuyy_le_vbuxx_then_la1 + sty.z $ff + cpx.z $ff bcs __b2 - // [263] phi from place::@1 to place::@return [phi:place::@1->place::@return] - // [263] phi (byte) place::return#4 = (byte) 1 [phi:place::@1->place::@return#0] -- vbuz1=vbuc1 + // [252] phi from legal::@1 to legal::@return [phi:legal::@1->legal::@return] + // [252] phi (byte) legal::return#4 = (byte) 1 [phi:legal::@1->legal::@return#0] -- vbuaa=vbuc1 lda #1 - sta.z return rts - // [263] phi from place::@2 place::@6 to place::@return [phi:place::@2/place::@6->place::@return] + // [252] phi from legal::@2 legal::@6 to legal::@return [phi:legal::@2/legal::@6->legal::@return] __b4: - // [263] phi (byte) place::return#4 = (byte) 0 [phi:place::@2/place::@6->place::@return#0] -- vbuz1=vbuc1 + // [252] phi (byte) legal::return#4 = (byte) 0 [phi:legal::@2/legal::@6->legal::@return#0] -- vbuaa=vbuc1 lda #0 - sta.z return - // place::@return + // legal::@return // } - // [264] return + // [253] return rts - // place::@2 + // legal::@2 __b2: // if(board[i]==column) - // [265] if(*((const byte*) board + (byte) place::i#3)==(byte) place::column#0) goto place::@return -- pbuc1_derefidx_vbuz1_eq_vbuz2_then_la1 - //checking column and digonal conflicts - ldy.z i + // [254] if(*((const byte*) board + (byte) legal::i#2)==(byte) legal::column#0) goto legal::@return -- pbuc1_derefidx_vbuyy_eq_vbuz1_then_la1 lda board,y cmp.z column beq __b4 - // place::@4 + // legal::@4 // diff(board[i],column) - // [266] (byte) diff::a#0 ← *((const byte*) board + (byte) place::i#3) -- vbuz1=pbuc1_derefidx_vbuz2 + // [255] (byte) diff::a#0 ← *((const byte*) board + (byte) legal::i#2) -- vbuaa=pbuc1_derefidx_vbuyy lda board,y - sta.z diff.a - // [267] (byte) diff::b#0 ← (byte) place::column#0 -- vbuz1=vbuz2 - lda.z column - sta.z diff.b - // [268] call diff - // [278] phi from place::@4 to diff [phi:place::@4->diff] - // [278] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:place::@4->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:place::@4->diff#1] -- register_copy + // [256] (byte) diff::b#0 ← (byte) legal::column#0 -- vbuxx=vbuz1 + ldx.z column + // [257] call diff + // [267] phi from legal::@4 to diff [phi:legal::@4->diff] + // [267] phi (byte) diff::b#2 = (byte) diff::b#0 [phi:legal::@4->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#0 [phi:legal::@4->diff#1] -- register_copy jsr diff // diff(board[i],column) - // [269] (byte) diff::return#0 ← (byte) diff::return#4 -- vbuz1=vbuz2 - lda.z diff.return_1 - sta.z diff.return - // place::@5 - // [270] (byte~) place::$3 ← (byte) diff::return#0 + // [258] (byte) diff::return#0 ← (byte) diff::return#4 + // legal::@5 + // [259] (byte~) legal::$3 ← (byte) diff::return#0 -- vbuz1=vbuaa + sta.z __3 // diff(i,row) - // [271] (byte) diff::a#1 ← (byte) place::i#3 -- vbuz1=vbuz2 - lda.z i - sta.z diff.a - // [272] (byte) diff::b#1 ← (byte) place::row#0 -- vbuz1=vbuz2 - lda.z row - sta.z diff.b - // [273] call diff - // [278] phi from place::@5 to diff [phi:place::@5->diff] - // [278] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:place::@5->diff#0] -- register_copy - // [278] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:place::@5->diff#1] -- register_copy + // [260] (byte) diff::a#1 ← (byte) legal::i#2 -- vbuaa=vbuyy + tya + // [261] (byte) diff::b#1 ← (byte) legal::row#0 -- vbuxx=vbuz1 + ldx.z row + // [262] call diff + // [267] phi from legal::@5 to diff [phi:legal::@5->diff] + // [267] phi (byte) diff::b#2 = (byte) diff::b#1 [phi:legal::@5->diff#0] -- register_copy + // [267] phi (byte) diff::a#2 = (byte) diff::a#1 [phi:legal::@5->diff#1] -- register_copy jsr diff // diff(i,row) - // [274] (byte) diff::return#1 ← (byte) diff::return#4 - // place::@6 - // [275] (byte~) place::$4 ← (byte) diff::return#1 + // [263] (byte) diff::return#1 ← (byte) diff::return#4 + // legal::@6 + // [264] (byte~) legal::$4 ← (byte) diff::return#1 // if(diff(board[i],column)==diff(i,row)) - // [276] if((byte~) place::$3!=(byte~) place::$4) goto place::@3 -- vbuz1_neq_vbuz2_then_la1 - lda.z __3 - cmp.z __4 + // [265] if((byte~) legal::$3!=(byte~) legal::$4) goto legal::@3 -- vbuz1_neq_vbuaa_then_la1 + cmp.z __3 bne __b3 jmp __b4 - // place::@3 + // legal::@3 __b3: - // for(i=1;i<=row-1;++i) - // [277] (byte) place::i#2 ← ++ (byte) place::i#3 -- vbuz1=_inc_vbuz1 - inc.z i - // [260] phi from place::@3 to place::@1 [phi:place::@3->place::@1] - // [260] phi (byte) place::i#3 = (byte) place::i#2 [phi:place::@3->place::@1#0] -- register_copy + // for(char i=1;i<=row-1;++i) + // [266] (byte) legal::i#1 ← ++ (byte) legal::i#2 -- vbuyy=_inc_vbuyy + iny + // [249] phi from legal::@3 to legal::@1 [phi:legal::@3->legal::@1] + // [249] phi (byte) legal::i#2 = (byte) legal::i#1 [phi:legal::@3->legal::@1#0] -- register_copy jmp __b1 } // diff // Find the absolute difference between two unsigned chars -// diff(byte zp($11) a, byte zp($12) b) +// diff(byte register(A) a, byte register(X) b) diff: { - .label a = $11 - .label b = $12 - .label return = $18 - .label return_1 = $11 // if(adiff::@return] - // [281] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy + sbc.z $ff + // [270] phi from diff::@1 diff::@2 to diff::@return [phi:diff::@1/diff::@2->diff::@return] + // [270] phi (byte) diff::return#4 = (byte) diff::return#2 [phi:diff::@1/diff::@2->diff::@return#0] -- register_copy // diff::@return // } - // [282] return + // [271] return rts // diff::@1 __b1: // return b-a; - // [283] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuz1=vbuz2_minus_vbuz1 - lda.z b + // [272] (byte) diff::return#2 ← (byte) diff::b#2 - (byte) diff::a#2 -- vbuaa=vbuxx_minus_vbuaa + sta.z $ff + txa sec - sbc.z return_1 - sta.z return_1 + sbc.z $ff + rts +} + // printf_uint +// Print an unsigned int using a specific format +printf_uint: { + .label uvalue = 8 + .const format_min_length = 0 + .const format_justify_left = 0 + .const format_zero_padding = 0 + .const format_upper_case = 0 + // printf_uint::@1 + // printf_buffer.sign = format.sign_always?'+':0 + // [274] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // Handle any sign + lda #0 + sta printf_buffer + // utoa(uvalue, printf_buffer.digits, format.radix) + // [275] call utoa + // Format number into buffer + // [279] phi from printf_uint::@1 to utoa [phi:printf_uint::@1->utoa] + jsr utoa + // printf_uint::@2 + // printf_number_buffer(printf_buffer, format) + // [276] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer) -- vbuz1=_deref_pbuc1 + lda printf_buffer + sta.z printf_number_buffer.buffer_sign + // [277] call printf_number_buffer + // Print using format + // [70] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer] + // [70] phi (byte) printf_number_buffer::format_upper_case#10 = (const byte) printf_uint::format_upper_case#0 [phi:printf_uint::@2->printf_number_buffer#0] -- vbuz1=vbuc1 + lda #format_upper_case + sta.z printf_number_buffer.format_upper_case + // [70] phi (byte) printf_number_buffer::buffer_sign#10 = (byte) printf_number_buffer::buffer_sign#1 [phi:printf_uint::@2->printf_number_buffer#1] -- register_copy + // [70] phi (byte*) printf_number_buffer::buffer_digits#10 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:printf_uint::@2->printf_number_buffer#2] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z printf_number_buffer.buffer_digits+1 + // [70] phi (byte) printf_number_buffer::format_zero_padding#10 = (const byte) printf_uint::format_zero_padding#0 [phi:printf_uint::@2->printf_number_buffer#3] -- vbuz1=vbuc1 + lda #format_zero_padding + sta.z printf_number_buffer.format_zero_padding + // [70] phi (byte) printf_number_buffer::format_justify_left#10 = (const byte) printf_uint::format_justify_left#0 [phi:printf_uint::@2->printf_number_buffer#4] -- vbuz1=vbuc1 + lda #format_justify_left + sta.z printf_number_buffer.format_justify_left + // [70] phi (byte) printf_number_buffer::format_min_length#3 = (const byte) printf_uint::format_min_length#0 [phi:printf_uint::@2->printf_number_buffer#5] -- vbuxx=vbuc1 + ldx #format_min_length + jsr printf_number_buffer + // printf_uint::@return + // } + // [278] return + rts +} + // utoa +// Converts unsigned number value to a string representing it in RADIX format. +// If the leading digits are zero they are not included in the string. +// - value : The number to be converted to RADIX +// - buffer : receives the string representing the number and zero-termination. +// - radix : The radix to convert the number to (from the enum RADIX) +// utoa(word zp($13) value, byte* zp($15) buffer) +utoa: { + .const max_digits = 5 + .label digit_value = $22 + .label buffer = $15 + .label digit = $12 + .label value = $13 + // [280] phi from utoa to utoa::@1 [phi:utoa->utoa::@1] + // [280] phi (byte*) utoa::buffer#11 = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1 + lda #printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS + sta.z buffer+1 + // [280] phi (byte) utoa::started#2 = (byte) 0 [phi:utoa->utoa::@1#1] -- vbuxx=vbuc1 + ldx #0 + // [280] phi (word) utoa::value#2 = (const word) printf_uint::uvalue#0 [phi:utoa->utoa::@1#2] -- vwuz1=vwuc1 + lda #printf_uint.uvalue + sta.z value+1 + // [280] phi (byte) utoa::digit#2 = (byte) 0 [phi:utoa->utoa::@1#3] -- vbuz1=vbuc1 + txa + sta.z digit + // utoa::@1 + __b1: + // for( char digit=0; digit= digit_value) + // [289] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5 -- vbuc1_neq_vbuxx_then_la1 + cpx #0 + bne __b5 + // utoa::@7 + // [290] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5 -- vwuz1_ge_vwuz2_then_la1 + cmp.z value+1 + bne !+ + lda.z digit_value + cmp.z value + beq __b5 + !: + bcc __b5 + // [291] phi from utoa::@7 to utoa::@4 [phi:utoa::@7->utoa::@4] + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#11 [phi:utoa::@7->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) utoa::started#2 [phi:utoa::@7->utoa::@4#1] -- register_copy + // [291] phi (word) utoa::value#6 = (word) utoa::value#2 [phi:utoa::@7->utoa::@4#2] -- register_copy + // utoa::@4 + __b4: + // for( char digit=0; digitutoa::@1] + // [280] phi (byte*) utoa::buffer#11 = (byte*) utoa::buffer#14 [phi:utoa::@4->utoa::@1#0] -- register_copy + // [280] phi (byte) utoa::started#2 = (byte) utoa::started#4 [phi:utoa::@4->utoa::@1#1] -- register_copy + // [280] phi (word) utoa::value#2 = (word) utoa::value#6 [phi:utoa::@4->utoa::@1#2] -- register_copy + // [280] phi (byte) utoa::digit#2 = (byte) utoa::digit#1 [phi:utoa::@4->utoa::@1#3] -- register_copy + jmp __b1 + // utoa::@5 + __b5: + // utoa_append(buffer++, value, digit_value) + // [293] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11 + // [294] (word) utoa_append::value#0 ← (word) utoa::value#2 + // [295] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0 + // [296] call utoa_append + // [300] phi from utoa::@5 to utoa_append [phi:utoa::@5->utoa_append] + jsr utoa_append + // utoa_append(buffer++, value, digit_value) + // [297] (word) utoa_append::return#0 ← (word) utoa_append::value#2 + // utoa::@6 + // value = utoa_append(buffer++, value, digit_value) + // [298] (word) utoa::value#0 ← (word) utoa_append::return#0 + // value = utoa_append(buffer++, value, digit_value); + // [299] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11 -- pbuz1=_inc_pbuz1 + inc.z buffer + bne !+ + inc.z buffer+1 + !: + // [291] phi from utoa::@6 to utoa::@4 [phi:utoa::@6->utoa::@4] + // [291] phi (byte*) utoa::buffer#14 = (byte*) utoa::buffer#4 [phi:utoa::@6->utoa::@4#0] -- register_copy + // [291] phi (byte) utoa::started#4 = (byte) 1 [phi:utoa::@6->utoa::@4#1] -- vbuxx=vbuc1 + ldx #1 + // [291] phi (word) utoa::value#6 = (word) utoa::value#0 [phi:utoa::@6->utoa::@4#2] -- register_copy + jmp __b4 +} + // utoa_append +// Used to convert a single digit of an unsigned number value to a string representation +// Counts a single digit up from '0' as long as the value is larger than sub. +// Each time the digit is increased sub is subtracted from value. +// - buffer : pointer to the char that receives the digit +// - value : The value where the digit will be derived from +// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased. +// (For decimal the subs used are 10000, 1000, 100, 10, 1) +// returns : the value reduced by sub * digit so that it is less than sub. +// utoa_append(byte* zp($15) buffer, word zp($13) value, word zp($22) sub) +utoa_append: { + .label buffer = $15 + .label value = $13 + .label sub = $22 + .label return = $13 + // [301] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1] + // [301] phi (byte) utoa_append::digit#2 = (byte) 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy + // utoa_append::@1 + __b1: + // while (value >= sub) + // [302] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 + lda.z sub+1 + cmp.z value+1 + bne !+ + lda.z sub + cmp.z value + beq __b2 + !: + bcc __b2 + // utoa_append::@3 + // *buffer = DIGITS[digit] + // [303] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda DIGITS,x + ldy #0 + sta (buffer),y + // utoa_append::@return + // } + // [304] return + rts + // utoa_append::@2 + __b2: + // digit++; + // [305] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2 -- vbuxx=_inc_vbuxx + inx + // value -= sub + // [306] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 + lda.z value + sec + sbc.z sub + sta.z value + lda.z value+1 + sbc.z sub+1 + sta.z value+1 + // [301] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1] + // [301] phi (byte) utoa_append::digit#2 = (byte) utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy + // [301] phi (word) utoa_append::value#2 = (word) utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy + jmp __b1 +} + // printf_cls +// Clear the screen. Also resets current line/char cursor. +printf_cls: { + // memset(PRINTF_SCREEN_ADDRESS, ' ', PRINTF_SCREEN_BYTES) + // [308] call memset + // [132] phi from printf_cls to memset [phi:printf_cls->memset] + // [132] phi (byte) memset::c#4 = (byte) ' ' [phi:printf_cls->memset#0] -- vbuxx=vbuc1 + ldx #' ' + // [132] phi (void*) memset::str#3 = (void*) 1024 [phi:printf_cls->memset#1] -- pvoz1=pvoc1 + lda #<$400 + sta.z memset.str + lda #>$400 + sta.z memset.str+1 + // [132] phi (word) memset::num#2 = (word)(number) $28*(number) $19 [phi:printf_cls->memset#2] -- vwuz1=vwuc1 + lda #<$28*$19 + sta.z memset.num + lda #>$28*$19 + sta.z memset.num+1 + jsr memset + // printf_cls::@1 + // printf_cursor_ptr = PRINTF_SCREEN_ADDRESS + // [309] (byte*) printf_cursor_ptr ← (byte*) 1024 -- pbuz1=pbuc1 + lda #<$400 + sta.z printf_cursor_ptr + lda #>$400 + sta.z printf_cursor_ptr+1 + // printf_cursor_x = 0 + // [310] (byte) printf_cursor_x ← (byte) 0 -- vbuz1=vbuc1 + lda #0 + sta.z printf_cursor_x + // printf_cursor_y = 0 + // [311] (byte) printf_cursor_y ← (byte) 0 -- vbuz1=vbuc1 + sta.z printf_cursor_y + // printf_cls::@return + // } + // [312] return rts } // File Data // The digits used for numbers DIGITS: .text "0123456789abcdef" - // Values of decimal digits - RADIX_DECIMAL_VALUES_CHAR: .byte $64, $a + // Values of hexadecimal digits + RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10 // Values of decimal digits RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a + // Values of decimal digits + RADIX_DECIMAL_VALUES_LONG: .dword $3b9aca00, $5f5e100, $989680, $f4240, $186a0, $2710, $3e8, $64, $a + // The board. board[i] holds the column position of the queen on row i. board: .fill $14, 0 // Buffer used for stringified number being printed printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0 diff --git a/src/test/ref/examples/eightqueens/eightqueens.sym b/src/test/ref/examples/eightqueens/eightqueens.sym index acfd87aac..054c742e7 100644 --- a/src/test/ref/examples/eightqueens/eightqueens.sym +++ b/src/test/ref/examples/eightqueens/eightqueens.sym @@ -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 ]