Function at 0x1400039c7
Capabilities:
Get common file path
Identify system language via api
Query environment variable

Disassembly:
jmp 0x1400824e0
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0xfb8
mov r15, rdx
xor edx, edx
mov r13, rcx
mov rcx, r15
xor r8d, r8d
mov rax, qword [0x14016fb98]
xor r9b, r9b
xor rax, rsp
mov qword [rsp + 0xfa8], rax
mov dword [rsp + 0x298], 0
mov byte [rsp + 0x2a8], r9b
mov byte [rsp + 0x278], r9b
mov byte [rsp + 0x290], r9b
mov byte [rsp + 0x288], r9b
mov byte [rsp + 0x280], r9b
call fcn.140002469
mov rax, qword [r13 + 0xb0]
mov bl, 1
mov qword [rsp + 0x2a0], rax
mov rdx, qword [r13 + 0x58]
mov edi, dword [r13 + 0x60]
mov r14, qword [r13 + 0x40]
mov rsi, qword [r13 + 0x48]
mov byte [rsp + 0x1e8], 0
cmp rax, 3
je 0x14008497f
mov r8d, dword [r15 + 0x1d0]
cmp r8d, 0xfffffffc
je 0x140084901
cmp r8d, 0xfffffffd
je 0x1400825d5
cmp r8d, 0xfffffffe
jne 0x1400825bc
test byte [r15 + 0x281], 4
je 0x14008292b
test byte [r15 + 0x278], 1
jne 0x14008292b
jmp 0x1400825fa
cmp r8d, 0xffffffff
jne 0x140082600
test byte [r15 + 0x281], 4
je 0x140082879
jmp 0x1400849c8
mov r9b, byte [r15 + 0x281]
test r9b, 4
je 0x1400829dd
test byte [r15 + 0x278], 1
jne 0x1400829dd
jne 0x14008292b
jne 0x140082879
test rdx, rdx
je 0x140082642
mov r12d, 0x104
cmp edi, 0x104
cmovg edi, r12d
lea r12, [rsp + 0xc30]
movsxd rdi, edi
mov rcx, r12
mov r8, rdi
call fcn.140003d46
mov rax, rdi
mov byte [rsp + rax + 0xc30], 0
mov al, byte [rsp + 0xc30]
jmp 0x140082a87
cmp qword [0x14016fbe0], 0
je 0x140083ea2
mov rax, qword [0x14016fcc0]
lea rdx, str.FORT_d
lea rcx, [rsp + 0xc30]
call rax
mov r8d, 0x105
lea rcx, [rsp + 0xc30]
lea rdx, [rsp + 0xb20]
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edi, eax
test rdi, rdi
jbe 0x1400826a5
cmp rdi, 0x105
jae 0x140082699
inc rdi
jmp 0x1400826ad
mov byte [rsp + 0xb20], 0
xor al, al
jmp 0x1400826b9
mov byte [rsp + 0xb20], 0
test rdi, rdi
je 0x1400826c8
mov al, byte [rsp + 0xb20]
lea r12, [rsp + 0xb20]
dec edi
jmp 0x140082a87
mov edi, dword [r15 + 0x1d0]
add edi, 4
cmp edi, 0xa
ja 0x1400826f1
lea r8, [0x140000000]
movzx eax, word [r8 + rdi*2 + 0x14dfac]
lea rax, [r8 + rax + 0x826f1]
jmp rax
test byte [r15 + 0x281], 4
jne 0x1400827d2
test byte [r15 + 0x279], 0x20
je 0x140082760
mov r12, qword [r15 + 0xc8]
mov rdx, r12
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14008273b
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov r9, qword [rsp + 0x2a0]
xor r8d, r8d
test r9, r9
mov edi, eax
cmovne r9, r8
mov al, byte [r12]
mov qword [rsp + 0x2a0], r9
jmp 0x140082a87
cmp qword [0x14016fbe0], 0
je 0x140083e98
mov rax, qword [0x14016fcc0]
lea rdx, str.fort._d
lea rcx, [rsp + 0xc30]
mov r8d, dword [r15 + 0x1d0]
call rax
lea rdx, [rsp + 0xc30]
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x1400827bd
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov edi, eax
lea r12, [rsp + 0xc30]
mov r8, r12
mov al, byte [r8]
jmp 0x140082a87
mov byte [rsp + 0xc30], 0
lea r12, [rsp + 0xc30]
xor edi, edi
jmp 0x140082b08
lea rcx, str.FOR_PRINT
lea rdx, [rsp + 0xb20]
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edi, eax
test rdi, rdi
jbe 0x1400828b5
cmp rdi, 0x105
jae 0x1400828a9
inc rdi
jmp 0x1400828bd
mov byte [rsp + 0xb20], 0
xor al, al
jmp 0x1400828c9
mov byte [rsp + 0xb20], 0
test rdi, rdi
je 0x1400828d8
mov al, byte [rsp + 0xb20]
lea r12, [rsp + 0xb20]
dec edi
jmp 0x140082a87
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
lea r12, [0x14014c630]
mov rdx, r12
mov qword [r15 + 0x198], rax
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14008291c
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov edi, eax
xor bl, bl
mov al, byte [0x14014c630]
jmp 0x140082a87
lea rcx, str.FOR_TYPE
lea rdx, [rsp + 0xb20]
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edi, eax
test rdi, rdi
jbe 0x140082967
cmp rdi, 0x105
jae 0x14008295b
inc rdi
jmp 0x14008296f
mov byte [rsp + 0xb20], 0
xor al, al
jmp 0x14008297b
mov byte [rsp + 0xb20], 0
test rdi, rdi
je 0x14008298a
mov al, byte [rsp + 0xb20]
lea r12, [rsp + 0xb20]
dec edi
jmp 0x140082a87
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
lea r12, [0x14014c630]
mov rdx, r12
mov qword [r15 + 0x198], rax
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x1400829ce
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov edi, eax
xor bl, bl
mov al, byte [0x14014c630]
jmp 0x140082a87
lea rcx, str.FOR_ACCEPT
lea rdx, [rsp + 0xb20]
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edi, eax
test rdi, rdi
jbe 0x140082a19
cmp rdi, 0x105
jae 0x140082a0d
inc rdi
jmp 0x140082a21
mov byte [rsp + 0xb20], 0
xor al, al
jmp 0x140082a2d
mov byte [rsp + 0xb20], 0
test rdi, rdi
je 0x140082a39
mov al, byte [rsp + 0xb20]
lea r12, [rsp + 0xb20]
dec edi
jmp 0x140082a87
mov ecx, 0xfffffff6
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
lea r12, str.CONIN_
mov rdx, r12
mov qword [r15 + 0x198], rax
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140082a7d
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov edi, eax
xor bl, bl
mov al, byte [str.CONIN_]
cmp al, 0x20
je 0x140082ab0
movsxd rax, edi
test edi, edi
jle 0x140082af4
movsx r8d, byte [rax + r12 - 1]
test r8d, 0xffffffdf
jne 0x1400837d5
dec edi
dec rax
test edi, edi
jg 0x140082a92
jmp 0x140082af4
test edi, edi
jle 0x140082af4
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082a8b
test edi, edi
jle 0x140082af4
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082a8b
test edi, edi
jle 0x140082af4
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082a8b
test edi, edi
jle 0x140082af4
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082a8b
test edi, edi
jg 0x140082ae4
jne 0x1400837d5
test byte [r15 + 0x281], 4
je 0x1400837d5
mov r8d, dword [0x14016fb94]
cmp r8d, dword [0x1401919ac]
jge 0x140082be1
movsxd r8, r8d
mov rax, qword [0x1401919c0]
mov r9, qword [rax + r8*8]
mov rdx, r9
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140082b55
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
movsxd r8, eax
mov rcx, r12
mov rdx, r9
mov edi, eax
mov qword [rsp + 0x40], r8
call fcn.140003d46
mov r8, qword [rsp + 0x40]
lea rdx, [0x14016fb94]
mov eax, dword [0x14016fb94]
inc eax
mov dword [0x14016fb94], eax
mov byte [r8 + r12], 0
xchg dword [rdx], eax
cmp byte [r12], 0x20
je 0x140082bb7
movsxd rax, edi
test edi, edi
jle 0x140082bdb
movsx r8d, byte [rax + r12 - 1]
test r8d, 0xffffffdf
jne 0x1400837d5
dec edi
dec rax
test edi, edi
jg 0x140082b99
jmp 0x140082bdb
test edi, edi
jle 0x140082bdb
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082b92
test edi, edi
jle 0x140082bdb
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x140082b92
test edi, edi
jg 0x140082bcb
jne 0x1400837d5
cmp dword [0x140191994], 0
je 0x140082ca6
cmp qword [0x14016fbe0], 0
je 0x140083eba
mov rax, qword [0x14016fcc0]
lea rdx, str._s_d
lea rcx, [rsp + 0xf55]
lea r8, str.Open:_Select_File_for_Unit
mov r9d, dword [r15 + 0x1d0]
call rax
mov rcx, r12
mov edx, 0x104
lea r8, [rsp + 0xf55]
call fcn.1400036f2
test eax, eax
je 0x140082c74
cmp byte [r12], 0
je 0x140082c74
mov rdx, r12
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140082c6d
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov edi, eax
jmp 0x1400837d5
lea rcx, str.A_File_Must_be_Selected_r_rTerminate_Program_
lea rdx, str.File_Open_Error
mov r8d, 0x2134
call fcn.140003c4c
cmp eax, 6
jne 0x140082c22
mov ecx, 1
call fcn.140004089
mov ecx, 1
call fcn.1400024af
cmp qword [0x14016fbe0], 0
je 0x140084136
mov r8, qword [0x14016fcc0]
mov qword [rsp + 0x40], r8
mov ecx, 0x20b
xor edx, edx
call fcn.1400011fe
lea rdx, str._s_r_n
lea rcx, [rsp + 0xa20]
mov r8, rax
call qword [rsp + 0x40]
cmp qword [0x14016fbe0], 0
je 0x14008412c
mov r8, qword [0x14016fcc0]
mov qword [rsp + 0x40], r8
lea rdx, [rsp + 0xa20]
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140082d2c
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov ecx, 0x20c
mov edx, 1
mov r8d, dword [r15 + 0x1d0]
mov qword [rsp + 0x48], rax
call fcn.1400011fe
mov r9, qword [rsp + 0x48]
lea rdx, [0x140145ad4]
mov r8, rax
lea rcx, [rsp + r9 + 0xa20]
call qword [rsp + 0x40]
lea rdx, [rsp + 0xa20]
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140082d92
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov qword [rsp + 0x1e0], rax
cmp dword [r15 + 0x1d0], 6
je 0x140082de3
mov ecx, 6
lea rdx, [rsp + 0x260]
mov r9d, 4
lea r8, [rsp + 0x1f0]
call fcn.1400038dc
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
jne 0x1400831a8
cmp dword [r15 + 0x1d0], 5
je 0x140082e3b
mov ecx, 5
lea rdx, [rsp + 0x268]
mov r9d, 1
lea r8, [rsp + 0x220]
call fcn.1400038dc
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
je 0x140082e3b
cmp dword [r15 + 0x1d0], 6
je 0x1400831a8
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
jmp 0x1400831a8
mov ecx, 0x298
mov edx, 1
lea r8, [rsp + 0x258]
call fcn.140003fc1
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
jne 0x1400831a8
mov ecx, 0x298
mov edx, 1
lea r8, [rsp + 0x250]
call fcn.140003fc1
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
jne 0x1400831a8
mov r8, qword [rsp + 0x258]
mov eax, 0x280
pxor xmm0, xmm0
movups xmmword [r8 + 0x280], xmm0
movq qword [r8 + 0x290], xmm0
movups xmmword [r8 + rax - 0x10], xmm0
movups xmmword [r8 + rax - 0x20], xmm0
movups xmmword [r8 + rax - 0x30], xmm0
movups xmmword [r8 + rax - 0x40], xmm0
sub rax, 0x40
jne 0x140082eb5
mov r8, qword [rsp + 0x250]
mov eax, 0x280
movups xmmword [r8 + 0x280], xmm0
movq qword [r8 + 0x290], xmm0
movups xmmword [r8 + rax - 0x10], xmm0
movups xmmword [r8 + rax - 0x20], xmm0
movups xmmword [r8 + rax - 0x30], xmm0
movups xmmword [r8 + rax - 0x40], xmm0
sub rax, 0x40
jne 0x140082ef1
mov eax, 0x190
movups xmmword [rsp + rax + 0x30], xmm0
movups xmmword [rsp + rax + 0x20], xmm0
movups xmmword [rsp + rax + 0x10], xmm0
movups xmmword [rsp + rax], xmm0
movups xmmword [rsp + rax - 0x10], xmm0
sub rax, 0x50
jne 0x140082f14
mov r8, qword [rsp + 0x258]
lea rdx, [0x14014c630]
mov dword [r8 + 0x1d0], 6
mov r11, qword [rsp + 0x258]
mov r9b, byte [r15 + 0x278]
and r9b, 1
mov r10b, byte [r11 + 0x278]
and r10b, 0xfe
or r10b, r9b
mov byte [r11 + 0x278], r10b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 2
mov r9b, byte [r10 + 0x278]
and r9b, 0xfd
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 4
mov r9b, byte [r10 + 0x278]
and r9b, 0xfb
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 8
mov r9b, byte [r10 + 0x278]
and r9b, 0xf7
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 0x20
mov r9b, byte [r10 + 0x278]
and r9b, 0xdf
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x281]
and r8b, 4
mov r9b, byte [r10 + 0x281]
and r9b, 0xfb
or r9b, r8b
mov byte [r10 + 0x281], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x281]
and r8b, 8
mov r9b, byte [r10 + 0x281]
and r9b, 0xf7
or r9b, r8b
mov byte [r10 + 0x281], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 0x40
mov r9b, byte [r10 + 0x278]
and r9b, 0xbf
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 0x80
mov r9b, byte [r10 + 0x278]
and r9b, 0x7f
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x258]
mov r8b, byte [r15 + 0x278]
and r8b, 0x10
mov r9b, byte [r10 + 0x278]
and r9b, 0xef
or r9b, r8b
mov r8d, 1
mov byte [r10 + 0x278], r9b
mov qword [rsp + 0x40], r8
mov qword [rsp + 0xf0], 4
mov qword [rsp + 0xa8], r8
mov qword [rsp + 0x98], rdx
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14008312b
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov rdx, qword [rsp + 0x258]
lea rcx, [rsp + 0x40]
mov qword [rcx + 0x60], rax
call fcn.1400026d5
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
je 0x1400831c1
mov rcx, qword [rsp + 0x258]
call fcn.14000231f
mov rcx, qword [rsp + 0x250]
call fcn.14000231f
cmp dword [r15 + 0x1d0], 6
je 0x140083194
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [r15 + 0x1d0], 5
je 0x1400831a8
mov r8, qword [rsp + 0x268]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [rsp + 0x270], 0
je 0x1400837d5
jne 0x1400834e3
jmp 0x14008389b
mov r8, qword [rsp + 0x250]
lea rdx, str.CONIN_
mov dword [r8 + 0x1d0], 5
mov r11, qword [rsp + 0x250]
mov r9b, byte [r15 + 0x278]
and r9b, 1
mov r10b, byte [r11 + 0x278]
and r10b, 0xfe
or r10b, r9b
mov byte [r11 + 0x278], r10b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 2
mov r9b, byte [r10 + 0x278]
and r9b, 0xfd
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 4
mov r9b, byte [r10 + 0x278]
and r9b, 0xfb
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 8
mov r9b, byte [r10 + 0x278]
and r9b, 0xf7
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 0x20
mov r9b, byte [r10 + 0x278]
and r9b, 0xdf
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x281]
and r8b, 4
mov r9b, byte [r10 + 0x281]
and r9b, 0xfb
or r9b, r8b
mov byte [r10 + 0x281], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x281]
and r8b, 8
mov r9b, byte [r10 + 0x281]
and r9b, 0xf7
or r9b, r8b
mov byte [r10 + 0x281], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 0x40
mov r9b, byte [r10 + 0x278]
and r9b, 0xbf
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 0x80
mov r9b, byte [r10 + 0x278]
and r9b, 0x7f
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov r10, qword [rsp + 0x250]
mov r8b, byte [r15 + 0x278]
and r8b, 0x10
mov r9b, byte [r10 + 0x278]
and r9b, 0xef
or r9b, r8b
mov byte [r10 + 0x278], r9b
mov qword [rsp + 0x98], rdx
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14008339b
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov rdx, qword [rsp + 0x250]
lea rcx, [rsp + 0x40]
mov qword [rcx + 0x60], rax
mov qword [rcx + 0x20], 0
call fcn.1400026d5
mov dword [rsp + 0x270], eax
cmp dword [rsp + 0x270], 0
jne 0x1400840ce
mov r8, qword [rsp + 0x258]
mov qword [rsp + 0x1d0], r13
mov qword [rsp + 0x1d8], r15
mov byte [r8 + 0x268], 3
mov r9, qword [rsp + 0x258]
movsxd r8, dword [rsp + 0x1e0]
mov r15, r8
or byte [r9 + 0x27d], 0x40
mov r13, qword [rsp + 0x258]
mov rcx, r13
xor edx, edx
call fcn.140001104
test eax, eax
jne 0x140084025
movsx r10d, byte [r13 + 0x266]
cmp r10d, 8
ja 0x1400835b5
lea r11, [0x140000000]
movzx eax, word [r11 + r10*2 + 0x14dfc8]
lea rax, [r11 + rax + 0x8344f]
jmp rax
mov dword [rsp + 0x270], ebx
mov rcx, qword [rsp + 0xfa8]
xor rcx, rsp
cmp rcx, qword [0x14016fb98]
jne 0x140083ec4
mov eax, dword [rsp + 0x270]
add rsp, 0xfb8
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov ecx, 8
mov edx, 2
lea r8, str.for_nt_open_proc.c
mov r9d, 0x1882
call fcn.1400035df
mov cl, byte [r13 + 0x278]
mov rax, qword [r13 + 0x78]
test cl, 4
je 0x1400835ff
test byte [r13 + 0x27a], 0x40
je 0x1400835ff
test byte [r13 + 0x27b], 8
je 0x1400835ff
cmp byte [r13 + 0x266], 1
je 0x14008365c
mov r10b, byte [r13 + 0x268]
cmp r10b, 2
jne 0x14008362e
mov r10b, byte [r13 + 0x266]
cmp r10b, 7
je 0x14008365c
cmp r10b, 6
je 0x14008365c
cmp r10b, 8
je 0x14008365c
dec qword [r13 + 0x88]
jmp 0x14008365c
cmp r10b, 1
jne 0x14008365c
mov r10b, byte [r13 + 0x266]
cmp r10b, 7
je 0x140083654
cmp r10b, 6
je 0x140083654
cmp r10b, 8
je 0x140083654
dec qword [r13 + 0x88]
add rax, 5
mov qword [r13 + 0x78], rax
mov qword [r13 + 0x90], rax
lea rdx, [rsp + 0xa20]
mov qword [r13 + 0x98], 0
mov r8, r15
mov r9, qword [rdx - 0x7c8]
mov rcx, qword [r9 + 0x78]
call fcn.140003d46
mov r9, qword [rsp + 0x258]
add qword [r9 + 0x78], r15
mov rcx, qword [rsp + 0x258]
call fcn.1400017a3
test eax, eax
jne 0x140083fa1
xor edx, edx
xor r8d, r8d
mov rcx, qword [rsp + 0x250]
call fcn.14000365c
test eax, eax
jne 0x140083f1d
mov r9, qword [rsp + 0x250]
mov rcx, r12
mov rdi, qword [r9 + 0x88]
sub rdi, qword [r9 + 0x78]
movsxd r13, edi
mov r8, r13
mov rdx, qword [r9 + 0x78]
call fcn.140003d46
mov byte [r13 + r12], 0
cmp byte [r12], 0x20
je 0x140083719
movsxd rax, edi
add rax, r12
test edi, edi
jle 0x14008373d
movsx r9d, byte [rax - 1]
test r9d, 0xffffffdf
jne 0x140083751
dec edi
dec rax
test edi, edi
jg 0x140083700
jmp 0x14008373d
test edi, edi
jle 0x14008373d
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x1400836f6
test edi, edi
jle 0x14008373d
inc r12
dec edi
cmp byte [r12], 0x20
jne 0x1400836f6
test edi, edi
jg 0x14008372d
nop dword [rax]
nop dword [rax]
je 0x140083409
mov r13, qword [rsp + 0x1d0]
mov r15, qword [rsp + 0x1d8]
xor edx, edx
mov rcx, qword [rsp + 0x258]
call fcn.14000161d
xor edx, edx
mov rcx, qword [rsp + 0x250]
call fcn.14000161d
mov rcx, qword [rsp + 0x258]
call fcn.14000231f
mov rcx, qword [rsp + 0x250]
call fcn.14000231f
cmp dword [r15 + 0x1d0], 6
je 0x1400837c1
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [r15 + 0x1d0], 5
je 0x1400837d5
mov r8, qword [rsp + 0x268]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
test bl, bl
je 0x140083858
movsxd rdi, edi
mov rcx, r15
mov rdx, r12
mov byte [rdi + r12], 0
call fcn.140002ca2
mov r8d, eax
cmp r8d, 0xffffffff
je 0x14008428b
xor bl, bl
cmp dword [0x140191994], 0
jne 0x140083811
mov eax, 1
cmp r8d, 0xfffffffa
cmove r8d, eax
cmp r8d, 1
je 0x140083846
test r8d, r8d
jne 0x140083829
mov ecx, 0xfffffff6
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
jmp 0x140083851
cmp r8d, 2
jne 0x14008383c
mov ecx, 0xfffffff4
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
jmp 0x140083851
mov byte [rsp + 0x1e8], 1
jmp 0x140083858
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov qword [r15 + 0x198], rax
mov rcx, r12
lea rdx, [rsp + 0xe50]
test cl, 3
je 0x14008387b
mov al, byte [rcx]
inc rcx
test al, al
mov byte [rdx], al
je 0x140083880
inc rdx
test cl, 3
jne 0x140083868
call fcn.14000239c
cmp dword [0x140191994], 0
je 0x14008389b
test bl, bl
jne 0x14008389b
cmp qword [r15 + 0x198], 0xffffffffffffffff
je 0x14008426c
mov rax, qword [r13]
cmp rax, 5
ja 0x140083e5b
mov edx, eax
lea rbx, [0x140000000]
movzx eax, byte [rbx + rdx + 0x14dfe0]
lea rax, [rbx + rax + 0x838c4]
jmp rax
mov edx, 0x23c
mov eax, 0x30
test byte [r15 + 0x278], 0x20
mov rcx, qword [rsp + 0xfa8]
cmovne eax, edx
xor rcx, rsp
cmp rcx, qword [0x14016fb98]
jne 0x140083ec4
add rsp, 0xfb8
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
call fcn.140002eb4
jmp 0x14008276e
call fcn.140002eb4
mov rax, qword [0x14016fcc0]
mov r8d, dword [r15 + 0x1d0]
jmp 0x140082657
call fcn.140002eb4
jmp 0x140082bfc
call fcn.140003bcf
mov r10, rsp
mov rcx, r9
movzx r8d, byte [r9 + 0x27c]
mov edx, 0xffffffff
and r8d, 7
mov r9d, 0x2c
mov dword [r10 + 0x20], 0x2c
call fcn.140001447
mov dword [rsp + 0x270], eax
jmp 0x1400831a8
xor edx, edx
mov rcx, qword [rsp + 0x258]
mov r13, qword [rsp + 0x1d0]
mov r15, qword [rsp + 0x1d8]
mov dword [rsp + 0x270], eax
call fcn.14000161d
xor edx, edx
mov rcx, qword [rsp + 0x250]
call fcn.14000161d
mov rcx, qword [rsp + 0x258]
call fcn.14000231f
mov rcx, qword [rsp + 0x250]
call fcn.14000231f
cmp dword [r15 + 0x1d0], 6
je 0x140083194
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [r15 + 0x1d0], 5
jne 0x140083194
jmp 0x1400831a8
xor edx, edx
mov rcx, qword [rsp + 0x258]
mov r13, qword [rsp + 0x1d0]
mov r15, qword [rsp + 0x1d8]
mov dword [rsp + 0x270], eax
call fcn.14000161d
xor edx, edx
mov rcx, qword [rsp + 0x250]
call fcn.14000161d
mov rcx, qword [rsp + 0x258]
call fcn.14000231f
mov rcx, qword [rsp + 0x250]
call fcn.14000231f
cmp dword [r15 + 0x1d0], 6
je 0x140083194
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [r15 + 0x1d0], 5
jne 0x140083194
jmp 0x1400831a8
mov r9, r13
mov r8, qword [r9 + 0x30]
mov r13, qword [rsp + 0x1d0]
mov r15, qword [rsp + 0x1d8]
test r8, r8
je 0x1400840b0
test byte [r8 + 0x74], 2
je 0x14008407a
mov ebx, 0x26
mov dword [r8 + 0x68], ebx
mov rax, qword [r9 + 0x30]
mov dword [rax + 0x6c], ebx
mov rax, qword [r9 + 0xd0]
test rax, rax
je 0x1400834dc
xor edx, edx
mov qword [rax + 8], rdx
mov qword [r9 + 0xd0], rdx
jmp 0x1400834dc
mov r10, rsp
mov rcx, r9
movzx r8d, byte [r9 + 0x27c]
mov edx, 0xffffffff
and r8d, 7
mov r9d, 0x26
mov dword [r10 + 0x20], 0x26
call fcn.140001447
mov dword [rsp + 0x270], eax
jmp 0x1400831a8
mov edx, 0x26
mov ecx, 1
mov r8d, edx
call fcn.1400026fd
mov dword [rsp + 0x270], eax
jmp 0x1400831a8
xor edx, edx
mov rcx, qword [rsp + 0x258]
call fcn.14000161d
mov rcx, qword [rsp + 0x258]
call fcn.14000231f
mov rcx, qword [rsp + 0x250]
call fcn.14000231f
cmp dword [r15 + 0x1d0], 6
je 0x140083194
mov r8, qword [rsp + 0x260]
mov ecx, dword [r8 + 0x1d0]
call fcn.1400013bb
cmp dword [r15 + 0x1d0], 5
jne 0x140083194
jmp 0x1400831a8
call fcn.140002eb4
jmp 0x140082cf0
call fcn.140002eb4
jmp 0x140082cb4
mov al, byte [rsp + 0x1e8]
test al, al
jne 0x14008389b
mov qword [r15 + 0x198], 0
jmp 0x14008389b
test byte [r15 + 0x281], 8
jne 0x1400842a0
test r14, r14
je 0x1400843ac
jmp 0x1400842a9
test r14, r14
je 0x1400848df
mov ebx, esi
cmp ebx, 0x103
jg 0x14008434e
movsxd rsi, esi
lea rcx, [rsp + 0xd40]
mov rdx, r14
mov r8, rsi
call fcn.140003d46
mov byte [rsp + rsi + 0xd40], 0
lea rsi, [rsp + 0xd40]
mov qword [rsi - 0xb68], rsi
cmp byte [rsi], 0x20
jne 0x140084303
test ebx, ebx
jle 0x140084832
inc rsi
dec ebx
cmp byte [rsi], 0x20
je 0x1400842e9
mov qword [rsp + 0x1d8], rsi
test ebx, ebx
jle 0x14008432d
mov r8, rsi
movsxd rax, ebx
movsx esi, byte [rax + r8 - 1]
test esi, 0xffffffdf
jne 0x14008480d
dec ebx
test ebx, ebx
jg 0x14008430a
mov qword [rsp + 0x1d8], r8
xor esi, esi
cmp qword [rsp + 0x2a0], 3
je 0x1400846fe
lea r8d, [rbx + rdi]
add r8d, esi
cmp r8d, 0x104
jle 0x14008435e
mov dword [rsp + 0x270], 0x2b
jmp 0x1400834e3
movsxd rbx, ebx
lea rcx, [rsp + 0xe50]
mov r8, rbx
mov rdx, qword [rcx - 0xc78]
call fcn.140003d46
lea rcx, [rsp + rbx + 0xe50]
test esi, esi
je 0x140084387
mov byte [rcx], 0x5c
movsxd rdi, edi
mov rdx, r12
mov r8, rdi
add rcx, rsi
call fcn.140003d46
add rbx, rsi
lea rax, [rsp + rdi + 0xe50]
mov byte [rbx + rax], 0
jmp 0x14008389b
mov dword [rsp + 0x1e8], 0
call qword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx ebx, ax
cmp ebx, 0x411
je 0x1400843dd
call qword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
movzx ebx, ax
cmp ebx, 0x411
jne 0x140084645
mov rdx, r12
xor ebx, ebx
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14008440a
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
test rax, rax
jbe 0x14008444f
movzx esi, byte [rbx + r12]
mov rdx, r12
mov word [rsp + rbx*2 + 0x5ca], si
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x140084447
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
inc rbx
cmp rbx, rax
jb 0x14008440f
mov edx, 0x105
lea rcx, [rsp + 0x5ca]
xor r9d, r9d
lea r8, [rsp + 0x3c0]
xor esi, esi
mov word [rsp + rbx*2 + 0x5ca], si
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov dword [rsp + 0x1e0], eax
cmp dword [rsp + 0x1e0], 0
je 0x14008467e
cmp dword [rsp + 0x1e0], 0x105
jae 0x14008467e
cmp dword [rsp + 0x1e0], 0
jbe 0x14008451e
cmp dword [rsp + 0x1e0], 0x10
jb 0x1400846f7
mov esi, eax
xor ebx, ebx
and esi, 0xfffffff0
movdqu xmm0, xmmword [0x14014ded0]
movsxd rax, esi
movdqu xmm2, xmmword [rsp + rbx*2 + 0x3c0]
movdqu xmm1, xmmword [rsp + rbx*2 + 0x3d0]
pand xmm2, xmm0
pand xmm1, xmm0
packuswb xmm2, xmm1
movdqu xmmword [rsp + rbx + 0xd40], xmm2
add rbx, 0x10
cmp rbx, rax
jb 0x1400844c7
movsxd rbx, dword [rsp + 0x1e0]
cmp rax, rbx
jae 0x14008451e
mov sil, byte [rsp + rax*2 + 0x3c0]
mov byte [rsp + rax + 0xd40], sil
inc rax
cmp rax, rbx
jb 0x140084504
mov esi, eax
movsxd rsi, esi
mov byte [rsp + rsi + 0xd40], 0
mov esi, dword [rsp + 0x1e0]
sub esi, edi
lea ebx, [rsi - 1]
mov dword [rsp + 0x1d8], ebx
test ebx, ebx
jle 0x14008467e
xor ebx, ebx
cmp dword [rsp + 0x1d8], 0
jle 0x1400845bc
movsxd rsi, esi
dec rsi
mov qword [rsp + 0x1d0], rsi
cmp dword [rsp + 0x1d8], 0x60
jle 0x140084691
lea rdx, [rsp + 0xd40]
mov r8d, 1
lea rbx, [rsp + 0x2b0]
sub rbx, rdx
xor r10d, r10d
cmp rbx, rsi
cmovg r10d, r8d
xor r9d, r9d
neg rbx
cmp rbx, rsi
cmovle r8d, r9d
or r10d, r8d
je 0x140084691
mov r8, rsi
lea rcx, [rsp + 0x2b0]
call fcn.140003d46
mov ebx, dword [rsp + 0x1d8]
movsxd rbx, ebx
lea rdx, [rsp + 0x2b0]
xor esi, esi
mov byte [rsp + rbx + 0x2b0], 0
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x1400845f9
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
mov rbx, rax
test rbx, rbx
jbe 0x140084634
mov r8d, dword [rsp + 0x1e8]
mov eax, 1
test byte [rsp + rsi + 0x2b0], 0x80
cmovne r8d, eax
inc rsi
cmp rsi, rbx
jb 0x14008460e
mov dword [rsp + 0x1e8], r8d
cmp dword [rsp + 0x1e8], 0
jne 0x14008467e
mov edi, dword [rsp + 0x1e0]
lea r12, [rsp + 0xd40]
jmp 0x14008467e
mov rcx, r12
mov edx, 0x105
lea r8, [rsp + 0xd40]
lea r9, [rsp + 0x1d0]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
je 0x14008467e
mov eax, eax
lea rbx, [rsp + 0xd40]
cmp rax, 0x105
cmovb r12, rbx
cmovb edi, eax
mov qword [rsp + 0x1d8], 0
xor ebx, ebx
jmp 0x14008432d
cmp qword [rsp + 0x1d0], 0x10
jl 0x1400846f3
mov rax, rsi
xor ebx, ebx
and eax, 0xfffffff0
movsxd rax, eax
movdqu xmm0, xmmword [rsp + rbx + 0xd40]
movdqu xmmword [rsp + rbx + 0x2b0], xmm0
add rbx, 0x10
cmp rbx, rax
jb 0x1400846a7
cmp rax, qword [rsp + 0x1d0]
jae 0x1400845b5
mov rsi, qword [rsp + 0x1d0]
mov bl, byte [rsp + rax + 0xd40]
mov byte [rsp + rax + 0x2b0], bl
inc rax
cmp rax, rsi
jb 0x1400846d8
jmp 0x1400845b5
xor eax, eax
jmp 0x1400846c2
xor eax, eax
jmp 0x1400844f7
test byte [r15 + 0x279], 0x20
jne 0x14008433e
lea rcx, str.FORT_TMPDIR
lea rdx, [rsp + 0x8e5]
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov eax, eax
test rax, rax
ja 0x1400847f9
mov byte [rsp + 0x8e5], 0
test r14, r14
je 0x14008483f
xor eax, eax
mov dword [rsp + 0x8e0], eax
xor edx, edx
mov byte [rsp + 0x8e4], dl
mov eax, 0x100
pxor xmm0, xmm0
movups xmmword [rsp + rax + 0x7d0], xmm0
movups xmmword [rsp + rax + 0x7c0], xmm0
movups xmmword [rsp + rax + 0x7b0], xmm0
movups xmmword [rsp + rax + 0x7a0], xmm0
sub rax, 0x40
jne 0x14008475e
mov rcx, qword [rsp + 0x1d8]
lea rdx, [0x14014e0ec]
xor r8d, r8d
lea r9, [rsp + 0x7e0]
call qword [sym.imp.KERNEL32.dll_GetTempFileNameA]
test eax, eax
je 0x1400847ee
test byte [r15 + 0x281], 8
lea rcx, [rsp + 0x7e2]
lea rax, [rsp + 0x7e0]
cmove rcx, rax
lea rdx, [rsp + 0xe50]
test cl, 3
je 0x1400847e4
mov al, byte [rcx]
inc rcx
test al, al
mov byte [rdx], al
je 0x1400847e9
inc rdx
test cl, 3
jne 0x1400847d1
call fcn.14000239c
jmp 0x14008389b
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14008434e
cmp rax, 0x105
jae 0x140084732
inc rax
jmp 0x14008473a
mov qword [rsp + 0x1d8], r8
xor r8d, r8d
mov rsi, qword [rsp + 0x1d8]
cmp byte [rax + rsi], 0x5c
mov esi, 1
cmove esi, r8d
jmp 0x14008432f
mov qword [rsp + 0x1d8], rsi
jmp 0x14008432d
test byte [r15 + 0x281], 8
je 0x140084869
mov byte [rsp + 0x2b0], 0x2e
lea rax, [rsp + 0x2b0]
mov byte [rax + 1], 0
mov qword [rax - 0xd8], rax
jmp 0x140084743
test rax, rax
je 0x1400848af
lea rdx, [rsp + 0x2b0]
lea rcx, [rsp + 0x8e5]
test cl, 3
je 0x140084896
mov al, byte [rcx]
inc rcx
test al, al
mov byte [rdx], al
je 0x14008489b
inc rdx
test cl, 3
jne 0x140084883
call fcn.14000239c
lea rax, [rsp + 0x2b0]
mov qword [rax - 0xd8], rax
jmp 0x140084743
mov ecx, 0x104
lea rdx, [rsp + 0x2b0]
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
xor edx, edx
test eax, eax
lea rax, [rsp + 0x2b0]
cmove rax, rdx
mov qword [rsp + 0x1d8], rax
jmp 0x140084743
cmp qword [rsp + 0x2a0], 3
jne 0x140083858
test byte [r15 + 0x279], 0x20
je 0x1400843ac
jmp 0x140083858
mov r9b, byte [r15 + 0x281]
test r9b, 4
je 0x14008491c
test byte [r15 + 0x278], 1
je 0x1400825dc
lea rcx, str.FOR_READ
lea rdx, [rsp + 0xb20]
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov edi, eax
test rdi, rdi
jbe 0x140084958
cmp rdi, 0x105
jae 0x14008494c
inc rdi
jmp 0x140084960
mov byte [rsp + 0xb20], 0
xor al, al
jmp 0x140084970
mov byte [rsp + 0xb20], 0
test rdi, rdi
je 0x140082a39
mov al, byte [rsp + 0xb20]
lea r12, [rsp + 0xb20]
dec edi
jmp 0x140082a87
test byte [r15 + 0x279], 0x20
jne 0x140082581
cmp qword [0x14016fbe0], 0
je 0x1400849c1
mov rax, qword [0x14016fcc0]
lea rdx, str.SCRATCH
lea rcx, [rsp + 0xc30]
call rax
mov edi, 7
lea r12, [rsp + 0xc30]
jmp 0x1400837d9
call fcn.140002eb4
jmp 0x140084997
test byte [r15 + 0x278], 1
jne 0x140082879
jmp 0x140082600