Function at 0x4ad0e8ac
Capabilities:
Read file on windows

Disassembly:
mov esi, dword [0x4ad2e128]
jmp 0x4ad0e769
add rdi, 2
cmp word [rdi], r15w
jne 0x4ad0e63d
jmp 0x4ad0e652
cmp r13d, 1
jle 0x4ad0f6d7
movsxd rbp, dword [rsp + 0xe8]
mov rcx, qword [0x4ad2e1f0]
lea edi, [r13 + rbp + 1]
lea edx, [rdi + rdi]
call fcn.4ad02db8
mov rcx, qword [0x4ad2e1f8]
mov edx, edi
shl edx, 3
mov qword [0x4ad2e1f0], rax
call fcn.4ad02db8
mov rdx, qword [0x4ad2e1f0]
mov qword [0x4ad2e1f8], rax
cmp rdx, rbx
je 0x4ad16bc8
cmp rax, rbx
je 0x4ad16bc8
mov rbx, qword [rsp + 0xe0]
mov edi, 1
cmp r13d, edi
jle 0x4ad0e38d
lea r8, [rax + rbp*8 + 8]
lea r9, [rdx + rbp*2 + 2]
xor r14d, r14d
movzx eax, word [rbx + 0x88]
add ax, di
inc edi
mov word [r9], ax
mov qword [r8], r14
add r8, 8
add r9, 2
cmp edi, r13d
jl 0x4ad0e36d
movsxd rcx, edi
add rcx, rbp
xor eax, eax
mov word [rdx + rcx*2], ax
jmp 0x4ad0e39b
mov rbx, qword [rbx + 0x78]
mov qword [rsp + 0x60], rbx
cmp r12d, eax
jne 0x4ad16bf1
mov si, r15w
mov r15d, 0x22
mov dword [rsp + 0x58], r15d
xor r12d, r12d
mov dword [rsp + 0x7c], esi
cmp rbx, r12
je 0x4ad0e3d3
cmp word [rbx], si
je 0x4ad0e3ef
cmp word [rbx], r15w
je 0x4ad0e3ef
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.4ad02a74
mov rdx, qword [0x4ad2e1f0]
mov rbx, rax
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x6c], r12d
cmp word [rbx], r12w
je 0x4ad0e7e6
cmp byte [0x4ad2e0c9], r12b
jne 0x4ad0e7e6
call fcn.4ad0de5c
call fcn.4ad032d8
mov eax, dword [rsp + 0x70]
or rcx, 0xffffffffffffffff
mov qword [rsp + 0x40], r12
mov dword [rsp + 0x50], eax
xor eax, eax
mov rdi, rbx
mov qword [rsp + 0x98], r12
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r14, rcx
mov qword [rsp + 0x88], rcx
cmp word [rbx], si
je 0x4ad0f7f0
cmp word [rbx], r15w
je 0x4ad0fdaa
mov edx, 0x22
cmp word [rbx], dx
je 0x4ad16bfb
xor r9d, r9d
mov qword [rsp + 0x30], r12
mov edx, 0x80000000
lea r8d, [r9 + 5]
mov rcx, rbx
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x4ad0fc8c
mov r9d, 2
xor r8d, r8d
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
mov ebp, eax
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
lea ecx, [rbp + rbp + 4]
call fcn.4ad016dc
mov rcx, rsi
mov r12, rax
mov qword [rsp + 0x98], rax
xor eax, eax
cmp r12, rax
je 0x4ad16ca3
or dword [rsp + 0x4c], 0xffffffff
lea rdx, [r12 + rbp]
lea r9, [rsp + 0x4c]
mov r8d, ebp
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov rcx, rsi
mov edi, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
neg edi
sbb eax, eax
and eax, dword [rsp + 0x4c]
mov dword [rsp + 0x4c], eax
cmp eax, ebp
jne 0x4ad16c61
xor r15d, r15d
mov ecx, dword [0x4ad2e1a0]
mov r8d, ebp
add r8, r12
call fcn.4ad034c0
mov edx, r15d
cmp eax, r15d
mov r9d, ebp
mov dword [rsp + 0x28], ebp
setne dl
mov qword [rsp + 0x20], r12
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov qword [rsp + 0x40], r12
mov esi, 0xa
mov eax, eax
lea r15, [r12 + rax*2]
mov qword [rsp + 0x90], r15
cmp r15, r12
je 0x4ad0fe0c
cmp word [r15 - 2], si
jne 0x4ad0fe0c
mov ebp, dword [rsp + 0xe8]
xor r12d, r12d
mov word [r15], r12w
mov rcx, qword [rsp + 0x40]
cmp rcx, r15
jae 0x4ad0e79d
mov ebx, dword [rsp + 0x50]
cmp byte [0x4ad2e0c9], r12b
jne 0x4ad0e790
call fcn.4ad032d8
mov rdi, qword [rsp + 0x40]
mov edx, esi
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_wcschr]
mov qword [rsp + 0x40], rax
cmp rax, r12
je 0x4ad0e790
cmp rax, rdi
jbe 0x4ad0e5e1
cmp word [rax - 2], 0xd
jne 0x4ad0e5e1
mov word [rax - 2], r12w
mov rax, qword [rsp + 0x40]
mov word [rax], r12w
add qword [rsp + 0x40], 2
cmp ebx, r12d
jne 0x4ad152d7
cmp r13d, 1
jle 0x4ad0e618
mov rax, qword [0x4ad2e1f8]
movsxd rcx, ebp
lea r8d, [r13 - 1]
lea rcx, [rax + rcx*8 + 8]
shl r8, 3
xor edx, edx
call sub.msvcrt.dll_memset
xor edx, edx
mov ebp, r12d
mov r13, rdx
cmp word [rdi], dx
je 0x4ad0fe21
lea r14d, [rdx + 1]
cmp word [rdi], dx
je 0x4ad0e660
mov rbx, qword [rsp + 0x80]
xor r15d, r15d
movzx edx, word [rdi]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_wcschr]
cmp rax, r15
jne 0x4ad0d8e4
mov r15, qword [rsp + 0x90]
mov ebx, dword [rsp + 0x50]
xor edx, edx
cmp ebp, edx
je 0x4ad0e82b
movsxd rcx, dword [rsp + 0xf8]
mov rsi, rdi
cmp rcx, rdx
jne 0x4ad0e709
cmp word [rdi], dx
je 0x4ad0e72b
mov rbx, qword [rsp + 0x80]
xor r15d, r15d
movzx edx, word [rdi]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_wcschr]
cmp rax, r15
jne 0x4ad0e6ab
add rdi, 2
cmp word [rdi], r15w
jne 0x4ad0e690
mov r15, qword [rsp + 0x90]
mov ebx, dword [rsp + 0x50]
cmp rsi, rdi
je 0x4ad0e6f1
mov eax, 0x20
cmp ebp, eax
jge 0x4ad0e6f1
mov ecx, dword [rsp + 0x54]
mov eax, ebp
inc ebp
bt ecx, eax
jae 0x4ad0e6f1
movsxd rcx, dword [rsp + 0xe8]
mov rax, qword [0x4ad2e1f8]
inc r12d
add rcx, r13
inc r14d
inc r13
mov qword [rax + rcx*8], rsi
xor edx, edx
cmp word [rdi], dx
je 0x4ad0e72b
mov word [rdi], dx
add rdi, 2
cmp word [rdi], dx
je 0x4ad0e72b
jmp 0x4ad0e62d
cmp r14d, ecx
jne 0x4ad0e67c
movsxd rcx, dword [rsp + 0xe8]
mov rax, qword [0x4ad2e1f8]
add rcx, r13
inc r12d
mov qword [rax + rcx*8], rdi
cmp r12d, edx
je 0x4ad0fe21
mov rax, qword [rsp + 0xe0]
mov edx, dword [rsp + 0x68]
mov rcx, qword [rax + 0x80]
call fcn.4ad0d910
mov esi, dword [rsp + 0x6c]
xor r12d, r12d
mov dword [rsp + 0x78], eax
cmp esi, r12d
je 0x4ad0d869
mov ecx, esi
call fcn.4ad017e0
jmp 0x4ad0e769
mov dword [rsp + 0x6c], esi
mov dword [rsp + 0x68], r12d
jmp 0x4ad0e774
mov r13d, dword [rsp + 0x48]
mov ebp, dword [rsp + 0xe8]
mov esi, 0xa
cmp qword [rsp + 0x40], r15
jb 0x4ad0e59b
mov rbx, qword [rsp + 0x60]
mov r14, qword [rsp + 0x88]
mov r15d, dword [rsp + 0x58]
jmp 0x4ad0e7a4
mov rax, qword [rsp + 0x98]
cmp rax, r12
je 0x4ad0e7b9
mov rcx, rax
call fcn.4ad01040
mov rdx, qword [0x4ad2e1f0]
mov r13d, dword [rsp + 0x48]
mov ebp, dword [rsp + 0xe8]
lea eax, [r14 + 1]
movsxd rcx, eax
lea rbx, [rbx + rcx*2]
mov qword [rsp + 0x60], rbx
cmp word [rbx], r12w
jne 0x4ad16c69
cmp r13d, 1
jle 0x4ad0e80c
cmp rdx, r12
je 0x4ad0e80c
cmp word [rdx], r12w
je 0x4ad0e80c
mov rax, qword [0x4ad2e1f8]
movsxd rcx, ebp
mov word [rdx + rcx*2 + 2], r12w
mov qword [rax + rcx*8 + 8], r12
mov eax, dword [rsp + 0x78]
mov rbx, qword [rsp + 0xf0]
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov eax, dword [rsp + 0x74]
cmp word [rdi], ax
jne 0x4ad0e668
jmp 0x4ad0e72b
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa0
mov rbx, rcx
mov edi, 1
lea rcx, [0x4ad29890]
mov ebp, edx
mov dword [rsp + 0x74], 0x3b
mov dword [rsp + 0x68], edi
mov dword [rsp + 0x78], edi
call fcn.4ad07b58
mov r13d, edi
mov rsi, rax
mov qword [rsp + 0x80], rax
xor eax, eax
mov dword [rsp + 0x48], edi
mov dword [rsp + 0x54], edi
mov rdi, qword [rbx + 0x90]
lea r15d, [rax + 0x27]
mov dword [rsp + 0x70], eax
mov dword [rsp + 0xf8], eax
mov r12d, eax
lea r8d, [rax + 0x22]
lea edx, [rax + 0x20]
mov dword [rsp + 0x58], r15d
cmp rdi, rax
je 0x4ad0f6e8
mov qword [rsp + 0x40], rdi
movzx ebp, word [rdi]
cmp bp, r8w
jne 0x4ad16b57
add rdi, 2
mov qword [rsp + 0x40], rdi
cmp rdi, rax
je 0x4ad0f6e1
xor ebx, ebx
jmp 0x4ad0e960
movzx eax, word [rdi]
cmp ax, bx
je 0x4ad0e2f0
cmp ax, dx
jbe 0x4ad15290
cmp word [rdi], bp
je 0x4ad0e2f0
lea rdx, str.usebackq
mov r8d, 8
mov rcx, rdi
call qword [sym.imp.msvcrt.dll__wcsnicmp]
cmp eax, ebx
je 0x4ad16b69
mov rcx, qword [rsp + 0x40]
mov edi, 7
lea rdx, str.useback
mov r8, rdi
call qword [sym.imp.msvcrt.dll__wcsnicmp]
cmp eax, ebx
je 0x4ad16b7d
mov rcx, qword [rsp + 0x40]
lea rdx, str.eol
mov r8d, 4
call qword [sym.imp.msvcrt.dll__wcsnicmp]
cmp eax, ebx
je 0x4ad16b8f
mov rcx, qword [rsp + 0x40]
lea rdx, str.delims
mov r8, rdi
call qword [sym.imp.msvcrt.dll__wcsnicmp]
cmp eax, ebx
je 0x4ad0ebc5
mov rcx, qword [rsp + 0x40]
lea rdx, str.skip
mov r8d, 5
call qword [sym.imp.msvcrt.dll__wcsnicmp]
mov rcx, qword [rsp + 0x40]
cmp eax, ebx
je 0x4ad152aa
lea rdx, str.tokens
mov r8, rdi
call qword [sym.imp.msvcrt.dll__wcsnicmp]
cmp eax, ebx
jne 0x4ad16baa
mov rdi, qword [rsp + 0x40]
mov r14d, ebx
mov dword [rsp + 0x54], ebx
add rdi, 0xe
mov esi, ebx
mov qword [rsp + 0x40], rdi
jmp 0x4ad0ea51
movzx eax, word [rdi]
cmp ax, bx
je 0x4ad16ba5
cmp ax, bp
je 0x4ad0ebaf
cmp ax, 0x2a
je 0x4ad0fd7c
lea rdx, [rsp + 0x40]
xor r8d, r8d
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_wcstol]
mov ebx, eax
test eax, eax
jle 0x4ad16baa
mov rdi, qword [rsp + 0x40]
cmp word [rdi], 0x2d
je 0x4ad0fd58
mov ecx, 0x20
cmp eax, ecx
jge 0x4ad0eac9
cmp ebx, eax
jg 0x4ad0eac9
sub eax, ebx
lea ecx, [rbx - 1]
inc eax
mov edx, eax
add esi, eax
mov eax, 1
shl eax, cl
inc ecx
or r14d, eax
sub rdx, 1
jne 0x4ad0eab2
mov dword [rsp + 0x54], r14d
cmp word [rdi], 0x2c
jne 0x4ad0eba3
add rdi, 2
mov qword [rsp + 0x40], rdi
jmp 0x4ad0eade
xor ebx, ebx
jmp 0x4ad0ea51
cmp word [rax + 2], bp
je 0x4ad0ebf9
movzx edi, word [rax]
mov rcx, rsi
mov word [rax], dx
call fcn.4ad01040
mov rcx, rbx
call fcn.4ad07b58
xor ebx, ebx
mov rsi, rax
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x40]
mov word [rax], di
cmp di, bx
mov rdi, qword [rsp + 0x40]
je 0x4ad0eb90
add rdi, 2
mov qword [rsp + 0x40], rdi
jmp 0x4ad0eb90
cmp rdi, rbx
je 0x4ad0e2f0
mov edx, 0x20
jmp 0x4ad0e960
cmp word [rdi], 0x2a
je 0x4ad0eade
xor ebx, ebx
cmp esi, r13d
cmovg r13d, esi
mov rsi, qword [rsp + 0x80]
mov dword [rsp + 0x48], r13d
jmp 0x4ad0eb90
mov rax, qword [rsp + 0x40]
xor edx, edx
add rax, 0xe
mov qword [rsp + 0x40], rax
mov rbx, rax
movzx ecx, word [rax]
cmp cx, dx
je 0x4ad0eb50
lea edi, [rdx + 0x20]
cmp cx, bp
je 0x4ad0eb50
cmp cx, di
je 0x4ad0eb46
add rax, 2
mov qword [rsp + 0x40], rax
mov cx, word [rax]
cmp cx, dx
jne 0x4ad0ebe7
jmp 0x4ad0eb50
mov rbx, qword [rsp + 0xe0]
xor eax, eax
mov ebp, dword [rsp + 0xe8]
mov rdx, qword [0x4ad2e1f0]
jmp 0x4ad0e39b
cmp ecx, 1
jle 0x4ad0e450
movsxd rax, ecx
cmp word [rbx + rax*2 - 2], si
jne 0x4ad0e450
add rbx, 2
sub r14d, 2
lea rdx, [0x4ad29ca8]
movsxd rax, r14d
mov rcx, rbx
mov qword [rsp + 0x60], rbx
mov word [rbx + rax*2], r12w
mov qword [rsp + 0x88], r14
call qword [sym.imp.msvcrt.dll__wpopen]
mov rsi, rax
cmp rax, r12
je 0x4ad16c99
mov rcx, rax
mov r13, r12
mov rbp, r12
call qword [sym.imp.msvcrt.dll_feof]
xor r15d, r15d
jmp 0x4ad0f854
cmp eax, r15d
jne 0x4ad0f8e4
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_ferror]
cmp eax, r15d
jne 0x4ad0f8e4
mov rax, r13
sub rax, rbp
cmp rax, 0x200
jae 0x4ad0f89e
add r13, 0x100
cmp r12, r15
je 0x4ad0f8d9
mov edx, r13d
mov rcx, r12
call fcn.4ad02db8
jmp 0x4ad0f892
mov r12, rax
cmp rax, r15
je 0x4ad16c72
lea rcx, [r12 + rbp]
mov edx, r13d
mov r8, rsi
sub edx, ebp
mov byte [rcx], r15b
call qword [sym.imp.msvcrt.dll_fgets]
cmp rax, r15
je 0x4ad0f8e4
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r12
repne scasb al, byte [rdi]
not rcx
lea rbp, [rcx - 1]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_feof]
nop
jmp 0x4ad0f854
mov ecx, r13d
call fcn.4ad016dc
nop
jmp 0x4ad0f892
mov rcx, rsi
call qword [sym.imp.msvcrt.dll__pclose]
lea edx, [rbp + rbp + 4]
mov rcx, r12
call fcn.4ad02db8
mov r12, rax
mov qword [rsp + 0x98], rax
cmp qword [0x4ad2e1f0], r15
je 0x4ad16c85
cmp qword [0x4ad2e1f8], r15
je 0x4ad16c85
lea rcx, [rax + rbp]
mov r8, rbp
mov rdx, rax
call sub.msvcrt.dll_memmove
mov r13d, dword [rsp + 0x48]
mov dword [rsp + 0x4c], ebp
jmp 0x4ad0e523
mov ecx, 0x2363
jmp 0x4ad0fc93
mov edx, 1
mov r8, rbx
call fcn.4ad0b8b0
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x4ad0e810
lea rcx, [rdi + 2]
lea rdx, [rsp + 0x40]
xor r8d, r8d
call qword [sym.imp.msvcrt.dll_wcstol]
test eax, eax
jle 0x4ad16baa
mov rdi, qword [rsp + 0x40]
jmp 0x4ad0ea9a
add rdi, 2
inc esi
mov dword [rsp + 0xf8], esi
mov qword [rsp + 0x40], rdi
jmp 0x4ad0ebaf
cmp ecx, 1
jle 0x4ad0e45a
movsxd rax, ecx
cmp word [rbx + rax*2 - 2], r15w
jne 0x4ad0e45a
add rbx, 2
sub r14d, 2
mov esi, 0xa
mov word [rbx + rax*2 - 4], si
movsxd rax, r14d
mov qword [rsp + 0x60], rbx
lea r15, [rbx + rax*2 + 2]
mov qword [rsp + 0x88], r14
mov rcx, rbx
mov qword [rsp + 0x90], r15
mov qword [rsp + 0x40], rbx
jmp 0x4ad0e58e
mov word [r15], si
add r15, 2
mov qword [rsp + 0x90], r15
jmp 0x4ad0e57b
xor r12d, r12d
jmp 0x4ad0e774
add rdi, 2
mov qword [rsp + 0x40], rdi
mov ax, word [rdi]
cmp ax, bx
jne 0x4ad0e96c
jmp 0x4ad0e975
add rcx, 0xa
lea rdx, [rsp + 0x40]
xor r8d, r8d
mov qword [rsp + 0x40], rcx
call qword [sym.imp.msvcrt.dll_wcstol]
cmp eax, ebx
mov dword [rsp + 0x70], eax
jle 0x4ad16baa
mov rdi, qword [rsp + 0x40]
jmp 0x4ad0eb90
dec ebx
mov dword [rsp + 0x50], ebx
jmp 0x4ad0e774
cmp bp, r15w
je 0x4ad0e94a
mov bp, ax
jmp 0x4ad0e953
mov rdi, qword [rsp + 0x40]
mov r12d, 1
add rdi, 0x10
jmp 0x4ad0eb89
lea r12d, [rdi - 6]
mov rdi, qword [rsp + 0x40]
add rdi, 0xe
jmp 0x4ad0eb89
mov rdi, qword [rsp + 0x40]
add rdi, 0xa
mov ax, word [rdi - 2]
mov dword [rsp + 0x74], eax
jmp 0x4ad0eb89
jmp 0x4ad0ebaf
mov r8, qword [rsp + 0x40]
mov edx, 1
mov ecx, 0x234a
call fcn.4ad0b8b0
mov eax, 1
jmp 0x4ad0e810
xor edx, edx
mov ecx, 0x2374
call fcn.4ad0b8b0
call fcn.4ad24ac4
lea rcx, [0x4ad4a4f0]
mov edx, 1
call qword [sym.imp.msvcrt.dll_longjmp]
int3
mov esi, 0x60
jmp 0x4ad0e3bc
add rbx, 2
dec r14d
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x88], r14
mov rcx, rbx
mov rax, rbx
cmp word [rbx], r12w
je 0x4ad16c28
mov rax, rcx
add rcx, 2
cmp word [rcx], r12w
jne 0x4ad16c1b
mov qword [rsp + 0x40], rax
cmp word [rax], dx
jne 0x4ad0e468
mov ecx, 0x20
mov word [rax], r12w
mov rax, qword [rsp + 0x40]
sub rax, 2
mov qword [rsp + 0x40], rax
cmp rax, rbx
jb 0x4ad0e468
cmp word [rax], cx
jne 0x4ad0e468
jmp 0x4ad16c3b
xor r12d, r12d
jmp 0x4ad0e7a4
mov esi, dword [rsp + 0x7c]
jmp 0x4ad0e3fe
mov rcx, rsi
call qword [sym.imp.msvcrt.dll__pclose]
mov eax, 8
jmp 0x4ad0e810
mov r8, rbx
mov edx, 1
mov ecx, 0x2374
call fcn.4ad0b8b0
jmp 0x4ad16c7b
mov ecx, 0x2331
jmp 0x4ad0fc93
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4ad16c7b