Function at 0x424810
Capabilities:
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, rcx
mov r12, r8
mov rdi, r9
test rcx, rcx
je 0x424980
cmp qword [rcx], 0
je 0x424980
test r9, r9
jle 0x424988
lea rax, [r9 - 1]
mov rbp, qword [0x004ca5a0]
xor ebx, ebx
xor r13d, r13d
mov qword [rsp + 0x28], rax
lea r14, [rcx + 0x10]
nop
mov rcx, rsi
mov r13, qword [r12 + r13*8]
call sym.searchExtPos_pureZos_323
test rax, rax
js 0x4248c0
mov rcx, rsi
call sym.copyString
mov r13, rax
mov rcx, r13
call sym.newWideCString_systemZwidestrs_257
mov rcx, rax
call qword [rbp]
cmp eax, 0xffffffff
je 0x424897
test al, 0x10
je 0x424933
add rbx, 1
cmp rdi, rbx
jle 0x424988
mov r13, rbx
cmp rbx, rdi
jb 0x424860
mov rdx, qword [rsp + 0x28]
mov rcx, rbx
call sym.raiseIndexError2
jmp 0x424860
mov rcx, r13
call sym.normExt_pureZos_320
mov rcx, qword [rsi]
mov r15, rax
test rax, rax
je 0x424950
add rcx, qword [rax]
call sym.rawNewString
mov r8, qword [rsi]
mov rdx, r14
mov r13, rax
mov rax, qword [rax]
add r8, 1
lea rcx, [r13 + rax + 0x10]
call sym.memcpy
mov rax, qword [rsi]
add rax, qword [r13]
lea rdx, [r15 + 0x10]
mov qword [r13], rax
lea rcx, [r13 + rax + 0x10]
mov rax, qword [r15]
lea r8, [rax + 1]
call sym.memcpy
mov rax, qword [r15]
add qword [r13], rax
jmp 0x42487c
mov rcx, r14
call sym.copyString
mov r13, rax
mov rax, r13
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call sym.rawNewString
mov r8, qword [rsi]
mov rdx, r14
mov r13, rax
mov rax, qword [rax]
add r8, 1
lea rcx, [r13 + rax + 0x10]
call sym.memcpy
mov rax, qword [rsi]
add qword [r13], rax
jmp 0x42487c
xor r13d, r13d
jmp 0x424933
lea rcx, [0x004b5300]
call sym.getenv
mov rcx, rax
test rax, rax
je 0x424d4a
call sym.cstrToNimstr
mov rbx, rax
lea rax, [rdi - 1]
mov qword [rsp + 0xa0], rsi
mov r15, 0xffffffffffffffff
xor r13d, r13d
mov qword [rsp + 0x28], rax
test rbx, rbx
je 0x424a6f
cmp r13, qword [rbx]
jg 0x424980
mov rsi, r13
nop dword [rax]
mov rdx, qword [rbx]
cmp rsi, rdx
jge 0x424a0b
cmp rdx, rsi
ja 0x4249f1
sub rdx, 1
mov rcx, rsi
call sym.raiseIndexError2
cmp byte [rbx + rsi + 0x10], 0x3b
je 0x424a0b
add rsi, 1
jno 0x4249d8
call sym.raiseOverflow
mov rdx, qword [rbx]
cmp rsi, rdx
jl 0x4249e0
test r15, r15
je 0x424be8
mov r8, rsi
sub r8, 1
jo 0x424d59
mov rdx, r13
mov rcx, rbx
call sym.substr_system_7781
mov r13, rax
test rax, rax
je 0x424a41
mov rax, qword [r13]
test rax, rax
jne 0x424ad8
test r15, r15
je 0x424980
sub r15, 1
jo 0x424bf0
add rsi, 1
mov r13, rsi
jno 0x4249c3
call sym.raiseOverflow
test rbx, rbx
jne 0x4249cc
test r13, r13
jg 0x424980
mov rsi, r13
jmp 0x424a9d
mov rdx, 0xffffffffffffffff
mov rcx, rsi
call sym.raiseIndexError2
cmp byte [rsi + 0x10], 0x3b
je 0x424a0b
add rsi, 1
test rsi, rsi
jne 0x424a80
test r15, r15
jne 0x424d6d
mov rdx, r13
or r8, 0xffffffffffffffff
xor ecx, ecx
call sym.substr_system_7781
mov r13, rax
test rax, rax
je 0x424980
mov rax, qword [rax]
test rax, rax
je 0x424980
mov rsi, r15
nop dword [rax]
cmp byte [r13 + 0x10], 0x22
je 0x424cf2
mov rcx, r13
call sym.copyString
mov rbp, rax
mov rax, qword [rsp + 0xa0]
mov qword [rsp + 0x40], 0
mov r13, qword [rax]
test rbp, rbp
je 0x424b11
add r13, qword [rbp]
jo 0x424cbe
test r13, r13
js 0x424ccc
mov rcx, r13
lea r14, [rsp + 0x48]
lea r13, [rsp + 0x40]
call sym.rawNewString
mov rcx, r13
mov r8, rbp
mov rdx, r14
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 0
call sym.joinPathImpl_pureZos_79
mov r8, qword [rsp + 0xa0]
mov rcx, r13
mov rdx, r14
call sym.joinPathImpl_pureZos_79
mov r13, qword [rsp + 0x40]
test rdi, rdi
jle 0x424a41
lea rax, [r13 + 0x10]
mov qword [rsp + 0x38], rbx
xor r14d, r14d
xor ebp, ebp
mov qword [rsp + 0x30], rax
nop dword [rax]
mov rcx, r13
mov r14, qword [r12 + r14*8]
call sym.searchExtPos_pureZos_323
test rax, rax
js 0x424c00
mov rcx, r13
call sym.copyString
mov r14, rax
mov rcx, r14
call sym.newWideCString_systemZwidestrs_257
mov rcx, rax
mov rax, qword [0x004ca5a0]
call qword [rax]
cmp eax, 0xffffffff
je 0x424bbd
test al, 0x10
je 0x424928
add rbp, 1
cmp rdi, rbp
jle 0x424ce8
mov r14, rbp
cmp rbp, rdi
jb 0x424b80
mov rdx, qword [rsp + 0x28]
mov rcx, rbp
call sym.raiseIndexError2
jmp 0x424b80
mov rsi, qword [rbx]
jmp 0x424a14
call sym.raiseOverflow
jmp 0x424a54
mov rcx, r14
call sym.normExt_pureZos_320
mov rbx, rax
test r13, r13
je 0x424c70
mov rcx, qword [r13]
test rax, rax
je 0x424c90
add rcx, qword [rax]
call sym.rawNewString
mov r8, qword [r13]
mov rdx, qword [rsp + 0x30]
mov r14, rax
mov rax, qword [rax]
add r8, 1
lea rcx, [r14 + rax + 0x10]
call sym.memcpy
mov rax, qword [r14]
add rax, qword [r13]
mov qword [r14], rax
lea rcx, [r14 + rax + 0x10]
mov rax, qword [rbx]
lea rdx, [rbx + 0x10]
lea r8, [rax + 1]
call sym.memcpy
mov rax, qword [rbx]
add qword [r14], rax
jmp 0x424b9c
test rax, rax
je 0x424d3b
mov rcx, qword [rbx]
call sym.rawNewString
mov r14, rax
mov rax, qword [rax]
jmp 0x424c48
call sym.rawNewString
mov r8, qword [r13]
mov rdx, qword [rsp + 0x30]
mov r14, rax
mov rax, qword [rax]
add r8, 1
lea rcx, [r14 + rax + 0x10]
call sym.memcpy
mov rax, qword [r13]
add qword [r14], rax
jmp 0x424b9c
call sym.raiseOverflow
test r13, r13
jns 0x424b1a
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r13
call sym.raiseRangeErrorI
jmp 0x424b1a
mov rbx, qword [rsp + 0x38]
jmp 0x424a41
mov rbp, rax
sub rbp, 1
jo 0x424d9d
cmp rax, rbp
ja 0x424d10
lea rdx, [rax - 1]
mov rcx, rbp
call sym.raiseIndexError2
cmp byte [r13 + rbp + 0x10], 0x22
jne 0x424ae3
mov r8, qword [r13]
sub r8, 2
jo 0x424d8c
mov edx, 1
mov rcx, r13
call sym.substr_system_7781
mov rbp, rax
jmp 0x424aee
xor ecx, ecx
call sym.rawNewString
mov r14, rax
jmp 0x424b9c
xor ecx, ecx
call sym.copyString
mov rbx, rax
jmp 0x4249a8
mov qword [rsp + 0x30], r8
call sym.raiseOverflow
mov r8, qword [rsp + 0x30]
jmp 0x424a21
mov rdx, r13
or r8, 0xffffffffffffffff
xor ecx, ecx
call sym.substr_system_7781
mov r13, rax
test rax, rax
jne 0x424a34
jmp 0x424a4a
mov qword [rsp + 0x30], r8
call sym.raiseOverflow
mov r8, qword [rsp + 0x30]
jmp 0x424d26
call sym.raiseOverflow
mov rax, qword [r13]
jmp 0x424cff