Function at 0x402d20
Capabilities:
Set environment variable
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x418
mov esi, ecx
mov rbx, rdx
call fcn.004016a0
mov ecx, 0x8001
call qword [sym.imp.KERNEL32.dll_SetErrorMode]
lea rdx, section..rdata
lea rcx, [0x00405001]
mov rdi, qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
call rdi
lea rdx, section..rdata
lea rcx, str.LINK
call rdi
cmp esi, 1
jle case.0x402e02.1
mov rdx, qword [rbx + 8]
cmp byte [rdx], 0x2d
je 0x402de6
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__c_f_l_Q_s_V_..._nThis_is_a_little_helper_app_to_equalize_shell_differences_between_WinNT_and_nWin9x_and_get_nmake.exe_to_accomplish_its_job._n
mov edx, 0x12b
mov rcx, r12
call fcn.004015a0
mov ecx, 0xfffffff4
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rdx, r12
lea r9, [rsp + 0x1c0]
mov qword [rsp + 0x20], 0
mov rcx, rax
mov r8d, ebx
mov r12d, 2
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, r12d
add rsp, 0x418
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rdx + 1]
sub eax, 0x4c
cmp al, 0x27
ja case.0x402e02.1
lea rcx, [0x004054c4]
movzx eax, al
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
cmp esi, 2
je 0x403894
mov rcx, qword [rbx + 0x18]
lea rdx, [0x004052a0]
mov r12, qword [rbx + 0x10]
mov qword [rsp + 0x2d0], 0
call sub.msvcrt.dll_fopen
mov r14, rax
test rax, rax
je 0x403930
lea rdx, [0x004052a0]
mov rcx, r12
call sub.msvcrt.dll_fopen
mov r13, rax
test rax, rax
je 0x403948
mov rbx, qword [sym.imp.msvcrt.dll_isspace]
mov rsi, rbx
mov r8, r13
mov edx, 0x400
lea rcx, [0x004084c0]
call sub.msvcrt.dll_fgets
test rax, rax
je 0x403940
movzx ecx, byte [0x004084c0]
lea r12, [0x004084c0]
test cl, cl
jne 0x402ea4
jmp 0x4038f8
movzx ecx, byte [r12 + 1]
add r12, 1
test cl, cl
je 0x4038f8
call rbx
test eax, eax
jne 0x402e92
mov rbp, r12
jmp 0x402eb3
add rbp, 1
movzx ecx, byte [rbp]
test cl, cl
je 0x403c0f
call rbx
test eax, eax
je 0x402eaf
mov r15, rbp
jmp 0x402ed4
call rsi
test eax, eax
je 0x402ee8
add r15, 1
movzx ecx, byte [r15]
test cl, cl
jne 0x402eca
mov rax, rbp
mov rbp, r15
mov r15, rbp
mov rbp, rax
mov rax, r15
mov ecx, 0x2401
jmp 0x402ef6
add rax, 1
movzx edx, byte [rax]
cmp dl, 0xd
ja 0x402ef2
bt rcx, rdx
jae 0x402ef2
mov byte [rbp], 0
mov ecx, 0x18
mov byte [rax], 0
call sub.msvcrt.dll_malloc
mov rdi, rax
test rax, rax
je 0x402e5e
mov rcx, r12
call sub.msvcrt.dll__strdup
mov rcx, r15
mov qword [rdi + 8], rax
call sub.msvcrt.dll__strdup
mov qword [rdi], 0
mov qword [rdi + 0x10], rax
mov rax, qword [rsp + 0x2d0]
test rax, rax
je 0x403a92
mov rdx, rax
mov rax, qword [rax]
test rax, rax
jne 0x402f51
mov qword [rdx], rdi
jmp 0x402e5e
cmp esi, 2
je 0x40387d
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea rdi, [rsp + 0x70]
mov ecx, 6
lea rbp, [rsp + 0xb0]
mov r12, rax
xor eax, eax
lea r13, [rsp + 0x90]
xor r9d, r9d
mov qword [rsp + 0x50], rdi
lea r14, [rsp + 0x68]
mov r8, r13
sub esi, 2
rep stosd dword [rdi], eax
mov ecx, 0x1a
mov rdi, rbp
mov rdx, r14
rep stosd dword [rdi], eax
mov rdi, r13
mov ecx, 6
mov r15, qword [sym.imp.KERNEL32.dll_CreatePipe]
rep stosd dword [rdi], eax
mov dword [rsp + 0xb0], 0x68
lea rcx, [0x00404420]
mov dword [rsp + 0xec], 0x100
mov qword [rsp + 0x100], 0xffffffffffffffff
mov dword [rsp + 0x90], 0x18
mov dword [rsp + 0xa0], 1
call r15
mov rdi, qword [sym.imp.KERNEL32.dll_DuplicateHandle]
mov r8, r12
mov rcx, r12
mov rdx, qword [rsp + 0x68]
lea r9, [rsp + 0x108]
mov dword [rsp + 0x30], 3
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 0
call rdi
mov rdx, r14
lea r14, [rsp + 0x1c0]
mov r8, r13
xor r9d, r9d
lea rcx, [0x00404020]
lea r13, [0x004051a3]
call r15
mov r8, r12
mov rcx, r12
mov rdx, qword [rsp + 0x68]
lea r9, [rsp + 0x110]
mov dword [rsp + 0x30], 3
lea r15, [0x004051a0]
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 0
call rdi
lea rdx, str.link.exe__nologo
mov rcx, r14
xor edi, edi
call qword [sym.imp.KERNEL32.dll_lstrcpyA]
mov r12, qword [sym.imp.KERNEL32.dll_lstrcatA]
mov rdx, r15
mov rcx, r14
call r12
mov rdx, qword [rbx + rdi*8 + 0x10]
add rdi, 1
mov rcx, r14
call r12
mov rdx, r13
mov rcx, r14
call r12
cmp esi, edi
jg 0x4030aa
mov rax, qword [rsp + 0x50]
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x40], rbp
mov rdx, r14
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 8
mov dword [rsp + 0x20], 1
call qword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x403b53
lea rdi, [rsp + 0x64]
mov rbx, qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x108]
xor r12d, r12d
call rbx
mov rcx, qword [rsp + 0x110]
call rbx
mov edx, 0x1388
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.USER32.dll_WaitForInputIdle]
mov rcx, qword [rsp + 0x78]
call rbx
mov rsi, qword [sym.imp.KERNEL32.dll_CreateThread]
xor edx, edx
xor ecx, ecx
lea r9, [0x00404420]
lea r8, [0x00401510]
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0
call rsi
lea r9, [0x00404020]
xor edx, edx
xor ecx, ecx
lea r8, [0x00401510]
mov qword [rsp + 0x2d0], rax
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0
call rsi
or edx, 0xffffffff
mov rcx, qword [rsp + 0x70]
mov qword [rsp + 0x2d8], rax
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x70]
call rbx
lea rdx, [rsp + 0x2d0]
mov r9d, 0x1f4
mov r8d, 1
mov ecx, 2
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov rcx, qword [rsp + 0x2d0]
call rbx
mov rcx, qword [rsp + 0x2d8]
call rbx
lea rdx, str.LNK1117
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.LNK1117
lea rcx, [0x00404028]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.LNK4044
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.LNK4044
lea rcx, [0x00404028]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.LNK4224
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.LNK4224
lea rcx, [0x00404028]
xor r12d, r12d
call sub.msvcrt.dll_strstr
test rax, rax
sete r12b
jmp 0x402dcf
cmp esi, 2
je 0x4038ab
cmp esi, 3
je 0x403a8a
mov rdx, qword [rbx + 0x18]
mov rcx, qword [rbx + 0x10]
xor r12d, r12d
call sub.msvcrt.dll_strstr
test rax, rax
setne r12b
jmp 0x402dcf
cmp esi, 3
je 0x403556
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__c__compiler_option__nTests_for_whether_cl.exe_supports_an_option_nexitcodes:_0__no__1__yes__2__error_n
jmp 0x402d8f
cmp esi, 4
jne 0x403502
mov rcx, qword [rbx + 0x10]
movsx esi, byte [rdx + 2]
lea rdx, [0x004052a0]
mov rdi, qword [rbx + 0x18]
lea rbx, [0x00408040]
call sub.msvcrt.dll_fopen
mov r12, rax
test rax, rax
jne 0x403339
jmp 0x403356
mov rdx, rdi
mov rcx, rbx
call sub.msvcrt.dll_strstr
mov rdx, rax
test rax, rax
jne 0x403a9f
mov r8, r12
mov edx, 0x64
mov rcx, rbx
call sub.msvcrt.dll_fgets
test rax, rax
jne 0x403322
mov rcx, r12
call sub.msvcrt.dll_fclose
mov r12d, 1
jmp 0x402dcf
lea r12, [rsp + 0x2d0]
cmp esi, 3
je 0x403841
mov r9, qword [rbx]
lea r8, str.usage:__s__Q_path_nEmit_the_fully_qualified_path_nexitcodes:_0__no__1__yes__2__error_n
jmp 0x402d8f
cmp esi, 3
jne 0x403866
mov r15, qword [rbx + 0x10]
xor esi, esi
lea rax, [0x00405580]
mov rdx, qword [rax + rsi*8]
test rdx, rdx
je 0x403900
test r15, r15
sete r12b
je 0x403900
or r13, 0xffffffffffffffff
mov rdi, rdx
mov eax, r12d
mov rcx, r13
repne scasb al, byte [rdi]
not rcx
lea rbx, [rcx - 1]
add rcx, 2
cmp rcx, 0x105
ja 0x403900
lea rbp, [rsp + 0xb0]
mov r8, rbx
mov rdi, r15
mov rcx, rbp
call sub.msvcrt.dll_strncpy
lea rax, [rbp + rbx]
mov rcx, r13
lea r13, [rsp + 0x2d0]
mov word [rax], 0x2a5c
mov rdx, r13
mov byte [rax + 2], 0
mov eax, r12d
repne scasb al, byte [rdi]
not rcx
lea edi, [rcx - 1]
mov rcx, rbp
mov dword [rsp + 0x50], edi
call qword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov r12, rax
cmp rax, 0xffffffffffffffff
je 0x4038df
movsxd r14, edi
add r14, 3
test byte [rsp + 0x2d0], 0x10
je 0x4038c2
lea rdx, [rsp + 0x2fc]
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rdx
repne scasb al, byte [rdi]
not rcx
lea r8, [rcx - 1]
lea rdi, [rbx + r8]
lea rax, [r14 + rdi]
cmp rax, 0x105
ja 0x4038c2
lea rcx, [rbp + rbx + 1]
call sub.msvcrt.dll_strncpy
mov eax, dword [rsp + 0x50]
lea r9, [rdi + 1]
mov rdx, r15
lea rcx, [rbp + rdi + 2]
mov byte [rsp + rdi + 0xb1], 0x5c
lea r8d, [rax + 1]
mov qword [rsp + 0x58], r9
movsxd r8, r8d
call sub.msvcrt.dll_strncpy
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4038c2
test al, 0x10
jne 0x4038c2
mov r9, qword [rsp + 0x58]
lea r13, [rsp + 0x1c0]
mov edx, 0x104
mov rcx, rbp
mov r8, r13
mov byte [rsp + r9 + 0xb0], 0
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov rcx, r13
call sub.msvcrt.dll_puts
mov rcx, r12
xor r12d, r12d
call qword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x402dcf
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
mov edx, 0x12b
lea r8, str.usage:__s__V_filename_matchstring_nExtract_a_version_from_a_file:_neg:_pkgIndex.tcl__package_ifneeded_http_
mov rcx, r12
call fcn.004015a0
mov ecx, 0xfffffff4
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rdx, r12
mov r8d, ebx
xor r12d, r12d
mov qword [rsp + 0x20], 0
mov rcx, rax
lea r9, [rsp + 0x1c0]
call qword [sym.imp.KERNEL32.dll_WriteFile]
jmp 0x402dcf
mov r14, qword [rbx + 0x10]
lea r13, [rsp + 0x70]
lea rsi, [rsp + 0x1c0]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rdi, r13
mov ecx, 6
xor r9d, r9d
mov r12, rax
xor eax, eax
lea rbp, [rsp + 0x90]
rep stosd dword [rdi], eax
mov ecx, 0x1a
mov rdi, rsi
lea r15, [rsp + 0x68]
rep stosd dword [rdi], eax
mov ecx, 6
mov rdi, rbp
mov r8, rbp
rep stosd dword [rdi], eax
mov rdx, r15
mov rdi, qword [sym.imp.KERNEL32.dll_CreatePipe]
lea rcx, [0x00404420]
mov dword [rsp + 0x1c0], 0x68
mov dword [rsp + 0x1fc], 0x100
mov qword [rsp + 0x210], 0xffffffffffffffff
mov dword [rsp + 0x90], 0x18
call rdi
mov rbx, qword [sym.imp.KERNEL32.dll_DuplicateHandle]
mov r8, r12
mov rcx, r12
mov rdx, qword [rsp + 0x68]
lea r9, [rsp + 0x218]
mov dword [rsp + 0x30], 3
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 0
call rbx
xor r9d, r9d
mov r8, rbp
mov rdx, r15
lea rcx, [0x00404020]
call rdi
lea r9, [rsp + 0x220]
mov r8, r12
mov rcx, r12
mov rdx, qword [rsp + 0x68]
mov dword [rsp + 0x30], 3
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 0
call rbx
lea rbx, [rsp + 0xb0]
lea rdx, str.cl.exe__nologo__c__TC__Zs__X__Fp._junk.pch
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrcpyA]
mov rdi, qword [sym.imp.KERNEL32.dll_lstrcatA]
mov rdx, r14
mov rcx, rbx
call rdi
lea rdx, str._._nul
mov rcx, rbx
call rdi
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x48], r13
mov rdx, rbx
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 8
mov dword [rsp + 0x20], 1
call qword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x403bf1
lea rdi, [rsp + 0x64]
mov rbx, qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x218]
xor r12d, r12d
call rbx
mov rcx, qword [rsp + 0x220]
call rbx
mov edx, 0x1388
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.USER32.dll_WaitForInputIdle]
mov rcx, qword [rsp + 0x78]
call rbx
mov rsi, qword [sym.imp.KERNEL32.dll_CreateThread]
xor edx, edx
xor ecx, ecx
lea r9, [0x00404420]
lea r8, [0x00401510]
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0
call rsi
lea r9, [0x00404020]
xor edx, edx
xor ecx, ecx
lea r8, [0x00401510]
mov qword [rsp + 0x2d0], rax
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0
call rsi
or edx, 0xffffffff
mov rcx, qword [rsp + 0x70]
mov qword [rsp + 0x2d8], rax
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x70]
call rbx
lea rdx, [rsp + 0x2d0]
mov r9d, 0x1f4
mov r8d, 1
mov ecx, 2
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov rcx, qword [rsp + 0x2d0]
call rbx
mov rcx, qword [rsp + 0x2d8]
call rbx
lea rdx, str.D4002
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.D4002
lea rcx, [0x00404028]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.D9002
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.D9002
lea rcx, [0x00404028]
call sub.msvcrt.dll_strstr
test rax, rax
jne 0x402dcf
lea rdx, str.D2021
lea rcx, [0x00404428]
call sub.msvcrt.dll_strstr
lea rdx, str.D2021
test rax, rax
jne 0x402dcf
jmp 0x403287
mov r8, r12
mov rcx, qword [rbx + 0x10]
xor r9d, r9d
mov edx, 0x104
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov rcx, r12
xor r12d, r12d
call sub.msvcrt.dll_puts
jmp 0x402dcf
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__L_keypath_nEmit_the_fully_qualified_path_of_directory_containing_keypath_nexitcodes:_0__success__1__not_found__2__error_n
jmp 0x402d8f
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__l__linker_option____mandatory_option__...__nTests_for_whether_link.exe_supports_an_option_nexitcodes:_0__no__1__yes__2__error_n
jmp 0x402d8f
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__s__substitutions_file___file__nPerform_a_set_of_string_map_type_substutitions_on_a_file_nexitcodes:_0_n
jmp 0x402d8f
mov r9, qword [rbx]
lea r12, [rsp + 0x2d0]
lea r8, str.usage:__s__f__string___substring__nFind_a_substring_within_another_nexitcodes:_0__no__1__yes__2__error_n
jmp 0x402d8f
mov rdx, r13
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x403436
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_FindClose]
mov r12d, 1
add rsi, 1
cmp rsi, 3
jne 0x403390
jmp 0x402dcf
mov rbp, r12
jmp 0x402ec5
mov r12d, 2
jmp 0x4038e5
mov rcx, qword [r12 + 8]
mov rbx, qword [r12]
call sub.msvcrt.dll_free
mov rcx, qword [r12 + 0x10]
call sub.msvcrt.dll_free
mov rcx, r12
mov r12, rbx
call sub.msvcrt.dll_free
test r12, r12
jne 0x403908
mov rcx, r14
xor r12d, r12d
call sub.msvcrt.dll_fclose
jmp 0x402dcf
mov rcx, r13
call sub.msvcrt.dll_fclose
mov rbp, qword [fcn.00402b40]
xor esi, esi
mov r12, qword [rsp + 0x2d0]
lea rdi, str.__3d__s____s_n
mov rbx, r12
jmp 0x403990
mov r15, qword [rbx + 0x10]
mov r13, qword [rbx + 8]
mov ecx, 2
call rbp
mov r8d, esi
mov rdx, rdi
add esi, 1
mov qword [rsp + 0x20], r15
mov rcx, rax
mov r9, r13
call sub.msvcrt.dll_fprintf
mov rbx, qword [rbx]
test rbx, rbx
jne 0x403965
lea rbx, [0x004080c0]
mov r8, r14
mov edx, 0x400
lea rcx, [0x004084c0]
call sub.msvcrt.dll_fgets
test rax, rax
je 0x40392b
mov r15, r12
lea r13, [0x004084c0]
xor ebp, ebp
test r12, r12
jne 0x4039db
jmp 0x403a72
mov r15, qword [r15]
test r15, r15
je 0x403a72
mov rdx, qword [r15 + 8]
mov rcx, r13
call sub.msvcrt.dll_strstr
mov r8, rax
test rax, rax
je 0x4039cf
lea rdx, [0x004080c0]
cmp rax, r13
je 0x403a14
mov rdi, rdx
lea rsi, [0x004084c0]
movsb byte [rdi], byte [rsi]
cmp r8, rsi
jne 0x403a05
mov rdx, r8
sub rdx, r13
add rdx, rbx
mov rax, qword [r15 + 0x10]
test rax, rax
jne 0x403a29
jmp 0x403a30
mov byte [rdx], cl
add rdx, 1
add rax, 1
movzx ecx, byte [rax]
test cl, cl
jne 0x403a1f
mov rdi, qword [r15 + 8]
mov eax, ebp
or rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
not rcx
lea rcx, [r8 + rcx - 1]
movzx eax, byte [rcx]
test al, al
je 0x403a5c
add rcx, 1
mov byte [rdx], al
add rdx, 1
movzx eax, byte [rcx]
test al, al
jne 0x403a4b
mov byte [rdx], 0
mov ecx, pe_nt_image_headers64
mov rdi, r13
mov rsi, rbx
rep movsq qword [rdi], qword [rsi]
jmp 0x4039cf
lea rdx, [0x004084c0]
lea rcx, [0x004052b6]
call sub.msvcrt.dll_printf
jmp 0x40399c
xor r12d, r12d
jmp 0x402dcf
lea rdx, [rsp + 0x2d0]
jmp 0x402f5c
xor eax, eax
or rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
mov rax, rcx
not rax
lea r13, [rdx + rax - 1]
jmp 0x403abc
test al, al
je 0x403ac9
add r13, 1
movzx eax, byte [r13]
lea edx, [rax - 0x30]
cmp dl, 9
ja 0x403ab4
sub esi, 0x30
mov rbx, r13
lea rdi, str.0123456789.ab
lea rbp, [0x00405338]
lea r14, [0x0040533c]
jmp 0x403aef
sub esi, 1
je 0x403b2d
add rbx, 1
movzx edx, byte [rbx]
test dl, dl
je 0x403b2d
movsx r15d, dl
mov rcx, rdi
mov edx, r15d
call sub.msvcrt.dll_strchr
test rax, rax
je 0x403b2d
mov edx, r15d
mov rcx, rbp
call sub.msvcrt.dll_strchr
test rax, rax
jne 0x403ae6
movsx edx, byte [rbx - 1]
mov rcx, r14
call sub.msvcrt.dll_strchr
test rax, rax
jne 0x403ae6
jmp 0x403aeb
mov byte [rbx], 0
mov rcx, r12
call sub.msvcrt.dll_fclose
cmp byte [r13], 0
je 0x403356
mov rcx, r13
xor r12d, r12d
call sub.msvcrt.dll_puts
jmp 0x402dcf
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r12, [rsp + 0x2d0]
mov r9, r14
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x20], eax
mov rcx, r12
lea r8, str.Tried_to_launch:___s___but_got_error___u_:
mov edx, 0x12b
call fcn.004015a0
mov edx, 0x12c
mov r8d, dword [rsp + 0x64]
xor r9d, r9d
mov qword [rsp + 0x30], 0
sub edx, eax
cdqe
mov ecx, 0x12ff
add rax, r12
mov dword [rsp + 0x28], edx
xor edx, edx
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_FormatMessageA]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, 0xfffffff4
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rdx, r12
lea r9, [rsp + 0x64]
mov r8d, ebx
mov qword [rsp + 0x20], 0
mov rcx, rax
mov r12d, 2
call qword [sym.imp.KERNEL32.dll_WriteFile]
jmp 0x402dcf
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r12, [rsp + 0x2d0]
mov r9, rbx
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x20], eax
jmp 0x403b6c
mov rax, rbp
jmp 0x402ee2