Function at 0x49aa00
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov r13d, r8d
mov dword [rsp + 0x88], edx
mov rdi, rcx
mov r15, r9
mov dword [rsp + 0x90], r8d
and r13d, 0x40
test edx, edx
jle 0x49ac00
movsxd rax, edx
mov edx, r8d
movzx eax, byte [rcx + rax - 1]
and edx, 0x200
cmp al, 0xa
je 0x49abc0
test edx, edx
jne 0x49ad80
test r13d, r13d
je 0x49aea3
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x2c], 0
sub eax, 1
mov r8, qword [str._________AA__A__________________]
cdqe
mov edx, 0xffffffff
xor r13d, r13d
jmp 0x49aaa2
sub rax, 1
mov r13d, 0x40
test eax, eax
js 0x49ae90
movzx ecx, byte [rdi + rax]
mov ebp, edx
mov edx, eax
test byte [r8 + rcx], 1
jne 0x49aa90
cmp ebp, 0xffffffff
cmove ebp, dword [rsp + 0x88]
test ebp, ebp
je 0x49aee0
movzx r14d, byte [rsp + 0x90]
mov eax, dword [rsp + 0x90]
xor ebx, ebx
xor r8d, r8d
shr r14b, 7
and eax, 0x800
mov dword [rsp + 0x20], eax
mov esi, r14d
jmp 0x49ab60
or r13d, 0x800
test r15, r15
je 0x49ab4c
sub edx, r8d
movsxd rcx, r8d
mov r9, r15
mov r8d, 1
movsxd rdx, edx
add rcx, rdi
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xb0]
mov rdx, r15
call sub.msvcrt.dll_fputs
mov edx, 1
mov rcx, r14
mov r9, r15
mov r8d, 1
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call sub.msvcrt.dll_fputs
lea r8d, [r12 + 1]
add rbx, 1
mov edx, r8d
cmp edx, ebp
jge 0x49ae10
movzx eax, byte [rdi + rbx]
mov r12d, ebx
mov edx, ebx
lea r14, [rdi + rbx]
cmp al, 0x20
je 0x49adf8
cmp al, 9
jne 0x49ae10
test sil, sil
je 0x49ab8b
cmp r8d, ebx
jl 0x49ae20
mov ecx, dword [rsp + 0x20]
test ecx, ecx
jne 0x49aaf0
test r15, r15
je 0x49ab4c
sub edx, r8d
movsxd rcx, r8d
mov r9, r15
mov r8d, 1
add edx, 1
add rcx, rdi
movsxd rdx, edx
call sub.msvcrt.dll_fwrite
jmp 0x49ab4c
sub dword [rsp + 0x88], 1
test edx, edx
je 0x49ade0
mov r9d, dword [rsp + 0x88]
test r9d, r9d
je 0x49aebf
movsxd rax, dword [rsp + 0x88]
mov dword [rsp + 0x2c], 1
movzx eax, byte [rcx + rax - 1]
jmp 0x49ad88
mov dword [rsp + 0x2c], 0
xor esi, esi
xor r8d, r8d
xor r13d, r13d
mov dword [rsp + 0x28], 0
mov ebp, dword [rsp + 0x88]
test dword [rsp + 0x90], 0x100
je 0x49ac98
mov eax, dword [rsp + 0x90]
mov ebx, esi
sub ebx, r8d
and eax, 0x3f
cmp ebx, eax
jb 0x49ac98
mov dword [rsp + 0x20], r8d
or r13d, 0x100
test r15, r15
je 0x49ad50
mov rcx, qword [rsp + 0xb0]
mov rdx, r15
call sub.msvcrt.dll_fputs
movsxd rcx, dword [rsp + 0x20]
movsxd rdx, ebx
mov r9, r15
mov r8d, 1
add rcx, rdi
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call sub.msvcrt.dll_fputs
mov r8d, esi
jmp 0x49aca1
test r15, r15
je 0x49ad50
mov ebx, ebp
mov dword [rsp + 0x20], r8d
sub ebx, r8d
test ebx, ebx
jle 0x49ace8
mov rcx, qword [rsp + 0xa0]
mov rdx, r15
call sub.msvcrt.dll_fputs
movsxd rcx, dword [rsp + 0x20]
movsxd rdx, ebx
mov r9, r15
mov r8d, 1
add rcx, rdi
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call sub.msvcrt.dll_fputs
cmp ebp, dword [rsp + 0x88]
je 0x49ad33
mov rcx, qword [rsp + 0xb0]
mov rdx, r15
call sub.msvcrt.dll_fputs
mov r14d, dword [rsp + 0x88]
movsxd rcx, ebp
mov r9, r15
add rcx, rdi
mov r8d, 1
sub r14d, ebp
movsxd rdx, r14d
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call sub.msvcrt.dll_fputs
mov edx, dword [rsp + 0x28]
test edx, edx
jne 0x49ad68
mov eax, dword [rsp + 0x2c]
test eax, eax
je 0x49ad50
mov rdx, r15
mov ecx, 0xa
call sub.msvcrt.dll_fputc
mov eax, r13d
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, r15
mov ecx, 0xd
call sub.msvcrt.dll_fputc
jmp 0x49ad3b
mov dword [rsp + 0x2c], 0
mov dword [rsp + 0x28], 0
cmp al, 0xd
jne 0x49ada4
sub dword [rsp + 0x88], 1
mov dword [rsp + 0x28], 1
test r13d, r13d
je 0x49ae97
mov eax, dword [rsp + 0x88]
mov r8d, dword [rsp + 0x88]
sub eax, 1
test r8d, r8d
jne 0x49aa78
mov ebp, dword [rsp + 0x88]
xor r13d, r13d
jmp 0x49aabc
mov dword [rsp + 0x2c], 1
mov dword [rsp + 0x28], 0
jmp 0x49ada4
lea edx, [rbx + 1]
add rbx, 1
cmp edx, ebp
jl 0x49ab60
nop word [rax + rax]
mov esi, edx
jmp 0x49ac1f
mov dword [rsp + 0x24], r8d
or r13b, 0x80
test r15, r15
je 0x49ab4c
mov rcx, qword [rsp + 0xb0]
mov rdx, r15
call sub.msvcrt.dll_fputs
movsxd rcx, dword [rsp + 0x24]
mov edx, ebx
mov r9, r15
mov r8d, 1
sub edx, ecx
add rcx, rdi
movsxd rdx, edx
call sub.msvcrt.dll_fwrite
mov rcx, qword [rsp + 0xa8]
mov rdx, r15
call sub.msvcrt.dll_fputs
mov r9, r15
mov edx, 1
mov rcx, r14
mov r8d, 1
call sub.msvcrt.dll_fwrite
jmp 0x49ab4c
mov ebp, edx
jmp 0x49aab1
mov ebp, dword [rsp + 0x88]
jmp 0x49aabc
mov dword [rsp + 0x2c], 0
mov ebp, dword [rsp + 0x88]
mov dword [rsp + 0x28], 0
jmp 0x49aac4
test r13d, r13d
jne 0x49af10
mov dword [rsp + 0x28], 0
xor ebp, ebp
xor esi, esi
xor r8d, r8d
mov dword [rsp + 0x2c], 1
jmp 0x49ac1f
mov esi, dword [rsp + 0x28]
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x88], esi
mov esi, dword [rsp + 0x88]
xor ebp, ebp
mov dword [rsp + 0x88], eax
xor r8d, r8d
mov dword [rsp + 0x28], esi
xor esi, esi
jmp 0x49ac1f
mov dword [rsp + 0x2c], 1
xor eax, eax
xor r13d, r13d
jmp 0x49aef2