Function at 0x61cc1b80
Capabilities:
Read file on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x118
lea rbp, [rsp + 0x80]
mov rbx, rcx
lea rcx, [0x61cd7080]
mov r13, rdx
call sym.libintl_8.dll_libintl_recursive_lock_lock_func
test eax, eax
jne 0x61cc23dc
mov esi, dword [rbx + 8]
test esi, esi
jne 0x61cc1e26
mov rcx, qword [rbx]
mov dword [rbx + 8], 0xffffffff
mov qword [rbx + 0x10], 0
test rcx, rcx
je 0x61cc1e1f
mov edx, 0x8000
call sub.msvcrt.dll__open
cmp eax, 0xffffffff
mov r12d, eax
je 0x61cc1e1f
lea rdx, [rbp + 0x50]
mov ecx, eax
call qword [sym.imp.msvcrt.dll__fstat64]
test eax, eax
jne 0x61cc1e17
mov r10, qword [rbp + 0x68]
cmp r10, 0x2f
mov qword [rbp + 0x28], r10
jbe 0x61cc1e17
mov rcx, r10
call sub.msvcrt.dll_malloc
test rax, rax
mov rsi, rax
je 0x61cc1e17
mov rdi, qword [rbp + 0x28]
mov r14, rax
mov r8d, edi
mov rdx, r14
mov ecx, r12d
call sub.msvcrt.dll__read
test eax, eax
jle 0x61cc1e00
movsxd r8, eax
add r14, r8
sub rdi, r8
test rdi, rdi
jne 0x61cc1c32
mov ecx, r12d
call sub.msvcrt.dll__close
mov eax, dword [rsi]
cmp eax, 0x950412de
setne dil
cmp eax, 0xde120495
jne 0x61cc2b41
mov ecx, 0xf8
call sub.msvcrt.dll_malloc
test rax, rax
mov r15, rax
je 0x61cc1e1f
mov r10, qword [rbp + 0x28]
movzx edi, dil
mov qword [rbx + 0x10], rax
test edi, edi
mov qword [rax], rsi
mov dword [rax + 8], 0
mov dword [rax + 0x18], edi
mov qword [rax + 0x20], 0
mov qword [rax + 0x10], r10
mov eax, dword [rsi + 4]
je 0x61cc1cb8
bswap eax
cmp eax, 0x1ffff
ja 0x61cc1e60
test edi, edi
mov edx, dword [rsi + 8]
je 0x61cc1f80
bswap edx
mov r9d, dword [rsi + 0x14]
mov dword [r15 + 0x28], edx
mov edx, dword [rsi + 0xc]
bswap r9d
bswap edx
mov dword [r15 + 0x58], r9d
mov edx, edx
add rdx, rsi
mov qword [r15 + 0x30], rdx
mov edx, dword [rsi + 0x10]
bswap edx
mov edx, edx
add rdx, rsi
cmp r9d, 2
mov qword [r15 + 0x38], rdx
jbe 0x61cc1f70
mov edx, dword [rsi + 0x18]
bswap edx
mov edx, edx
add rdx, rsi
test ax, ax
mov qword [r15 + 0x60], rdx
mov dword [r15 + 0x68], edi
je 0x61cc1e80
test rdx, rdx
je 0x61cc1e60
test edi, edi
mov r10d, dword [rsi + 0x24]
je 0x61cc1fb0
bswap r10d
test r10d, r10d
mov dword [rbp + 0x28], r10d
je 0x61cc1e80
mov edx, dword [rsi + 0x1c]
mov eax, dword [rsi + 0x20]
bswap edx
bswap eax
mov dword [rbp + 0x20], edx
mov eax, eax
lea rcx, [rsi + rax]
mov eax, dword [rbp + 0x20]
lea rax, [rax*8 + 0x1e]
shr rax, 4
shl rax, 4
call fcn.61cd1480
mov r11d, dword [rbp + 0x20]
sub rsp, rax
lea r14, [rsp + 0x30]
test r11d, r11d
je 0x61cc1fcd
xor r8d, r8d
lea r12, [0x61cda02a]
mov r10d, dword [rbp + 0x20]
jmp 0x61cc1deb
mov eax, dword [rcx + 4]
mov edx, dword [rcx]
bswap eax
bswap edx
mov eax, eax
add rax, rsi
test edx, edx
je 0x61cc1e60
lea edx, [rdx - 1]
cmp byte [rax + rdx], 0
jne 0x61cc1e60
movzx edx, byte [rax]
cmp dl, 0x50
je 0x61cc1ef0
cmp dl, 0x49
mov edx, 0
jne 0x61cc1dd6
cmp byte [rax + 1], 0
cmove rdx, r12
mov qword [r14 + r8*8], rdx
add r8, 1
add rcx, 8
cmp r10d, r8d
jbe 0x61cc1fcd
test edi, edi
jne 0x61cc1d95
mov eax, dword [rcx + 4]
mov edx, dword [rcx]
add rax, rsi
jmp 0x61cc1da3
cmp eax, 0xffffffff
jne 0x61cc1e17
mov rdx, qword [sym.imp.msvcrt.dll__errno]
call rdx
cmp dword [rax], 4
je 0x61cc1c51
mov ecx, r12d
call sub.msvcrt.dll__close
mov dword [rbx + 8], 1
lea rcx, [0x61cd7080]
call sym.libintl_8.dll_libintl_recursive_lock_unlock_func
test eax, eax
jne 0x61cc23dc
lea rsp, [rbp + 0x98]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rsi, qword [rbp + 0x18]
mov r15, qword [rbp - 0x18]
mov rbx, qword [rbp - 0x20]
nop word [rax + rax]
mov rcx, rsi
call sub.msvcrt.dll_free
mov rcx, r15
call sub.msvcrt.dll_free
mov qword [rbx + 0x10], 0
jmp 0x61cc1e1f
mov dword [r15 + 0x40], 0
mov qword [r15 + 0x48], 0
mov qword [r15 + 0x50], 0
lea rcx, [r15 + 0x80]
mov qword [r15 + 0x70], 0
mov qword [r15 + 0x78], 0
call sym.libintl_8.dll_libintl_rwlock_init_func
lea rax, [rbp + 0x38]
lea r8, [0x61cda02a]
mov rdx, r13
mov rcx, rbx
xor r9d, r9d
mov qword [rsp + 0x20], rax
call sym.libintl_8.dll__nl_find_msg
lea rdx, [r15 + 0xe8]
lea r8, [r15 + 0xf0]
mov rcx, rax
call sym.libintl_8.dll_libintl_gettext_extract_plural
jmp 0x61cc1e1f
xor edx, edx
cmp byte [rax + 1], 0x52
jne 0x61cc1dd6
cmp byte [rax + 2], 0x49
jne 0x61cc1dd6
movzx r11d, byte [rax + 3]
cmp r11b, 0x64
sete byte [rbp + 0x18]
cmp r11b, 0x69
sete byte [rbp + 0x10]
je 0x61cc1f3f
cmp byte [rbp + 0x18], 0
jne 0x61cc1f3f
cmp r11b, 0x6f
je 0x61cc1f3f
cmp r11b, 0x75
je 0x61cc1f3f
cmp r11b, 0x78
je 0x61cc1f3f
cmp r11b, 0x58
jne 0x61cc1dd6
movzx edx, byte [rax + 4]
cmp dl, 0x38
je 0x61cc2490
cmp dl, 0x31
je 0x61cc24f4
cmp dl, 0x33
jne 0x61cc256a
cmp byte [rax + 5], 0x32
je 0x61cc25dd
xor edx, edx
jmp 0x61cc1dd6
xor edx, edx
jmp 0x61cc1d0f
mov dword [r15 + 0x28], edx
mov edx, dword [rsi + 0xc]
mov r9d, dword [rsi + 0x14]
add rdx, rsi
mov dword [r15 + 0x58], r9d
mov qword [r15 + 0x30], rdx
mov edx, dword [rsi + 0x10]
add rdx, rsi
cmp r9d, 2
mov qword [r15 + 0x38], rdx
jbe 0x61cc1f70
mov edx, dword [rsi + 0x18]
jmp 0x61cc1d0c
test r10d, r10d
mov dword [rbp + 0x28], r10d
je 0x61cc1e80
mov r10d, dword [rsi + 0x1c]
mov eax, dword [rsi + 0x20]
mov dword [rbp + 0x20], r10d
jmp 0x61cc1d54
test edi, edi
je 0x61cc22a4
mov eax, dword [rsi + 0x28]
bswap eax
mov eax, eax
add rax, rsi
mov qword [rbp - 8], rax
mov eax, dword [rsi + 0x2c]
bswap eax
mov eax, eax
add rax, rsi
mov r9d, r9d
mov r12d, dword [rbp + 0x20]
shl r9, 2
mov qword [rbp], rax
xor eax, eax
mov qword [rbp - 0x18], r15
mov qword [rbp - 0x10], r9
mov r15, rax
mov qword [rbp + 0x10], r9
mov dword [rbp + 0xc], 0
mov qword [rbp + 0x18], rsi
mov qword [rbp - 0x20], rbx
mov qword [rbp - 0x28], r13
xor r13d, r13d
test edi, edi
je 0x61cc2270
test r13d, r13d
jne 0x61cc228d
mov r10, qword [rbp - 8]
mov esi, dword [r10 + r15*4]
bswap esi
mov esi, esi
add rsi, qword [rbp + 0x18]
mov eax, dword [rsi + 8]
bswap eax
cmp eax, 0xffffffff
setne al
test al, al
je 0x61cc20a1
add rsi, 4
xor ebx, ebx
jmp 0x61cc2093
mov edx, dword [rsi]
mov eax, dword [rsi + 4]
bswap edx
bswap eax
mov edx, edx
add rbx, rdx
cmp eax, 0xffffffff
je 0x61cc20a3
cmp eax, r12d
jae 0x61cc1e4e
mov eax, eax
mov rcx, qword [r14 + rax*8]
test rcx, rcx
je 0x61cc20ca
call sub.msvcrt.dll_strlen
add rsi, 8
add rbx, rax
test edi, edi
jne 0x61cc2060
mov eax, dword [rsi]
add rbx, rax
mov eax, dword [rsi + 4]
jmp 0x61cc206e
xor ebx, ebx
mov qword [rbp + r13*8 + 0x40], rbx
add r13, 1
cmp r13, 2
jne 0x61cc2023
mov rax, qword [rbp + 0x48]
add qword [rbp + 0x10], rax
mov rdx, qword [rbp + 0x40]
add dword [rbp + 0xc], 1
add qword [rbp + 0x10], rdx
add r15, 1
cmp dword [rbp + 0x28], r15d
ja 0x61cc2020
cmp dword [rbp + 0xc], 0
mov rsi, qword [rbp + 0x18]
mov r15, qword [rbp - 0x18]
mov rbx, qword [rbp - 0x20]
mov r13, qword [rbp - 0x28]
je 0x61cc1e80
mov eax, dword [rbp + 0xc]
mov rcx, qword [rbp + 0x10]
add eax, eax
shl rax, 4
add rcx, rax
call sub.msvcrt.dll_malloc
test rax, rax
mov qword [rbp + 0x20], rax
je 0x61cc1e60
mov qword [r15 + 0x20], rax
mov eax, dword [rbp + 0xc]
mov rcx, qword [rbp + 0x20]
mov qword [rbp - 0x50], r13
mov r13, r14
mov dword [rbp - 0x20], 0
mov qword [rbp - 0x40], r15
mov qword [rbp - 0x48], rbx
shl rax, 4
add rcx, rax
add rax, rcx
mov qword [rbp - 0x30], rcx
mov r12, rax
mov qword [rbp - 0x28], rax
xor eax, eax
add r12, qword [rbp - 0x10]
mov r14, rax
mov qword [rbp - 0x10], rsi
mov rax, qword [rbp - 0x40]
mov r8, qword [rbp]
xor ecx, ecx
mov r9, qword [rbp - 8]
mov ebx, dword [rax + 0x18]
test ebx, ebx
je 0x61cc23c0
test ecx, ecx
jne 0x61cc24eb
mov eax, dword [r9 + r14*4]
bswap eax
mov edx, eax
add rdx, qword [rbp - 0x10]
mov eax, dword [rdx + 8]
bswap eax
cmp eax, 0xffffffff
setne al
test al, al
je 0x61cc21c0
add rdx, 4
jmp 0x61cc21b2
mov eax, eax
cmp qword [r13 + rax*8], 0
je 0x61cc22be
add rdx, 8
test ebx, ebx
mov eax, dword [rdx + 4]
je 0x61cc21bb
bswap eax
cmp eax, 0xffffffff
jne 0x61cc21a0
add ecx, 1
cmp ecx, 2
jne 0x61cc2168
mov r10d, dword [rbp - 0x20]
mov dword [rbp + 0x18], 0
mov qword [rbp - 0x18], r14
shl r10, 4
mov qword [rbp - 0x38], r10
test ebx, ebx
mov r10, qword [rbp - 0x18]
je 0x61cc2472
cmp dword [rbp + 0x18], 0
jne 0x61cc255d
mov rdx, qword [rbp - 8]
mov eax, dword [rdx + r10*4]
bswap eax
mov r9d, eax
add r9, qword [rbp - 0x10]
mov eax, dword [r9]
bswap eax
mov eax, eax
mov rsi, qword [rbp - 0x10]
mov r10d, dword [rbp + 0x18]
mov r15, qword [rbp + 0x20]
add rsi, rax
test r10d, r10d
cmovne r15, qword [rbp - 0x30]
add r15, qword [rbp - 0x38]
test ebx, ebx
mov qword [rbp + 0x10], r15
je 0x61cc244f
mov eax, dword [r9 + 8]
bswap eax
add eax, 1
jne 0x61cc23e1
mov eax, dword [r9 + 4]
bswap eax
mov eax, eax
mov r10, qword [rbp + 0x10]
mov qword [r10], rax
mov qword [r10 + 8], rsi
add dword [rbp + 0x18], 1
cmp dword [rbp + 0x18], 2
je 0x61cc22b6
mov rax, qword [rbp - 0x40]
mov ebx, dword [rax + 0x18]
jmp 0x61cc21df
test r13d, r13d
jne 0x61cc229a
mov r10, qword [rbp - 8]
mov esi, dword [r10 + r15*4]
add rsi, qword [rbp + 0x18]
cmp dword [rsi + 8], 0xffffffff
setne al
jmp 0x61cc204f
mov r10, qword [rbp]
mov esi, dword [r10 + r15*4]
jmp 0x61cc203c
mov r10, qword [rbp]
mov esi, dword [r10 + r15*4]
jmp 0x61cc227d
mov eax, dword [rsi + 0x28]
add rax, rsi
mov qword [rbp - 8], rax
mov eax, dword [rsi + 0x2c]
jmp 0x61cc1fea
add dword [rbp - 0x20], 1
mov r14, qword [rbp - 0x18]
add r14, 1
cmp dword [rbp + 0x28], r14d
ja 0x61cc2157
mov r10d, dword [rbp - 0x20]
cmp dword [rbp + 0xc], r10d
mov r15, qword [rbp - 0x40]
mov rbx, qword [rbp - 0x48]
mov r13, qword [rbp - 0x50]
jne 0x61cc23dc
mov eax, dword [r15 + 0x58]
test eax, eax
je 0x61cc231e
lea eax, [rax - 1]
mov r9d, dword [r15 + 0x68]
mov rcx, qword [r15 + 0x60]
lea r9, [rax + 0x63]
cmp al, 0x48
add eax, ecx
ret
mov r9d, r10d
lea r10d, [r9 + 1]
cmp word [rcx + r10*2], 0
mov rax, r10
jne 0x61cc231b
test eax, eax
je 0x61cc2360
add rcx, 2
mov r10d, dword [rdx + 0x128]
xor eax, eax
lea rdx, [rcx + r9*2]
jmp 0x61cc2353
movzx r8d, word [rcx]
add rcx, 2
imul eax, r10d
add eax, r8d
cmp rcx, rdx
jne 0x61cc234b
ret
xor eax, eax
ret
mov edx, r10d
lea r10d, [rdx + 1]
movsx cx, byte [rsi + r10]
push rdx
add dword [rsi + 0x42], esp
movsx ecx, byte [rsi + rdx]
mov r8, r10
test cl, cl
jne 0x61cc23bb
test r8d, r8d
je 0x61cc2489
lea r8, [rax + r10*2]
add rdx, rsi
jmp 0x61cc23f3
nop word cs:[rax + rax]
movsx cx, byte [rdx]
sub rdx, 1
mov word [r8], cx
sub r8, 2
cmp rsi, rdx
jne 0x61cc23eb
movsx dx, byte [rsi]
test dx, dx
mov word [rax], dx
je 0x61cc2480
xor r8d, r8d
jmp 0x61cc241e
mov r8d, r9d
lea r9d, [r8 + 1]
cmp word [rax + r9*2], 0
mov rcx, r9
jne 0x61cc241b
test ecx, ecx
je 0x61cc2480
lea rcx, [rax + 2]
mov r9d, dword [rbx + 0x128]
xor eax, eax
lea r8, [rcx + r8*2]
jmp 0x61cc2452
movzx edx, word [rcx]
add rcx, 2
add ecx, 2
imul eax, r9d
movzx edx, dx
add eax, edx
cmp r8, rcx
jne 0x61cc244b
add rsp, 0x28
pop rbx
pop rsi
ret
invalid
xor eax, eax
add rsp, 0x28
pop rbx
pop rsi
ret
movsx dx, r9b
mov word [rax], dx
jmp 0x61cc240c
adc cl, ch
jbe 0x61cc2493
invalid
invalid
mov ebx, dword [r12 + rdi*4]
mov rax, rbp
add rbx, rcx
nop word [rax + rax]
mov byte [rax], 0
add rax, 1
cmp rax, rsi
jne 0x61cc24eb
invalid
movsx r10w, byte [rbx]
test r10b, r10b
je 0x61cc25ab
xor eax, eax
jmp 0x61cc250e
mov eax, r15d
lea r15d, [rax + 1]
movsx r9w, byte [rbx + r15]
mov r11, r15
test r9b, r9b
jne 0x61cc250b
test r11d, r11d
je 0x61cc2545
lea r11, [rbp + r15*2]
add rax, rbx
jmp 0x61cc2538
movsx r9w, byte [rax]
sub rax, 1
mov word [r11], r9w
sub r11, 2
cmp rbx, rax
jne 0x61cc252f
mov word [rsp], r10w
xor r11d, r11d
jmp 0x61cc2552
mov r11d, r9d
lea r9d, [r11 + 1]
cmp word [rsp + r9*2], 0
mov rax, r9
mov eax, ecx
jne 0x61cc254f
test eax, eax
je 0x61cc25e3
lea r9, [rbp + 2]
mov ebx, dword [r8 + 0x128]
mov ebx, dword [rax + 0x128]
xor eax, eax
lea r11, [r9 + r11*2]
jmp 0x61cc2583
movzx r10d, word [r9]
add r9, 2
imul eax, ebx
movzx r10d, r10w
add eax, r10d
cmp r11, r9
jne 0x61cc257b
lea r9, [rdi + 1]
cmp edx, eax
je 0x61cc25bb
mov rdi, r9
jmp 0x61cc24db
lea r9, [rdi + 1]
xor eax, eax
mov word [rsp], ax
xor eax, eax
cmp edx, eax
jne 0x61cc259a
lea rax, [rcx + rdi*2]
movzx eax, word [rax + r14]
lea rax, [rcx + rax*4]
mov eax, dword [rax + r13]
add rax, rcx
add rsp, 0x218
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop rbp
pop r14
pop r15
ret
xor eax, eax
jmp 0x61cc2592
nop word cs:[rax + rax]
movzx edx, word [rcx]
test dx, dx
je 0x61cc2b7f
add rcx, 2
xor eax, eax
nop
lea r9d, [rdx - 0x41]
lea r8d, [rdx + 0x20]
cmp r9w, 0x1a
cmovb edx, r8d
add rcx, 2
movzx edx, dx
add eax, edx
movzx edx, word [rcx - 2]
test dx, dx
jne 0x61cc2b5b
ret
xor eax, eax
ret