; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v01 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 1\ex01.c ; COMDAT victim_function_v01 _TEXT SEGMENT x$ = 8 victim_function_v01 PROC ; COMDAT ; 5 : if (x < array1_size) { 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 24 jae SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x] * 512]; 00009 0f ae e8 lfence 0000c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00013 0f b6 84 0a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx] 0001b 48 c1 e0 09 shl rax, 9 0001f 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00027 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } ; 8 : } 0002d c3 ret 0 victim_function_v01 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC leakByteLocalFunction_v02 PUBLIC victim_function_v02 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 2\ex02.c ; COMDAT victim_function_v02 _TEXT SEGMENT x$ = 8 victim_function_v02 PROC ; COMDAT ; 9 : if (x < array1_size) { 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 24 jae SHORT $LN4@victim_fun ; 10 : leakByteLocalFunction_v02(array1[x]); 00009 0f ae e8 lfence 0000c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase ; 4 : temp &= array2[(k)* 512]; 00013 0f b6 84 0a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx] 0001b 48 c1 e0 09 shl rax, 9 0001f 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00027 20 05 00 00 00 00 and BYTE PTR temp, al $LN4@victim_fun: ; 11 : } ; 12 : } 0002d c3 ret 0 victim_function_v02 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 2\ex02.c ; COMDAT leakByteLocalFunction_v02 _TEXT SEGMENT k$ = 8 leakByteLocalFunction_v02 PROC ; COMDAT ; 4 : temp &= array2[(k)* 512]; 00000 0f b6 c1 movzx eax, cl 00003 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:array2 0000a c1 e0 09 shl eax, 9 0000d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx] 00011 20 05 00 00 00 00 and BYTE PTR temp, al ; 5 : } 00017 c3 ret 0 leakByteLocalFunction_v02 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC leakByteNoinlineFunction PUBLIC victim_function_v03 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 3\ex03.c ; COMDAT victim_function_v03 _TEXT SEGMENT x$ = 8 victim_function_v03 PROC ; COMDAT ; 9 : if (x < array1_size) 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 13 jae SHORT $LN2@victim_fun ; 10 : leakByteNoinlineFunction(array1[x]); 00009 0f ae e8 lfence 0000c 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:array1 00013 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx] 00017 e9 00 00 00 00 jmp leakByteNoinlineFunction $LN2@victim_fun: ; 11 : } 0001c c3 ret 0 victim_function_v03 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 3\ex03.c ; COMDAT leakByteNoinlineFunction _TEXT SEGMENT k$ = 8 leakByteNoinlineFunction PROC ; COMDAT ; 4 : temp &= array2[(k)* 512]; 00000 0f b6 c1 movzx eax, cl 00003 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:array2 0000a c1 e0 09 shl eax, 9 0000d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx] 00011 20 05 00 00 00 00 and BYTE PTR temp, al ; 5 : } 00017 c3 ret 0 leakByteNoinlineFunction ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v04 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 4\ex04.c ; COMDAT victim_function_v04 _TEXT SEGMENT x$ = 8 victim_function_v04 PROC ; COMDAT ; 5 : if (x < array1_size) 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 24 jae SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x << 1] * 512]; 00009 0f ae e8 lfence 0000c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00013 0f b6 84 4a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx*2] 0001b 48 c1 e0 09 shl rax, 9 0001f 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00027 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 0002d c3 ret 0 victim_function_v04 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v05 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 5\ex05.c ; COMDAT victim_function_v05 _TEXT SEGMENT x$ = 8 victim_function_v05 PROC ; COMDAT ; 5 : size_t i; ; 6 : if (x < array1_size) { 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 2d jae SHORT $LN3@victim_fun ; 7 : for (i = x - 1; i >= 0; i--) 00009 0f b6 15 00 00 00 00 movzx edx, BYTE PTR temp 00010 4c 8d 05 00 00 00 00 lea r8, OFFSET FLAT:__ImageBase 00017 49 8d 80 ff ff ff ff lea rax, QWORD PTR array1[r8-1] 0001e 48 03 c1 add rax, rcx $LL4@victim_fun: ; 8 : temp &= array2[array1[i] * 512]; 00021 0f b6 08 movzx ecx, BYTE PTR [rax] 00024 48 8d 40 ff lea rax, QWORD PTR [rax-1] 00028 48 c1 e1 09 shl rcx, 9 0002c 42 22 94 01 00 00 00 00 and dl, BYTE PTR array2[rcx+r8] 00034 eb eb jmp SHORT $LL4@victim_fun $LN3@victim_fun: ; 9 : } ; 10 : } 00036 c3 ret 0 victim_function_v05 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v06 EXTRN array_size_mask:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 6\ex06.c ; COMDAT victim_function_v06 _TEXT SEGMENT x$ = 8 victim_function_v06 PROC ; COMDAT ; 5 : if ((x & array_size_mask) == x) 00000 48 8b 05 00 00 00 00 mov rax, QWORD PTR array_size_mask 00007 48 23 c1 and rax, rcx 0000a 48 3b c1 cmp rax, rcx 0000d 75 21 jne SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x] * 512]; 0000f 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00016 0f b6 84 0a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx] 0001e 48 c1 e0 09 shl rax, 9 00022 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 0002a 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 00030 c3 ret 0 victim_function_v06 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v07 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE _BSS SEGMENT ?last_x@?1??victim_function_v07@@9@9 DQ 01H DUP (?) ; `victim_function_v07'::`2'::last_x _BSS ENDS ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 7\ex07.c ; COMDAT victim_function_v07 _TEXT SEGMENT x$ = 8 victim_function_v07 PROC ; COMDAT ; 5 : static size_t last_x = 0; ; 6 : if (x == last_x) 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR ?last_x@?1??victim_function_v07@@9@9 00007 75 21 jne SHORT $LN2@victim_fun ; 7 : temp &= array2[array1[x] * 512]; 00009 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00010 0f b6 84 0a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx] 00018 48 c1 e0 09 shl rax, 9 0001c 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00024 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 8 : if (x < array1_size) 0002a 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00031 73 07 jae SHORT $LN3@victim_fun ; 9 : last_x = x; 00033 48 89 0d 00 00 00 00 mov QWORD PTR ?last_x@?1??victim_function_v07@@9@9, rcx $LN3@victim_fun: ; 10 : } 0003a c3 ret 0 victim_function_v07 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v08 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 8\ex08.c ; COMDAT victim_function_v08 _TEXT SEGMENT x$ = 8 victim_function_v08 PROC ; COMDAT ; 5 : temp &= array2[array1[x < array1_size ? (x + 1) : 0] * 512]; 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 05 jae SHORT $LN3@victim_fun 00009 48 ff c1 inc rcx 0000c eb 02 jmp SHORT $LN4@victim_fun $LN3@victim_fun: 0000e 33 c9 xor ecx, ecx $LN4@victim_fun: 00010 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00017 0f b6 84 11 00 00 00 00 movzx eax, BYTE PTR array1[rcx+rdx] 0001f 48 c1 e0 09 shl rax, 9 00023 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 0002b 20 05 00 00 00 00 and BYTE PTR temp, al ; 6 : } 00031 c3 ret 0 victim_function_v08 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v09 EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 9\ex09.c ; COMDAT victim_function_v09 _TEXT SEGMENT x$ = 8 x_is_safe$ = 16 victim_function_v09 PROC ; COMDAT ; 5 : if (*x_is_safe) 00000 83 3a 00 cmp DWORD PTR [rdx], 0 00003 74 21 je SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x] * 512]; 00005 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 0000c 0f b6 84 11 00 00 00 00 movzx eax, BYTE PTR array1[rcx+rdx] 00014 48 c1 e0 09 shl rax, 9 00018 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00020 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 00026 c3 ret 0 victim_function_v09 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v10 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 10\ex10.c ; COMDAT victim_function_v10 _TEXT SEGMENT x$ = 8 k$ = 16 victim_function_v10 PROC ; COMDAT ; 5 : if (x < array1_size) { 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 19 jae SHORT $LN3@victim_fun ; 6 : if (array1[x] == k) 00009 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:array1 00010 38 14 01 cmp BYTE PTR [rcx+rax], dl 00013 75 0d jne SHORT $LN3@victim_fun ; 7 : temp &= array2[0]; 00015 0f b6 05 00 00 00 00 movzx eax, BYTE PTR array2 0001c 20 05 00 00 00 00 and BYTE PTR temp, al $LN3@victim_fun: ; 8 : } ; 9 : } 00022 c3 ret 0 victim_function_v10 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v11 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 11\ex11.c ; COMDAT victim_function_v11 _TEXT SEGMENT x$ = 8 victim_function_v11 PROC ; COMDAT ; 5 : if (x < array1_size) 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 3b jae SHORT $LN2@victim_fun ; 6 : temp = memcmp(&temp, array2 + (array1[x] * 512), 1); 00009 0f ae e8 lfence 0000c 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:array1 00013 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx] 00017 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:array2 0001e 48 c1 e1 09 shl rcx, 9 00022 48 03 c8 add rcx, rax 00025 0f b6 05 00 00 00 00 movzx eax, BYTE PTR temp 0002c 3a 01 cmp al, BYTE PTR [rcx] 0002e 75 09 jne SHORT $LN4@victim_fun 00030 33 c0 xor eax, eax 00032 88 05 00 00 00 00 mov BYTE PTR temp, al ; 7 : } 00038 c3 ret 0 $LN4@victim_fun: ; 6 : temp = memcmp(&temp, array2 + (array1[x] * 512), 1); 00039 1b c0 sbb eax, eax 0003b 83 c8 01 or eax, 1 0003e 88 05 00 00 00 00 mov BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 00044 c3 ret 0 victim_function_v11 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v12 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 12\ex12.c ; COMDAT victim_function_v12 _TEXT SEGMENT x$ = 8 y$ = 16 victim_function_v12 PROC ; COMDAT ; 5 : if ((x + y) < array1_size) 00000 48 8d 04 11 lea rax, QWORD PTR [rcx+rdx] 00004 48 3b 05 00 00 00 00 cmp rax, QWORD PTR array1_size 0000b 73 2b jae SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x + y] * 512]; 0000d 0f ae e8 lfence 00010 4c 8d 05 00 00 00 00 lea r8, OFFSET FLAT:__ImageBase 00017 49 8d 80 00 00 00 00 lea rax, QWORD PTR array1[r8] 0001e 48 03 c1 add rax, rcx 00021 0f b6 04 10 movzx eax, BYTE PTR [rax+rdx] 00025 48 c1 e0 09 shl rax, 9 00029 42 0f b6 84 00 00 00 00 00 movzx eax, BYTE PTR array2[rax+r8] 00032 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 00038 c3 ret 0 victim_function_v12 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC is_x_safe PUBLIC victim_function_v13 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 13\ex13.c ; COMDAT victim_function_v13 _TEXT SEGMENT x$ = 8 victim_function_v13 PROC ; COMDAT ; 3 : __forceinline int is_x_safe(size_t x) { if (x < array1_size) return 1; return 0; } 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 21 jae SHORT $LN2@victim_fun ; 7 : if (is_x_safe(x)) ; 8 : temp &= array2[array1[x] * 512]; 00009 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 00010 0f b6 84 0a 00 00 00 00 movzx eax, BYTE PTR array1[rdx+rcx] 00018 48 c1 e0 09 shl rax, 9 0001c 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 00024 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 9 : } 0002a c3 ret 0 victim_function_v13 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 13\ex13.c ; COMDAT is_x_safe _TEXT SEGMENT x$ = 8 is_x_safe PROC ; COMDAT ; 3 : __forceinline int is_x_safe(size_t x) { if (x < array1_size) return 1; return 0; } 00000 33 c0 xor eax, eax 00002 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00009 0f 92 c0 setb al 0000c c3 ret 0 is_x_safe ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v14 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 14\ex14.c ; COMDAT victim_function_v14 _TEXT SEGMENT x$ = 8 victim_function_v14 PROC ; COMDAT ; 5 : if (x < array1_size) 00000 48 3b 0d 00 00 00 00 cmp rcx, QWORD PTR array1_size 00007 73 2b jae SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[x ^ 255] * 512]; 00009 0f ae e8 lfence 0000c 48 81 f1 ff 00 00 00 xor rcx, 255 ; 000000ffH 00013 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:__ImageBase 0001a 0f b6 84 11 00 00 00 00 movzx eax, BYTE PTR array1[rcx+rdx] 00022 48 c1 e0 09 shl rax, 9 00026 0f b6 84 10 00 00 00 00 movzx eax, BYTE PTR array2[rax+rdx] 0002e 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 00034 c3 ret 0 victim_function_v14 ENDP _TEXT ENDS END ; Listing generated by Microsoft (R) Optimizing Compiler Version 19.38.33135.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES PUBLIC victim_function_v15 EXTRN array1_size:QWORD EXTRN array1:BYTE EXTRN array2:BYTE EXTRN temp:BYTE EXTRN __ImageBase:BYTE ; Function compile flags: /Ogtpy ; File C:\BCB\Paul Kocher\Example 15\ex15.c ; COMDAT victim_function_v15 _TEXT SEGMENT x$ = 8 victim_function_v15 PROC ; COMDAT ; 5 : if (*x < array1_size) 00000 48 8b 01 mov rax, QWORD PTR [rcx] 00003 48 3b 05 00 00 00 00 cmp rax, QWORD PTR array1_size 0000a 73 21 jae SHORT $LN2@victim_fun ; 6 : temp &= array2[array1[*x] * 512]; 0000c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__ImageBase 00013 0f b6 84 08 00 00 00 00 movzx eax, BYTE PTR array1[rax+rcx] 0001b 48 c1 e0 09 shl rax, 9 0001f 0f b6 84 08 00 00 00 00 movzx eax, BYTE PTR array2[rax+rcx] 00027 20 05 00 00 00 00 and BYTE PTR temp, al $LN2@victim_fun: ; 7 : } 0002d c3 ret 0 victim_function_v15 ENDP _TEXT ENDS END