Function at 0x1400598a0
Capabilities:
Authenticate hmac
Encrypt data using speck
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x158
mov rax, qword [0x1401212e0]
xor r10d, r10d
mov word [rax], r10w
mov dword [rsp + 0x1a0], ecx
mov ebx, edx
mov edi, r8d
call fcn.1400455a0
lea rcx, [rsp + 0x1a0]
call fcn.140045850
mov eax, dword [rsp + 0x1a0]
cmp eax, 0x7e
jg 0x14004d748
cmp eax, 9
jle case.0x14004d746.11
sub eax, 0xa
cmp eax, 0x74
ja case.0x14004d746.11
lea rdx, [0x1400eb718]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
cmp eax, 0xf702
je case.0x14004d746.52
jle 0x14004d786
cmp eax, 0xf703
mov ecx, 3
je 0x14004d799
mov rsi, qword [0x140121540]
cmp byte [rsi + 0x1c], 0
jne 0x14004d7e1
mov byte [rsi + 0xf], 0
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp eax, 0xf700
je case.0x14004d746.56
cmp eax, 0xf701
jne case.0x14004d746.11
mov ecx, 1
mov rsi, qword [0x140121540]
mov eax, 0x14
or dil, bl
mov word [rsi + 0x17cc], ax
mov eax, dword [0x1400ebcb8]
mov byte [rsi + 0x17ce], 0
mov dword [rsi + 0xbe], eax
jne 0x14004d7ec
call fcn.140005170
xor r8d, r8d
mov edx, 0xffffffff
mov ecx, 0xffffffff
call fcn.140049510
cmp byte [rsi + 0x1c], 0
je 0x14004d76e
call fcn.140041fc0
jmp 0x14004d76e
xor ecx, ecx
jmp 0x14004d799
call fcn.1400066d0
jmp 0x14004d7c9
mov ecx, 2
jmp 0x14004d799
mov rsi, qword [0x140121540]
xor r8d, r8d
xor edx, edx
mov ecx, 0x7a
mov byte [rsi + 0xd], 1
call fcn.140056f20
call fcn.1400627b0
jmp 0x14004d768
mov rsi, qword [0x140121540]
cmp byte [rsi], 0
jne 0x14004e241
call fcn.14004c530
jmp 0x14004d768
movsx ecx, bl
call fcn.14004c2a0
mov rsi, qword [0x140121540]
jmp 0x14004d768
call fcn.14002af30
mov rsi, qword [0x140121540]
jmp 0x14004d768
xor edx, edx
xor ecx, ecx
call fcn.14002f600
mov rsi, qword [0x140121540]
jmp 0x14004d768
test bl, bl
je 0x14004e230
mov rsi, qword [0x140121540]
mov rbx, qword [0x140121410]
mov byte [rsi + 6], 0
mov byte [rsi + 0xc], 1
jmp 0x14004d898
cmp byte [rsi + 6], 0
jne 0x14004d8bb
call fcn.140064870
xor edx, edx
mov ecx, 0x50
call fcn.140043650
test al, al
je 0x14004d8b1
mov byte [rsi + 6], 1
cmp word [rbx + 0x1a4], 4
jle 0x14004d892
mov byte [rsi + 0xc], 0
jmp 0x14004d768
xor ecx, ecx
call fcn.1400310b0
jmp case.0x14004d746.11
mov dword [rsp + 0x20], 1
mov r9d, 1
xor r8d, r8d
xor edx, edx
mov ecx, 0x1fff
call fcn.14002e6c0
mov rsi, qword [0x140121540]
jmp 0x14004d768
xor ecx, ecx
call fcn.14002fcf0
mov rsi, qword [0x140121540]
jmp 0x14004d768
xor ecx, ecx
call fcn.140031280
mov rsi, qword [0x140121540]
jmp 0x14004d768
xor ecx, ecx
call fcn.14002f960
mov rsi, qword [0x140121540]
jmp 0x14004d768
xor ecx, ecx
call fcn.14002d8c0
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov rsi, qword [0x140121540]
lea rdi, [rsp + 0x88]
lea rbx, [rsp + 0x80]
cmp byte [rsi + 0x1d], 0
sete byte [rsi + 0x1d]
call fcn.140041fc0
xor r8d, r8d
mov edx, 0xffffffff
mov ecx, 0xffffffff
call fcn.140049510
cmp byte [rsi + 0x1d], 0
mov ecx, 0x18
mov eax, 0
mov r8, qword [0x1401215f0]
mov edx, 0
mov qword [rsp + 0x80], 0
rep stosq qword [rdi], rax
mov rcx, rbx
je 0x14004dfd2
call fcn.140044e60
mov r8d, 0x2e
movabs rdi, 0x2068746c61657453
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x69642065676e6172
mov qword [rax + 8], rdi
movabs rdi, 0x2e646579616c7073
mov qword [rax + 0x10], rdi
movabs rdi, 0x2720737365725020
mov qword [rax + 0x18], rdi
movabs rdi, 0x6e6961676120275d
mov qword [rax + 0x20], rdi
movabs rdi, 0x65646968206f7420
mov qword [rax + 0x28], rdi
mov word [rax + 0x30], r8w
cmp byte [rsp + 0x80], 0
je 0x14004d768
xor edx, edx
mov rcx, rbx
call fcn.14004a6c0
jmp 0x14004d768
mov rsi, qword [0x140121540]
lea rdi, [rsp + 0x88]
lea rbx, [rsp + 0x80]
cmp byte [rsi + 0x1c], 0
sete byte [rsi + 0x1c]
call fcn.140041fc0
xor r8d, r8d
mov edx, 0xffffffff
mov ecx, 0xffffffff
call fcn.140049510
cmp byte [rsi + 0x1c], 0
mov ecx, 0x18
mov eax, 0
mov r8, qword [0x1401215f0]
mov edx, 0
mov qword [rsp + 0x80], 0
rep stosq qword [rdi], rax
mov rcx, rbx
je 0x14004df19
call fcn.140044e60
movabs rdi, 0x666520726f6c6f43
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x6964207374636566
mov qword [rax + 8], rdi
movabs rdi, 0x202e64656c626173
mov qword [rax + 0x10], rdi
movabs rdi, 0x5c27207373657250
mov qword [rax + 0x18], rdi
movabs rdi, 0x206e696167612027
mov qword [rax + 0x20], rdi
movabs rdi, 0x6c62616e65206f74
mov qword [rax + 0x28], rdi
mov dword [rax + 0x2f], 0x2e656c
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
call fcn.140067480
mov rsi, qword [0x140121540]
test al, al
je 0x14004d768
lea rbx, str._Screenshot_saved_in_save_directory
mov rcx, rbx
call fcn.140051bb0
cmp byte [rsi + 0x223], 0
jne 0x14004d768
cwde
mov ecx, 0x64
mov r9d, 0x7d0
sub ecx, eax
mov rax, qword [0x140120d70]
mov r8d, 0x11
mov edx, ecx
shr edx, 0x1f
add edx, ecx
mov rcx, rbx
mov qword [rsp + 0x28], rax
mov rax, qword [0x1401215f0]
sar edx, 1
mov qword [rsp + 0x20], rax
call fcn.1400430b0
jmp 0x14004d768
mov rsi, qword [0x140121540]
mov rcx, qword [rsi + 0xd0]
test rcx, rcx
je 0x14004d768
call fcn.14001e3f0
test al, al
je 0x14004d768
mov rcx, qword [rsi + 0xd0]
mov edx, 1
call fcn.14002f600
jmp 0x14004d768
mov rsi, qword [0x140121540]
mov rdx, qword [0x140121590]
movzx eax, byte [rsi + 0x201]
or al, byte [rdx]
jne 0x14004d772
lea rcx, str.Save_this_game_and_exit_
xor edx, edx
call fcn.14004d520
test al, al
je 0x14004d768
call fcn.140058970
jmp 0x14004d768
mov rsi, qword [0x140121540]
mov byte [rsi + 0xd], 1
call fcn.140064650
jmp 0x14004d768
mov rsi, qword [0x140121540]
cmp byte [rsi], 0
je 0x14004e04d
xor r8d, r8d
xor edx, edx
mov ecx, 0x3c
call fcn.140056f20
mov ecx, 0xffffffff
call fcn.140004fb0
jmp 0x14004d768
mov ecx, 6
jmp 0x14004d799
mov ecx, 4
jmp 0x14004d799
mov rsi, qword [0x140121540]
cmp byte [rsi], 0
je 0x14004d768
call fcn.1400186b0
jmp 0x14004d768
lea rcx, str.Turn_on_autopilot_
xor edx, edx
call fcn.14004d520
mov rsi, qword [0x140121540]
test al, al
je 0x14004d768
movsx ecx, bl
call fcn.140007490
jmp 0x14004d768
call fcn.14004ae60
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov rsi, qword [0x140121540]
cmp byte [rsi], 0
je 0x14004df92
xor r8d, r8d
xor edx, edx
mov ecx, 0x3e
call fcn.140056f20
mov ecx, 1
call fcn.140004fb0
jmp 0x14004d768
call fcn.14005cf50
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov rax, qword [0x1401210a0]
mov rsi, qword [0x140121540]
cmp byte [rax], 0
je 0x14004d768
mov rbx, qword [0x140121070]
mov ecx, 0xaaaaaaab
mov eax, dword [rbx]
lea edx, [rax + 1]
mov rax, rdx
imul rdx, rcx
shr rdx, 0x21
lea edx, [rdx + rdx*2]
sub eax, edx
mov ecx, eax
call fcn.1400674a0
cmp eax, 1
mov dword [rbx], eax
je 0x14004e161
cmp eax, 2
je 0x14004e0a8
test eax, eax
jne 0x14004d768
xor eax, eax
mov ecx, 0x18
mov r8, qword [0x1401215f0]
xor edx, edx
lea rdi, [rsp + 0x88]
mov qword [rsp + 0x80], 0
rep stosq qword [rdi], rax
lea rbx, [rsp + 0x80]
movabs rdi, 0x6465686374697753
mov rcx, rbx
call fcn.140044e60
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x74786574206f7420
mov qword [rax + 8], rdi
movabs rdi, 0x50202e65646f6d20
mov qword [rax + 0x10], rdi
movabs rdi, 0x2747272073736572
mov qword [rax + 0x18], rdi
movabs rdi, 0x74206e6961676120
mov qword [rax + 0x20], rdi
movabs rdi, 0x656c62616e65206f
mov qword [rax + 0x28], rdi
movabs rdi, 0x2e73656c697420
mov qword [rax + 0x30], rdi
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
call fcn.14004bd80
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov ecx, 7
jmp 0x14004d799
mov ecx, 5
jmp 0x14004d799
mov rsi, qword [0x140121540]
cmp word [rsi + 0xbe], 0x4e
ja 0x14004de40
cmp word [rsi + 0xc0], 0x1c
jbe 0x14004de53
mov rax, qword [0x140121410]
mov eax, dword [rax + 0xf8]
mov dword [rsi + 0xbe], eax
mov r9d, 0x32
mov byte [rsi + 0x17ce], 1
mov word [rsi + 0x17cc], r9w
jmp 0x14004d768
xor ecx, ecx
call fcn.14002ff00
mov rsi, qword [0x140121540]
jmp 0x14004d768
lea rcx, str.Quit_and_abandon_this_game___The_save_will_be_deleted._
xor edx, edx
call fcn.14004d520
mov rsi, qword [0x140121540]
test al, al
je 0x14004d768
xor edx, edx
xor r8d, r8d
mov ecx, 0x51
call fcn.140056f20
mov edx, 1
mov byte [rsi + 0x1e], 1
lea rcx, [0x1400eb6c8]
call fcn.14005bc80
jmp 0x14004d768
mov rsi, qword [0x140121540]
cmp dword [rsi + 0xa4], 0x31
ja 0x14004e08d
mov dword [rsi + 0x17d0], 6
mov byte [rsi + 8], 1
jmp 0x14004d768
call fcn.14004b520
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov ecx, 3
jmp 0x14004d799
call fcn.14004b8b0
mov rsi, qword [0x140121540]
jmp 0x14004d768
call fcn.140044e60
movabs rdi, 0x666520726f6c6f43
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x6e65207374636566
mov qword [rax + 8], rdi
movabs rdi, 0x50202e64656c6261
mov qword [rax + 0x10], rdi
movabs rdi, 0x275c272073736572
mov qword [rax + 0x18], rdi
movabs rdi, 0x74206e6961676120
mov qword [rax + 0x20], rdi
movabs rdi, 0x6c6261736964206f
mov qword [rax + 0x28], rdi
mov dword [rax + 0x2f], 0x2e656c
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
movsx edx, word [rsi + 0xbc]
lea r8, str.I_see_no_way_down.
movsx ecx, word [rsi + 0xba]
call fcn.140004ef0
test al, al
je 0x14004d768
movsx edx, word [rsi + 0xbc]
mov r8d, 1
movsx ecx, word [rsi + 0xba]
call fcn.140006c30
jmp 0x14004d768
call fcn.140044e60
mov ecx, 0x2e
movabs rdi, 0x2068746c61657453
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x69682065676e6172
mov qword [rax + 8], rdi
movabs rdi, 0x7250202e6e656464
mov qword [rax + 0x10], rdi
movabs rdi, 0x20275d2720737365
mov qword [rax + 0x18], rdi
movabs rdi, 0x6f74206e69616761
mov qword [rax + 0x20], rdi
movabs rdi, 0x79616c7073696420
mov qword [rax + 0x28], rdi
mov word [rax + 0x30], cx
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
movsx edx, word [rsi + 0xb8]
lea r8, str.I_see_no_way_up.
movsx ecx, word [rsi + 0xb6]
call fcn.140004ef0
test al, al
je 0x14004d768
movsx edx, word [rsi + 0xb8]
mov r8d, 1
movsx ecx, word [rsi + 0xb6]
call fcn.140006c30
jmp 0x14004d768
lea rcx, str.End_this_game_and_begin_a_new_game_
xor edx, edx
call fcn.14004d520
test al, al
jne 0x14004deda
jmp 0x14004d768
xor eax, eax
mov ecx, 0x18
mov r8, qword [0x1401215f0]
xor edx, edx
lea rdi, [rsp + 0x88]
mov qword [rsp + 0x80], 0
rep stosq qword [rdi], rax
lea rbx, [rsp + 0x80]
movabs rdi, 0x6465686374697753
mov rcx, rbx
call fcn.140044e60
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x72627968206f7420
mov qword [rax + 8], rdi
movabs rdi, 0x2e65646f6d206469
mov qword [rax + 0x10], rdi
movabs rdi, 0x2720737365725020
mov qword [rax + 0x18], rdi
movabs rdi, 0x6e69616761202747
mov qword [rax + 0x20], rdi
movabs rdi, 0x61736964206f7420
mov qword [rax + 0x28], rdi
movabs rdi, 0x656c697420656c62
mov qword [rax + 0x30], rdi
mov dword [rax + 0x37], 0x2e7365
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
xor eax, eax
mov ecx, 0x18
mov r8, qword [0x1401215f0]
xor edx, edx
lea rdi, [rsp + 0x88]
mov qword [rsp + 0x80], 0
rep stosq qword [rdi], rax
lea rbx, [rsp + 0x80]
movabs rdi, 0x6465686374697753
mov rcx, rbx
call fcn.140044e60
movsx rax, ax
add rax, rbx
mov qword [rax], rdi
movabs rdi, 0x70617267206f7420
mov qword [rax + 8], rdi
movabs rdi, 0x6974206c61636968
mov qword [rax + 0x10], rdi
movabs rdi, 0x657250202e73656c
mov qword [rax + 0x18], rdi
movabs rdi, 0x6120274727207373
mov qword [rax + 0x20], rdi
movabs rdi, 0x206f74206e696167
mov qword [rax + 0x28], rdi
movabs rdi, 0x6820656c62616e65
mov qword [rax + 0x30], rdi
movabs rdi, 0x6f6d206469726279
mov qword [rax + 0x38], rdi
mov dword [rax + 0x40], 0x2e6564
cmp byte [rsp + 0x80], 0
jne 0x14004da25
jmp 0x14004d768
call fcn.140064870
mov rsi, qword [0x140121540]
jmp 0x14004d768
mov rax, qword [0x140121460]
mov ebp, 0x15
mov qword [rsp + 0x48], rsi
mov r12, qword [0x1401216f0]
lea r13, [rax + 0x10]
mov rbx, r13
mov qword [rsp + 0x40], r13
mov r13d, ebp
lea r15d, [r13 - 0x15]
mov ebp, 3
mov qword [rsp + 0x38], rbx
lea rdi, [rsp + 0x80]
movzx r15d, r15w
mov r14d, ebp
jmp 0x14004e2aa
test eax, 0x400000
jne 0x14004e30b
add r14d, 1
add rbx, 0x44
cmp r14w, 0x20
je 0x14004e365
lea eax, [r14 - 3]
shl eax, 0x10
or eax, r15d
mov ebp, eax
mov eax, dword [rbx]
test eax, 0x200000
je 0x14004e290
lea rsi, [rsp + 0x70]
mov r9, rdi
mov ecx, ebp
lea rdx, [rsp + 0x6c]
mov r8, rsi
call fcn.140040030
mov r8d, 0x32
mov rdx, r12
mov rcx, rdi
call fcn.14003f940
mov ecx, r14d
movzx edx, r13w
mov r9, rdi
shl ecx, 0x10
mov r8, rsi
or edx, ecx
mov ecx, dword [rsp + 0x6c]
call fcn.140041bd0
mov eax, dword [rbx]
test eax, 0x400000
je 0x14004e297
lea rsi, [rsp + 0x70]
mov r9, rdi
mov ecx, ebp
lea rdx, [rsp + 0x6c]
mov r8, rsi
add rbx, 0x44
call fcn.140040030
mov rdx, qword [0x1401215f0]
mov r8d, 0x32
mov rcx, rdi
call fcn.14003f940
mov ecx, r14d
movzx edx, r13w
mov r9, rdi
shl ecx, 0x10
mov r8, rsi
add r14d, 1
or edx, ecx
mov ecx, dword [rsp + 0x6c]
call fcn.140041bd0
cmp r14w, 0x20
jne 0x14004e2aa
mov rbx, qword [rsp + 0x38]
add r13d, 1
add rbx, 0x7b4
cmp r13w, 0x64
jne 0x14004e268
mov rsi, qword [rsp + 0x48]
mov edx, 1
lea rcx, str.Loops:
mov r13, qword [rsp + 0x40]
call fcn.14004c610
call fcn.140041fc0
cmp byte [rsi], 0
je 0x14004d82e
mov r14, qword [0x140120e20]
mov edx, 0x15
xor ebp, ebp
mov qword [rsp + 0x58], rsi
mov word [rsp + 0x38], dx
mov r15, rbp
mov rsi, r13
movzx eax, r15w
xor ebx, ebx
mov qword [rsp + 0x48], rsi
mov r13, rsi
lea r12, [r15*8]
mov dword [rsp + 0x40], eax
mov qword [rsp + 0x50], r15
jmp 0x14004e435
call fcn.140040030
mov rdx, qword [0x1401215f0]
mov r8d, 0x32
mov rcx, rbp
shl esi, 0x10
call fcn.14003f940
movzx edx, word [rsp + 0x38]
mov r9, rbp
mov r8, rdi
mov ecx, dword [rsp + 0x6c]
or edx, esi
call fcn.140041bd0
add rbx, 1
add r13, 0x44
cmp rbx, 0x1d
je 0x14004e4b7
mov rdx, qword [r14]
lea r15, [rbx + rbx]
mov rdx, qword [rdx + r12]
cmp word [rdx + rbx*2], 0x9f
jg 0x14004e423
mov ecx, dword [rsp + 0x40]
lea rbp, [rsp + 0x80]
mov edx, ebx
lea rdi, [rsp + 0x70]
shl edx, 0x10
mov r9, rbp
lea esi, [rbx + 3]
mov r8, rdi
or ecx, edx
test dword [r13], 0x800000
lea rdx, [rsp + 0x6c]
jne 0x14004e3f0
call fcn.140040030
mov rdx, qword [r14]
mov rdx, qword [rdx + r12]
movsx edx, word [rdx + r15]
imul edx, edx, 0x64
movsxd rcx, edx
sar edx, 0x1f
imul rcx, rcx, 0x66666667
sar rcx, 0x26
sub edx, ecx
lea r8d, [rdx + 0x64]
mov rdx, qword [0x140121510]
movsx r8d, r8w
jmp 0x14004e402
mov r15, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
add word [rsp + 0x38], 1
add r15, 1
add rsi, 0x7b4
cmp r15, 0x4f
jne 0x14004e3c7
mov rsi, qword [rsp + 0x58]
mov edx, 1
lea rcx, str.Choke_map:
call fcn.14004c610
call fcn.140041fc0
cmp byte [rsi], 0
je 0x14004d82e
call fcn.14004c790
cmp byte [rsi], 0
je 0x14004d82e
mov rbp, qword [0x1401216c0]
xor r12d, r12d
lea rbx, [r12*8]
xor r13d, r13d
mov edi, r12d
nop word cs:[rax + rax]
movsx rax, word [rsi + 0x1728]
test ax, ax
jle 0x14004e5b1
lea rdx, [rsi + 0x15e8]
lea r8, [rdx + rax*8]
mov eax, 0x7530
lea r9, [r13 + r13]
nop word [rax + rax]
mov rcx, qword [rdx]
mov rcx, qword [rcx + rbx]
movsx ecx, word [rcx + r9]
cmp ax, cx
cmovg eax, ecx
add rdx, 8
cmp rdx, r8
jne 0x14004e558
cmp ax, 9
jg 0x14004e5b1
test ax, ax
mov r9d, 0x64
js 0x14004e59c
mov edx, eax
shl edx, 4
sub eax, edx
mov edx, 0xffffff9c
cmp eax, edx
cmovl eax, edx
add eax, 0x64
movzx r9d, ax
mov dword [rsp + 0x20], 1
mov r8, rbp
mov edx, r13d
mov ecx, edi
call fcn.140041ef0
add r13, 1
cmp r13, 0x1d
jne 0x14004e530
add r12, 1
cmp r12, 0x4f
jne 0x14004e518
lea rcx, str.Waypoints:
mov edx, 1
call fcn.14004c610
call fcn.140041fc0
jmp 0x14004d82e
mov rax, qword [0x140121540]
mov byte [rax + 0x226], 0
mov eax, dword [rcx]
test eax, eax
je 0x1400598c8
cmp eax, 1
je 0x1400598c0
cmp eax, 4
je 0x1400598c0
ret
jmp fcn.140050720
mov eax, dword [rcx + 4]
movsx edx, byte [rcx + 0xc]
movsx r8d, byte [rcx + 0xd]
mov ecx, eax
jmp 0x14004d6e0