Function at 0x14000edbb
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rsi
push rbx
mov eax, 0x45680
call fcn.140011560
sub rsp, rax
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x45620], ecx
mov qword [rbp + 0x45628], rdx
mov ecx, 0x20
call sym.SDL_Init
shr eax, 0x1f
test al, al
je 0x14000ee12
call sym.SDL_GetError
mov rdx, rax
lea rax, str.Error:_SDL_failed_to_initialize_nSDL_Error:__s_n
mov rcx, rax
call sym.printf_char_const__::_
mov ebx, 1
jmp 0x14000f42a
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x3c0
mov r9d, 0x400
mov r8d, 0x1fff0000
mov edx, 0x1fff0000
lea rax, str.NES_Emulator
mov rcx, rax
call sym.SDL_CreateWindow
mov qword [rbp + 0x455e8], rax
cmp qword [rbp + 0x455e8], 0
jne 0x14000ee74
call sym.SDL_GetError
mov rdx, rax
lea rax, str.Error:_Failed_to_open_window_nSDL_Error:__s_n
mov rcx, rax
call sym.printf_char_const__::_
mov ebx, 1
jmp 0x14000f42a
mov rax, qword [rbp + 0x455e8]
mov r8d, 2
mov edx, 0xffffffff
mov rcx, rax
call sym.SDL_CreateRenderer
mov qword [rbp + 0x455e0], rax
cmp qword [rbp + 0x455e0], 0
jne 0x14000eec0
call sym.SDL_GetError
mov rdx, rax
lea rax, str.Error:_Failed_to_create_renderer_nSDL_Error:__s_n
mov rcx, rax
call sym.printf_char_const__::_
mov ebx, 1
jmp 0x14000f42a
mov qword [rbp + 0x45190], 0
mov qword [rbp + 0x45198], 0
lea rax, [rbp + 0xf040]
mov rcx, rax
call fcn.14000154c
lea rax, [rbp + 0xf010]
mov rcx, rax
call fcn.1400d05f0
lea rax, [rbp + 0x45590]
lea rdx, str.roms_nestest.nes
mov rcx, rax
call method.std::shared_ptr_Cartridge__std.make_shared_Cartridge__char_const_____17___char_const_____17__
lea rdx, [rbp + 0x45590]
lea rax, [rbp + 0x45190]
mov rcx, rax
call method.std::shared_ptr_Cartridge_.operator_std::shared_ptr_Cartridge__
lea rax, [rbp + 0x45590]
mov rcx, rax
call fcn.1400a2ba0
lea rdx, [rbp + 0x45190]
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.insertCartridge_std::shared_ptr_Cartridge__const_
lea rax, [rbp + 0x455a0]
lea rdx, [rbp + 0xf040]
mov r9d, 0xffff
mov r8d, 0
mov rcx, rax
call method.cpu6502.disassemble_abi:cxx11__unsigned_short__unsigned_short_
lea rdx, [rbp + 0x455a0]
lea rax, [rbp + 0xf010]
mov rcx, rax
call method.std::map_unsigned_short__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__std::__cxx11::basic_string_char__std::char_traits_char___std::alloca
lea rax, [rbp + 0x455a0]
mov rcx, rax
call sym.std::map_unsigned_short__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_________::map__
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.reset__
mov byte [rbp + 0x455ff], 1
lea rax, [rbp + 0x452f0]
mov r8d, 0x142
mov edx, 0
mov rcx, rax
call sym.memset
jmp 0x14000f3eb
call sym.SDL_GetTicks
mov dword [rbp + 0x455dc], eax
lea rax, [rbp + 0x45440]
mov r8d, 0x142
mov edx, 0
mov rcx, rax
call sym.memset
lea rax, [rbp + 0x451a0]
mov r8d, 0x142
mov edx, 0
mov rcx, rax
call sym.memset
jmp 0x14000f065
mov eax, dword [rbp - 0x50]
cmp eax, 0x301
je 0x14000f048
cmp eax, 0x301
ja 0x14000f064
cmp eax, 0x100
je 0x14000f023
cmp eax, 0x300
je 0x14000f02c
jmp 0x14000f064
mov byte [rbp + 0x455ff], 0
jmp 0x14000f065
mov eax, dword [rbp - 0x3c]
cdqe
mov byte [rbp + rax + 0x45440], 1
mov eax, dword [rbp - 0x3c]
cdqe
mov byte [rbp + rax + 0x452f0], 1
jmp 0x14000f065
mov eax, dword [rbp - 0x3c]
cdqe
mov byte [rbp + rax + 0x451a0], 1
mov eax, dword [rbp - 0x3c]
cdqe
mov byte [rbp + rax + 0x452f0], 0
jmp 0x14000f065
nop
lea rax, [rbp - 0x50]
mov rcx, rax
call sym.SDL_PollEvent
test eax, eax
setne al
test al, al
jne 0x14000f002
movzx eax, byte [rbp + 0x454a3]
test al, al
je 0x14000f0cc
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.clock__
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.cpu6502.complete__
xor eax, 1
test al, al
jne 0x14000f085
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.clock__
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.cpu6502.complete__
test al, al
jne 0x14000f0aa
movzx eax, byte [rbp + 0x454b2]
test al, al
je 0x14000f0e6
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.reset__
movzx eax, byte [rbp + 0x454a6]
test al, al
je 0x14000f13a
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.clock__
movzx eax, byte [rbp + 0x4496c]
xor eax, 1
test al, al
jne 0x14000f0f1
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.clock__
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.cpu6502.complete__
xor eax, 1
test al, al
jne 0x14000f10e
mov byte [rbp + 0x4496c], 0
movzx eax, byte [rbp + 0x45310]
test al, al
je 0x14000f169
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.clock__
movzx eax, byte [rbp + 0x4496c]
xor eax, 1
test al, al
jne 0x14000f145
mov byte [rbp + 0x4496c], 0
mov rax, qword [rbp + 0x455e0]
mov dword [rsp + 0x20], 0xff
mov r9d, 0xff
mov r8d, 0
mov edx, 0xff
mov rcx, rax
call sym.SDL_SetRenderDrawColor
mov rax, qword [rbp + 0x455e0]
mov rcx, rax
call sym.SDL_RenderClear
lea rax, [rbp - 0x10]
lea rdx, [rbp + 0xf040]
add rdx, 0x38
mov rcx, rax
call method.ppu2C02.getScreen__
mov dword [rbp + 0x455f8], 0
jmp 0x14000f314
mov dword [rbp + 0x455f4], 0
jmp 0x14000f2fd
mov qword [rbp + 0xf000], 0
mov qword [rbp + 0xf008], 0
mov dword [rbp + 0xf008], 4
mov dword [rbp + 0xf00c], 4
mov eax, dword [rbp + 0x455f4]
shl eax, 2
mov dword [rbp + 0xf000], eax
mov eax, dword [rbp + 0x455f8]
shl eax, 2
mov dword [rbp + 0xf004], eax
mov eax, dword [rbp + 0x455f4]
movsxd rdx, eax
lea rax, [rbp - 0x10]
mov rcx, rax
call method.std::array_std::array_unsigned_char__240ull___256ull_.operator___unsigned_long_long_
mov rcx, rax
mov eax, dword [rbp + 0x455f8]
cdqe
mov rdx, rax
call method.std::array_unsigned_char__240ull_.operator___unsigned_long_long_
movzx eax, byte [rax]
movzx eax, al
lea rdx, [rbp + 0xf040]
lea rcx, [rdx + 0x3586c]
mov rdx, rax
call method.std::array_std::array_unsigned_char__3ull___64ull_.operator___unsigned_long_long_
movzx edx, word [rax]
mov word [rbp + 0xeffd], dx
movzx eax, byte [rax + 2]
mov byte [rbp + 0xefff], al
lea rax, [rbp + 0xeffd]
mov edx, 2
mov rcx, rax
call method.std::array_unsigned_char__3ull_.operator___unsigned_long_long_
movzx eax, byte [rax]
movzx esi, al
lea rax, [rbp + 0xeffd]
mov edx, 1
mov rcx, rax
call method.std::array_unsigned_char__3ull_.operator___unsigned_long_long_
movzx eax, byte [rax]
movzx ebx, al
lea rax, [rbp + 0xeffd]
mov edx, 0
mov rcx, rax
call method.std::array_unsigned_char__3ull_.operator___unsigned_long_long_
movzx eax, byte [rax]
movzx edx, al
mov rax, qword [rbp + 0x455e0]
mov dword [rsp + 0x20], 0xff
mov r9d, esi
mov r8d, ebx
mov rcx, rax
call sym.SDL_SetRenderDrawColor
lea rdx, [rbp + 0xf000]
mov rax, qword [rbp + 0x455e0]
mov rcx, rax
call sym.SDL_RenderFillRect
add dword [rbp + 0x455f4], 1
cmp dword [rbp + 0x455f4], 0xff
jle 0x14000f1d5
add dword [rbp + 0x455f8], 1
cmp dword [rbp + 0x455f8], 0xef
jle 0x14000f1c6
mov rax, qword [rbp + 0x455e0]
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0
mov edx, 0
mov rcx, rax
call sym.SDL_SetRenderDrawColor
mov rax, qword [rbp + 0x455e0]
mov r8d, 0
mov edx, 0
mov rcx, rax
call sym.SDL_RenderDrawPoint
mov rax, qword [rbp + 0x455e0]
mov rcx, rax
call sym.SDL_RenderPresent
call sym.SDL_GetTicks
sub eax, dword [rbp + 0x455dc]
mov dword [rbp + 0x455d8], eax
cmp dword [rbp + 0x455d8], 0
je 0x14000f3eb
mov eax, dword [rbp + 0x455d8]
test rax, rax
js 0x14000f3a5
pxor xmm0, xmm0
cvtsi2sd xmm0, rax
jmp 0x14000f3be
mov rdx, rax
shr rdx, 1
and eax, 1
or rdx, rax
pxor xmm0, xmm0
cvtsi2sd xmm0, rdx
addsd xmm0, xmm0
movsd xmm1, qword [0x140100310]
divsd xmm1, xmm0
mov rax, qword [0x140103ad0]
mov rcx, rax
call method.std::ostream.operator___double_
mov rcx, rax
mov rax, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rdx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
cmp byte [rbp + 0x455ff], 0
jne 0x14000efc1
mov ebx, 0
lea rax, [rbp + 0xf010]
mov rcx, rax
call sym.std::map_unsigned_short__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_________::map__
lea rax, [rbp + 0xf040]
mov rcx, rax
call method.Bus.Bus__
lea rax, [rbp + 0x45190]
mov rcx, rax
call fcn.1400a2ba0
mov eax, ebx
jmp 0x14000f46e
add rsp, 0x45680
pop rbx
pop rsi
pop rbp
ret