Function at 0x4c2490
Capabilities:
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
mov rax, qword [sym.imp.libssp_0.dll___stack_chk_guard]
and byte [rcx + 0x30], 0x90
mov r12, qword [rcx]
mov rdi, qword [rax]
mov qword [rsp + 0xd8], rdi
xor edi, edi
cmp dword [rcx + 8], 0xcf
mov dword [rcx + 0x10], r9d
mov rbx, rcx
mov dword [rcx + 0xc], 0
mov r13, rdx
mov rsi, r8
mov ebp, r9d
mov dword [rsp + 0x5c], 0
mov qword [rcx + 0x28], 0
jbe 0x4c3220
lea rdi, [r12 + 8]
mov rcx, r12
xor eax, eax
mov dword [rbx + 0xc], 0xd0
and rdi, 0xfffffffffffffff8
mov qword [r12], 0
mov qword [r12 + 0xc8], 0
sub rcx, rdi
add ecx, 0xd0
shr ecx, 3
rep stosq qword [rdi], rax
mov dword [r12 + 0x80], 0xf
cmp rsi, 0xffffffffffffffff
je 0x4c2d90
lea rcx, [rsi + 1]
mov qword [r12 + 8], rcx
shl rcx, 4
call fcn.004c8d40
mov qword [r12], rax
test rsi, rsi
je 0x4c32c0
mov eax, 1
nop dword [rax]
lea edx, [rax + rax]
mov rax, rdx
cmp rsi, rdx
jae 0x4c2568
lea edi, [rdx - 1]
mov ecx, 0x10
call fcn.004c8f80
mov dword [r12 + 0x84], edi
mov qword [r12 + 0x40], rax
call qword [sym.imp.msvcrt.dll____mb_cur_max_func]
lea rcx, str.LC_ALL
mov dword [r12 + 0x9c], eax
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
je 0x4c25b8
cmp byte [rax], 0
jne 0x4c29d0
lea rcx, str.LC_CTYPE
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
je 0x4c25d5
cmp byte [rax], 0
jne 0x4c29d0
lea rcx, str.LANG
call sub.msvcrt.dll_getenv
mov rdi, rax
test rax, rax
jne 0x4c29d0
movzx eax, byte [r12 + 0x98]
and eax, 0xfffffff7
cmp qword [r12], 0
mov byte [r12 + 0x98], al
je 0x4c2d90
cmp qword [r12 + 0x40], 0
je 0x4c2d90
mov rcx, qword [rbx + 0x20]
mov r15d, ebp
mov qword [rsp + 0xd0], 0
lea r14, [rsp + 0x80]
and r15d, 0x200000
mov qword [rsp + 0xc8], 0
setne dl
test rcx, rcx
mov qword [rsp + 0xb8], rcx
mov ecx, dword [r12 + 0x9c]
setne dil
shr al, 2
mov qword [rsp + 0xa0], 0
or edi, edx
and eax, 1
mov qword [rsp + 0xb0], 0
mov byte [rsp + 0xc8], dl
mov edx, edi
mov dword [rsp + 0x5c], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], 0
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0x80], r13
mov dword [rsp + 0xa8], esi
mov dword [rsp + 0xa4], esi
mov byte [rsp + 0xcb], dil
mov dword [rsp + 0xd0], ecx
mov byte [rsp + 0xc9], al
mov dword [rsp + 0xb0], esi
mov dword [rsp + 0xac], esi
test esi, esi
jg 0x4c2d70
test dl, dl
cmovne r13, qword [rsp + 0x88]
mov qword [rsp + 0x88], r13
test r15d, r15d
jne 0x4c2da0
mov edx, dword [rsp + 0x9c]
test dil, dil
je 0x4c278e
cmp dword [rsp + 0xa8], edx
mov eax, dword [rsp + 0x94]
cmovle edx, dword [rsp + 0xa8]
cmp edx, eax
jle 0x4c32f0
movsxd r8, eax
jmp 0x4c2758
mov r13, qword [rsp + 0x88]
mov ecx, dword [rsp + 0x90]
mov r9, qword [rsp + 0x80]
add ecx, eax
add eax, 1
movsxd rcx, ecx
movzx ecx, byte [r9 + rcx]
mov r9, qword [rsp + 0xb8]
movzx ecx, byte [r9 + rcx]
mov byte [r13 + r8], cl
add r8, 1
cmp edx, eax
jne 0x4c2750
mov dword [rsp + 0x94], edx
mov dword [rsp + 0x98], edx
mov dword [rsp + 0x5c], 0
mov rsi, qword [rbx]
lea rdi, [rsp + 0x60]
mov r8d, ebp
mov rdx, r14
mov rcx, rdi
mov qword [rbx + 0x28], 0
or r8d, 0x400000
mov dword [rsi + 0xc0], ebp
mov qword [rsp + 0x38], rdi
call fcn.004b9230
mov r8, rdi
mov r9d, ebp
mov rdx, rbx
add dword [rsp + 0xa0], eax
lea rax, [rsp + 0x5c]
mov rcx, r14
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0
call fcn.004c2330
mov r10d, dword [rsp + 0x5c]
mov rdi, rax
test r10d, r10d
jne 0x4c2a40
lea r15, [rsi + 0x70]
xor r9d, r9d
xor r8d, r8d
mov byte [rsp + 0x78], 2
lea r14, [rsi + 0x80]
lea rsi, [rsp + 0x70]
mov rcx, r15
mov qword [rsp + 0x20], rsi
mov rdx, r14
call fcn.004baf60
mov rbp, rax
mov rdx, rax
test rdi, rdi
jne 0x4c2a80
mov r13, qword [rbx]
test rdx, rdx
je 0x4c32d0
test rbp, rbp
je 0x4c32d0
mov rdi, qword [r13 + 8]
mov qword [r12 + 0x68], rbp
lea r14, [rdi*4]
shl rdi, 4
mov rcx, r14
call fcn.004c8d40
mov rcx, r14
mov r14, rdi
mov qword [r13 + 0x18], rax
mov rbp, rax
call fcn.004c8d40
mov rcx, rdi
mov qword [r13 + 0x20], rax
mov r15, rax
call fcn.004c8d40
mov rcx, r14
mov qword [r13 + 0x28], rax
mov rdi, rax
call fcn.004c8d40
mov qword [r13 + 0x30], rax
test rbp, rbp
je 0x4c2cc0
test r15, r15
je 0x4c2cc0
test rdi, rdi
je 0x4c2cc0
test rax, rax
je 0x4c2cc0
mov rdi, qword [rbx + 0x28]
lea rcx, [rdi*4]
call fcn.004c8d40
mov qword [r13 + 0xc8], rax
test rax, rax
je 0x4c2952
xor edx, edx
test rdi, rdi
je 0x4c290c
nop word [rax + rax]
mov dword [rax + rdx*4], edx
add rdx, 1
cmp rdi, rdx
jne 0x4c2900
mov rcx, qword [r13 + 0x68]
lea rdx, [0x004ba690]
mov r8, r13
call fcn.004b87f0
mov rdx, qword [rbx + 0x28]
test rdx, rdx
je 0x4c3258
mov rcx, qword [r13 + 0xc8]
xor eax, eax
jmp 0x4c294d
add rax, 1
cmp rdx, rax
je 0x4c3260
cmp dword [rcx + rax*4], eax
je 0x4c2940
mov rcx, qword [r13 + 0x68]
mov r8, rbx
lea rdx, [0x004bb350]
call fcn.004b8780
test eax, eax
jne 0x4c2dc5
mov rcx, qword [r13 + 0x68]
mov r8, r13
lea rdx, [0x004bac60]
call fcn.004b8780
test eax, eax
jne 0x4c2dc5
mov rcx, qword [r13 + 0x68]
mov r8, r13
lea rdx, [0x004ba720]
lea rdi, [0x00591df4]
call fcn.004b87f0
mov qword [rsp + 0x40], rsi
mov r15, qword [r13 + 0x68]
nop dword [rax + rax]
movzx edx, byte [r15 + 0x30]
movsxd rbp, dword [r15 + 0x38]
cmp dl, 0x10
ja case.0x4c29cc.0
movzx eax, dl
movsxd rax, dword [rdi + rax*4]
add rax, rdi
jmp rax
mov edx, 0x2e
mov rcx, rdi
call sub.msvcrt.dll_strchr
test rax, rax
lea rdx, [rax + 1]
cmovne rdi, rdx
movzx eax, byte [rdi]
and eax, 0xffffffdf
cmp al, 0x55
jne 0x4c25ed
movzx eax, byte [rdi + 1]
and eax, 0xffffffdf
cmp al, 0x54
jne 0x4c25ed
movzx eax, byte [rdi + 2]
and eax, 0xffffffdf
cmp al, 0x46
jne 0x4c25ed
movzx eax, byte [rdi + 3]
cmp al, 0x2d
je 0x4c3300
cmp al, 0x38
jne 0x4c25ed
cmp byte [rdi + 4], 0
jne 0x4c25ed
or byte [r12 + 0x98], 4
jmp 0x4c25ed
test rax, rax
je 0x4c3350
lea r15, [rsi + 0x70]
xor r9d, r9d
xor r8d, r8d
mov byte [rsp + 0x78], 2
lea r14, [rsi + 0x80]
lea rsi, [rsp + 0x70]
mov rcx, r15
mov qword [rsp + 0x20], rsi
mov rdx, r14
call fcn.004baf60
mov rbp, rax
nop word [rax + rax]
mov qword [rsp + 0x20], rsi
mov r9, rbp
mov rdx, r14
mov r8, rdi
mov rcx, r15
mov byte [rsp + 0x78], 0x10
call fcn.004baf60
mov rdx, rbp
mov rbp, rax
jmp 0x4c2849
and edx, 8
jne 0x4c31c0
mov rax, qword [r15 + 0x20]
mov edx, dword [rax + 0x38]
mov rax, qword [r13 + 0x18]
mov dword [rax + rbp*4], edx
nop word [rax + rax]
mov rax, qword [r15 + 8]
test rax, rax
je 0x4c2aeb
mov r15, rax
jmp 0x4c29b0
mov r15, rdx
mov rdx, qword [r15 + 0x10]
cmp rdx, rax
je 0x4c2afd
test rdx, rdx
jne 0x4c31e0
mov rdx, qword [r15]
mov rax, r15
test rdx, rdx
jne 0x4c2ae8
mov rsi, qword [rsp + 0x40]
mov r14, qword [r13 + 0x10]
xor r15d, r15d
xor ebp, ebp
nop word cs:[rax + rax]
movsxd rdi, ebp
cmp rdi, r14
je 0x4c2b45
shl rdi, 4
mov rax, qword [r13 + 0x30]
mov r9d, dword [rax + rdi + 4]
test r9d, r9d
je 0x4c2b63
add ebp, 1
movsxd rdi, ebp
cmp rdi, r14
jne 0x4c2b28
test r15d, r15d
je 0x4c2e30
mov rax, qword [r13 + 0x30]
xor edi, edi
xor r15d, r15d
xor ebp, ebp
mov r9d, dword [rax + rdi + 4]
test r9d, r9d
jne 0x4c2b3a
mov r9d, 1
mov r8d, ebp
mov rdx, r13
mov rcx, rsi
call fcn.004bbbd0
test eax, eax
jne 0x4c2dc5
mov rax, qword [r13 + 0x30]
add ebp, 1
mov r8d, dword [rax + rdi + 4]
test r8d, r8d
je 0x4c2e00
mov r14, qword [r13 + 0x10]
jmp 0x4c2b20
mov rax, qword [r15 + 0x20]
mov r14d, dword [rax + 0x38]
movabs rax, 0x100000001
shl rbp, 4
add rbp, qword [r13 + 0x28]
mov ecx, 4
mov qword [rbp], rax
call fcn.004c8d40
mov qword [rbp + 8], rax
test rax, rax
je 0x4c2db8
mov dword [rax], r14d
jmp case.0x4c29cc.16
or byte [r13 + 0x98], 1
mov rax, qword [r15 + 8]
test rax, rax
je 0x4c3210
mov rax, qword [rax + 0x18]
mov r14d, dword [rax + 0x38]
mov rax, qword [r15 + 0x10]
test rax, rax
je 0x4c3200
mov rax, qword [rax + 0x18]
mov esi, dword [rax + 0x38]
test r14d, r14d
js 0x4c32a0
test esi, esi
js 0x4c3278
shl rbp, 4
add rbp, qword [r13 + 0x28]
mov ecx, 8
mov dword [rbp], 2
call fcn.004c8d40
mov qword [rbp + 8], rax
test rax, rax
je 0x4c2dc0
cmp r14d, esi
je 0x4c31f0
mov dword [rbp + 4], 2
jge 0x4c2dd8
mov dword [rax], r14d
mov dword [rax + 4], esi
jmp case.0x4c29cc.16
mov rax, qword [r15 + 0x20]
mov r14d, dword [rax + 0x38]
mov rax, qword [r13 + 0x18]
mov dword [rax + rbp*4], r14d
cmp byte [r15 + 0x30], 4
jne case.0x4c29cc.16
jmp 0x4c2ba8
cmp qword [r15 + 0x20], 0
je case.0x4c29cc.16
mov r8d, 0x599
lea rdx, str.compat_regex_regcomp.c
lea rcx, str.node__next__NULL
call qword [sym.imp.msvcrt.dll__assert]
jmp case.0x4c29cc.16
mov dword [rsp + 0x5c], 0xc
mov rsi, qword [r13 + 0x70]
test rsi, rsi
je 0x4c2ce8
nop dword [rax]
mov rcx, rsi
mov rsi, qword [rsi]
call fcn.004c9260
test rsi, rsi
jne 0x4c2cd8
mov qword [r13 + 0x70], 0
mov rcx, qword [r13 + 0x20]
mov dword [r13 + 0x80], 0xf
mov qword [r13 + 0x68], 0
call fcn.004c9260
mov qword [r13 + 0x20], 0
cmp byte [rsp + 0xcb], 0
jne 0x4c2de8
mov rcx, r12
call fcn.004b98f0
mov qword [rbx], 0
mov eax, dword [rsp + 0x5c]
mov dword [rbx + 8], 0
mov rbx, qword [sym.imp.libssp_0.dll___stack_chk_guard]
mov rsi, qword [rsp + 0xd8]
xor rsi, qword [rbx]
jne 0x4c3361
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea edx, [rsi + 1]
mov rcx, r14
call fcn.004b8a20
test eax, eax
jne 0x4c2dc5
movzx edx, byte [rsp + 0xcb]
jmp 0x4c2703
mov dword [rsp + 0x5c], 0xc
jmp 0x4c2d22
mov rcx, r14
call fcn.004b9160
mov dword [rsp + 0x5c], 0
jmp 0x4c27a4
mov qword [rbp], 0
mov eax, 0xc
mov dword [rsp + 0x5c], eax
mov r13, qword [rbx]
jmp 0x4c2cc8
mov dword [rax], esi
mov dword [rax + 4], r14d
jmp case.0x4c29cc.16
mov rcx, qword [rsp + 0x88]
call fcn.004c9260
jmp 0x4c2d22
mov rcx, qword [rsp + 0x78]
movsxd rdi, ebp
call fcn.004c9260
mov r14, qword [r13 + 0x10]
cmp r14, rdi
je 0x4c3120
shl rdi, 4
mov r15d, 1
jmp 0x4c2b2c
test byte [rbx + 0x30], 0x10
jne 0x4c2e50
cmp qword [rbx + 0x28], 0
je 0x4c2e50
test byte [r13 + 0x98], 1
jne 0x4c2e5f
nop word [rax + rax]
mov ecx, dword [r13 + 0x8c]
test ecx, ecx
je 0x4c2f38
mov rcx, r14
shl rcx, 4
call fcn.004c8d40
mov qword [r13 + 0x38], rax
test rax, rax
je 0x4c3340
xor edx, edx
test r14, r14
jne 0x4c2e8c
jmp 0x4c2f38
mov rax, qword [r13 + 0x38]
mov rcx, rdx
add rdx, 1
shl rcx, 4
mov qword [rax + rcx], 0
mov qword [rax + rcx + 8], 0
mov rax, qword [r13 + 0x10]
cmp rax, rdx
ja 0x4c2e88
test rax, rax
je 0x4c2f38
mov dword [rsp + 0x40], r15d
xor edi, edi
mov rax, qword [r13 + 0x30]
mov qword [rsp + 0x48], rsi
mov rsi, r13
mov r13, rdi
mov rdi, r13
mov r14d, r13d
xor r15d, r15d
shl rdi, 4
lea rdx, [rax + rdi]
mov rbp, qword [rdx + 8]
mov edx, dword [rdx + 4]
test edx, edx
jg 0x4c2eff
jmp 0x4c2f20
mov rax, qword [rsi + 0x30]
add r15, 1
cmp dword [rax + rdi + 4], r15d
jle 0x4c2f20
movsxd rcx, dword [rbp + r15*4]
mov edx, r14d
shl rcx, 4
add rcx, qword [rsi + 0x38]
call fcn.004b8a80
cmp eax, 0xffffffff
jne 0x4c2ef0
jmp 0x4c2dc0
add r13, 1
cmp qword [rsi + 0x10], r13
ja 0x4c2ed0
mov r15d, dword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
nop dword [rax]
mov rax, qword [r12 + 0x68]
mov rcx, rsi
mov dword [rsp + 0x5c], 0
mov rax, qword [rax + 0x18]
movsxd rax, dword [rax + 0x38]
mov dword [r12 + 0x88], eax
shl rax, 4
add rax, qword [r12 + 0x30]
mov edx, dword [rax + 4]
lea r8, [rax + 8]
call fcn.004bbe50
mov dword [rsp + 0x60], eax
mov edi, eax
test eax, eax
jne 0x4c30a4
mov eax, dword [r12 + 0x8c]
test eax, eax
jle 0x4c3060
mov r11d, dword [rsp + 0x74]
test r11d, r11d
jle 0x4c3060
lea rbp, [rsp + 0x78]
jmp 0x4c2fad
add r15d, 1
cmp r11d, r15d
jle 0x4c3060
mov r9, qword [rsp + 0x78]
movsxd rax, r15d
mov r10, qword [r12]
movsxd rcx, dword [r9 + rax*4]
shl rcx, 4
lea r13, [r10 + rcx]
cmp byte [r13 + 8], 4
jne 0x4c2fa0
lea r8d, [r11 - 1]
mov edx, 1
add r8, 2
jmp 0x4c2fef
mov eax, edx
add rdx, 1
cmp rdx, r8
je 0x4c3110
movsxd rax, dword [r9 + rdx*4 - 4]
shl rax, 4
add rax, r10
cmp byte [rax + 8], 9
jne 0x4c2fe0
mov r14d, dword [r13]
cmp dword [rax], r14d
jne 0x4c2fe0
mov rax, qword [r12 + 0x28]
mov rdx, rbp
mov rax, qword [rax + rcx + 8]
mov ecx, r11d
mov r8d, dword [rax]
call fcn.004ba520
test eax, eax
jne 0x4c2fa0
movsxd rdx, r8d
mov rcx, rsi
shl rdx, 4
add rdx, qword [r12 + 0x30]
call fcn.004bb8c0
test eax, eax
jne 0x4c3338
mov r11d, dword [rsp + 0x74]
mov r15d, 1
cmp r11d, r15d
jg 0x4c2fad
nop word [rax + rax]
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
mov r8, rsi
mov rdx, r12
call fcn.004bbed0
mov qword [r12 + 0x48], rax
test rax, rax
je 0x4c31b0
cmp byte [rax + 0x50], 0
js 0x4c3140
mov qword [r12 + 0x60], rax
mov qword [r12 + 0x58], rax
mov qword [r12 + 0x50], rax
mov rcx, qword [rsp + 0x78]
call fcn.004c9260
mov dword [rsp + 0x5c], edi
mov rdi, qword [rbx]
mov rsi, qword [rdi + 0x70]
test rsi, rsi
je 0x4c30c8
nop dword [rax]
mov rcx, rsi
mov rsi, qword [rsi]
call fcn.004c9260
test rsi, rsi
jne 0x4c30b8
mov qword [rdi + 0x70], 0
mov rcx, qword [rdi + 0x20]
mov dword [rdi + 0x80], 0xf
mov qword [rdi + 0x68], 0
call fcn.004c9260
mov qword [rdi + 0x20], 0
cmp byte [rsp + 0xcb], 0
jne 0x4c3130
mov eax, dword [rsp + 0x5c]
test eax, eax
je 0x4c2d3c
jmp 0x4c2d22
cmp r11d, eax
jne 0x4c300a
jmp 0x4c2fa0
xor r15d, r15d
xor ebp, ebp
xor edi, edi
jmp 0x4c2b2c
mov rcx, qword [rsp + 0x88]
call fcn.004c9260
jmp 0x4c30fd
mov r14, qword [rsp + 0x38]
mov r9d, 1
mov r8, rsi
mov rdx, r12
mov rcx, r14
call fcn.004bbed0
mov r8, rsi
mov rdx, r12
mov rcx, r14
mov qword [r12 + 0x50], rax
mov r9d, 2
call fcn.004bbed0
mov r8, rsi
mov rdx, r12
mov rcx, r14
mov qword [r12 + 0x58], rax
mov r9d, 6
call fcn.004bbed0
cmp qword [r12 + 0x50], 0
mov qword [r12 + 0x60], rax
je 0x4c31b0
cmp qword [r12 + 0x58], 0
je 0x4c31b0
test rax, rax
jne 0x4c309a
nop dword [rax]
mov edi, dword [rsp + 0x60]
jmp 0x4c30a4
mov r8d, 0x5bc
lea rdx, str.compat_regex_regcomp.c
lea rcx, str._IS_EPSILON_NODE__node__token.type_
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x4c2ab9
mov rax, rdx
jmp 0x4c2ad9
mov dword [rbp + 4], 1
mov dword [rax], r14d
jmp case.0x4c29cc.16
mov rax, qword [r15 + 0x20]
mov esi, dword [rax + 0x38]
jmp 0x4c2c11
mov rax, qword [r15 + 0x20]
mov r14d, dword [rax + 0x38]
jmp 0x4c2bfd
mov edx, 0xd0
test r12, r12
je 0x4c3320
mov rcx, r12
call fcn.004c9160
mov r12, rax
test r12, r12
je 0x4c3366
mov dword [rbx + 8], 0xd0
mov qword [rbx], r12
jmp 0x4c24f2
mov rcx, qword [r13 + 0xc8]
nop
call fcn.004c9260
mov qword [r13 + 0xc8], 0
jmp 0x4c2952
mov r8d, 0x5aa
lea rdx, str.compat_regex_regcomp.c
lea rcx, str.right____1
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x4c2c22
mov r8d, 0x5a9
lea rdx, str.compat_regex_regcomp.c
lea rcx, str.left____1
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x4c2c1a
xor edi, edi
mov edx, 1
jmp 0x4c2576
mov dword [rsp + 0x5c], 0xc
mov qword [r12 + 0x68], 0
jmp 0x4c2cc8
mov edx, eax
jmp 0x4c278e
cmp byte [rdi + 4], 0x38
jne 0x4c25ed
cmp byte [rdi + 5], 0
je 0x4c2a32
jmp 0x4c25ed
mov ecx, 1
call fcn.004c8f80
mov r12, rax
jmp 0x4c3239
mov edi, eax
jmp 0x4c30a4
mov dword [rsp + 0x5c], 0xc
mov r13, qword [rbx]
jmp 0x4c2cc8
mov qword [r12 + 0x68], 0
mov r13, qword [rbx]
jmp 0x4c2cc8
call sub.libssp_0.dll___stack_chk_fail
mov eax, 0xc
jmp 0x4c2d3c