Function at 0x437d20
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
xor ebp, ebp
lea r14, [0x00580cc0]
mov rdi, rdx
mov rbx, r8
mov r12, r9
mov r15, rcx
mov qword [rsp + 0x80], rcx
nop dword [rax]
mov r11, rdi
test rdi, rdi
js 0x437f0d
je 0x437f60
mov edx, dword [0x005729d0]
xor esi, esi
jmp 0x437d7d
add rsi, 1
cmp rsi, rdi
je 0x437f60
movzx eax, byte [r15 + rsi]
movsx eax, byte [r14 + rax]
add eax, edx
test eax, eax
jle 0x437d70
cmp rsi, rdi
je 0x437f60
lea r13, [r15 + rsi]
mov edx, dword [rsp + 0xa0]
test edx, edx
jne 0x437e03
cmp r15, qword [rsp + 0x80]
jne 0x437e03
test rbx, rbx
je 0x437ded
mov rdx, qword [rbx]
test rdx, rdx
je 0x438210
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x438210
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], 0x22
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x437dff
mov rdx, r12
mov ecx, 0x22
call sub.msvcrt.dll_fputc
add rbp, 1
test rbx, rbx
je 0x438140
mov r8, rsi
mov rdx, r15
mov rcx, rbx
add rbp, rsi
call fcn.00472fb0
test r12, r12
je 0x437e36
mov r9, r12
mov r8d, 1
mov rdx, rsi
mov rcx, r15
call sub.msvcrt.dll_fwrite
mov rdx, qword [rbx]
test rdx, rdx
je 0x438168
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x438168
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], 0x5c
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x437e81
mov rdx, r12
mov ecx, 0x5c
call sub.msvcrt.dll_fputc
movzx r8d, byte [r13]
lea rax, [rdi - 1]
lea r15, [r13 + 1]
sub rax, rsi
test rdi, rdi
cmovns rdi, rax
movzx eax, r8b
mov r13d, r8d
movzx esi, byte [r14 + rax]
cmp sil, 0x1f
jle 0x438028
test rbx, rbx
je 0x437eec
mov rdx, qword [rbx]
test rdx, rdx
je 0x4381f0
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x4381f0
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], sil
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x437efd
movsx ecx, sil
mov rdx, r12
call sub.msvcrt.dll_fputc
add rbp, 2
mov r11, rdi
test rdi, rdi
jns 0x437d5c
movzx eax, byte [r15]
mov ecx, dword [0x005729d0]
mov rdx, rax
movsx eax, byte [r14 + rax]
add eax, ecx
test eax, eax
jg 0x438270
xor esi, esi
nop dword [rax + rax]
add rsi, 1
movzx eax, byte [r15 + rsi]
lea r13, [r15 + rsi]
mov rdx, rax
movsx eax, byte [r14 + rax]
add eax, ecx
test eax, eax
jle 0x437f30
cmp rsi, rdi
je 0x437f60
test dl, dl
jne 0x437d9a
mov r11, rsi
nop dword [rax + rax]
test rbx, rbx
je 0x437f7d
mov r8, r11
mov rdx, r15
mov rcx, rbx
mov qword [rsp + 0x28], r11
call fcn.00472fb0
mov r11, qword [rsp + 0x28]
test r12, r12
je 0x437fa0
mov rdx, r11
mov r9, r12
mov r8d, 1
mov rcx, r15
mov qword [rsp + 0x28], r11
call sub.msvcrt.dll_fwrite
mov r11, qword [rsp + 0x28]
lea r13, [r11 + rbp]
cmp r15, qword [rsp + 0x80]
je 0x438290
mov eax, dword [rsp + 0xa0]
test eax, eax
jne 0x438011
test rbx, rbx
je 0x437ffb
mov rdx, qword [rbx]
test rdx, rdx
jne 0x43827a
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], 0x22
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x43800d
mov rdx, r12
mov ecx, 0x22
call sub.msvcrt.dll_fputc
add r13, 1
mov rax, r13
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test rbx, rbx
je 0x438180
mov esi, r8d
mov rdx, qword [rbx]
sar esi, 6
add esi, 0x30
test rdx, rdx
je 0x4381c8
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x4381c8
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], sil
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x43808c
mov rdx, r12
mov ecx, esi
mov dword [rsp + 0x28], r8d
call sub.msvcrt.dll_fputc
mov r8d, dword [rsp + 0x28]
sar r8d, 3
mov rdx, qword [rbx]
and r8d, 7
lea esi, [r8 + 0x30]
test rdx, rdx
je 0x438250
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x438250
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], sil
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x4380e0
mov rdx, r12
mov ecx, esi
call sub.msvcrt.dll_fputc
mov rdx, qword [rbx]
and r13d, 7
add r13d, 0x30
test rdx, rdx
je 0x438230
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
je 0x438230
mov rdx, qword [rbx + 0x10]
lea rcx, [rax + 1]
mov qword [rbx + 8], rcx
mov byte [rdx + rax], r13b
mov rdx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov byte [rdx + rax], 0
test r12, r12
je 0x438131
mov rdx, r12
mov ecx, r13d
call sub.msvcrt.dll_fputc
add rbp, 4
jmp 0x437d50
add rbp, rsi
test r12, r12
je 0x437e81
mov r9, r12
mov r8d, 1
mov rdx, rsi
mov rcx, r15
call sub.msvcrt.dll_fwrite
jmp 0x437e74
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
jmp 0x437e53
test r12, r12
je 0x438131
mov ecx, r8d
mov rdx, r12
mov dword [rsp + 0x28], r8d
and r13d, 7
sar ecx, 6
add r13d, 0x30
add ecx, 0x30
call sub.msvcrt.dll_fputc
mov r8d, dword [rsp + 0x28]
mov rdx, r12
sar r8d, 3
and r8d, 7
lea ecx, [r8 + 0x30]
call sub.msvcrt.dll_fputc
jmp 0x438126
mov edx, 1
mov rcx, rbx
mov dword [rsp + 0x28], r8d
call fcn.004727c0
mov rax, qword [rbx + 8]
mov r8d, dword [rsp + 0x28]
jmp 0x438057
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
jmp 0x437ed0
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
jmp 0x437dd1
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
jmp 0x438105
mov edx, 1
mov rcx, rbx
call fcn.004727c0
mov rax, qword [rbx + 8]
jmp 0x4380b5
mov r13, r15
xor esi, esi
jmp 0x437f50
mov rax, qword [rbx + 8]
sub rdx, rax
cmp rdx, 1
jne 0x437fdf
jmp 0x437fce
xor r13d, r13d
jmp 0x438011