Function at 0x408e00
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
cmp qword [rdx], 0
mov rbp, rcx
mov rsi, rdx
mov rbx, r8
mov r12d, r9d
je 0x409305
lea r13, [0x004106f5]
mov edx, 1
xor edi, edi
jmp 0x408e69
test r12d, r12d
mov rcx, qword [rax + 0x18]
jne 0x408eac
mov r8, rcx
mov rdx, r13
mov rcx, rbp
call sub.msvcrt.dll_fprintf
xor edx, edx
mov rax, qword [rsi]
add rdi, 1
cmp rdi, rax
jae 0x408f04
mov rax, qword [rbx]
lea r10, [rdi + rdi*2]
mov r14, r10
shl r14, 5
add rax, r14
cmp dword [rax], 3
jne 0x408e59
test edx, edx
je 0x408e40
lea rcx, str.__Interface_forward_declarations.____n
mov r9, rbp
mov r8d, 0x27
mov edx, 1
call sub.msvcrt.dll_fwrite
mov rax, qword [rbx]
add rax, r14
test r12d, r12d
mov rcx, qword [rax + 0x18]
je 0x408e49
lea rdx, str._FORWARDER_DEFINED
call fcn.00408ba0
test rax, rax
mov r15, rax
je 0x409583
cmp byte [rax], 0
jne 0x409320
mov rax, qword [rbx]
mov rdx, r13
mov rcx, rbp
mov r8, qword [rax + r14 + 0x18]
call sub.msvcrt.dll_fprintf
cmp byte [r15], 0
jne 0x409340
mov rcx, r15
add rdi, 1
call sub.msvcrt.dll_free
mov rax, qword [rsi]
xor edx, edx
cmp rdi, rax
jb 0x408e69
test edx, edx
je 0x409500
test rax, rax
je 0x409305
lea r14, str.typedef__s__s__n
mov edx, 1
xor edi, edi
jmp 0x408f65
test r12d, r12d
mov r13, qword [rax + 0x18]
jne 0x408fa8
mov edx, 0x20
mov rcx, r13
call sub.msvcrt.dll_strchr
lea r9, [rax + 1]
test rax, rax
je 0x4094d0
mov rdx, r14
mov r8, r13
mov rcx, rbp
call sub.msvcrt.dll_fprintf
xor edx, edx
add rdi, 1
cmp rdi, qword [rsi]
jae 0x40901e
mov rax, qword [rbx]
lea r10, [rdi + rdi*2]
shl r10, 5
mov r15, r10
add rax, r10
cmp dword [rax], 1
jne 0x408f58
test edx, edx
je 0x408f25
mov r9, rbp
mov r8d, 0x27
mov edx, 1
lea rcx, str.__Structure_forward_declarations.____n
call sub.msvcrt.dll_fwrite
mov rax, qword [rbx]
add rax, r15
test r12d, r12d
mov r13, qword [rax + 0x18]
je 0x408f2e
lea rdx, str._FORWARDER_DEFINED
mov rcx, r13
call fcn.00408ba0
test rax, rax
mov r13, rax
je 0x409569
cmp byte [rax], 0
jne 0x409360
mov rax, qword [rbx]
mov edx, 0x20
mov r15, qword [rax + r15 + 0x18]
mov rcx, r15
call sub.msvcrt.dll_strchr
test rax, rax
je 0x409480
lea r9, [rax + 1]
mov r8, r15
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
cmp byte [r13], 0
jne 0x409380
mov rcx, r13
add rdi, 1
call sub.msvcrt.dll_free
xor edx, edx
cmp rdi, qword [rsi]
jb 0x408f65
test edx, edx
je 0x409520
cmp qword [rsi], 0
je 0x409305
lea r14, str.typedef__s__s__n
mov edx, 1
xor edi, edi
jmp 0x409083
test r12d, r12d
mov r13, qword [rax + 0x18]
jne 0x4090c6
mov edx, 0x20
mov rcx, r13
call sub.msvcrt.dll_strchr
lea r9, [rax + 1]
test rax, rax
je 0x4094c0
mov rdx, r14
mov r8, r13
mov rcx, rbp
call sub.msvcrt.dll_fprintf
xor edx, edx
mov rax, qword [rsi]
add rdi, 1
cmp rdi, rax
jae 0x40913f
mov rax, qword [rbx]
lea r10, [rdi + rdi*2]
shl r10, 5
mov r15, r10
add rax, r10
cmp dword [rax], 7
jne 0x409073
test edx, edx
je 0x409040
mov r9, rbp
mov r8d, 0x2a
mov edx, 1
lea rcx, str.__Union_record_forward_declarations.____n
call sub.msvcrt.dll_fwrite
mov rax, qword [rbx]
add rax, r15
test r12d, r12d
mov r13, qword [rax + 0x18]
je 0x409049
lea rdx, str._FORWARDER_DEFINED
mov rcx, r13
call fcn.00408ba0
test rax, rax
mov r13, rax
je 0x40955c
cmp byte [rax], 0
jne 0x4093a0
mov rax, qword [rbx]
mov edx, 0x20
mov r15, qword [rax + r15 + 0x18]
mov rcx, r15
call sub.msvcrt.dll_strchr
test rax, rax
je 0x409460
lea r9, [rax + 1]
mov r8, r15
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
cmp byte [r13], 0
jne 0x4093c0
mov rcx, r13
add rdi, 1
call sub.msvcrt.dll_free
mov rax, qword [rsi]
xor edx, edx
cmp rdi, rax
jb 0x409083
test edx, edx
je 0x409540
test rax, rax
je 0x409305
lea r14, [0x004106f5]
mov edx, 1
xor edi, edi
jmp 0x409189
test r12d, r12d
mov rcx, qword [rax + 0x18]
jne 0x4091c9
mov r8, rcx
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
xor edx, edx
mov rax, qword [rsi]
add rdi, 1
cmp rdi, rax
jae 0x409221
mov rax, qword [rbx]
lea r13, [rdi + rdi*2]
shl r13, 5
add rax, r13
cmp dword [rax], 4
jne 0x409179
test edx, edx
je 0x409160
lea rcx, str.__Dispatch_record_forward_declarations.____n
mov r9, rbp
mov r8d, 0x2d
mov edx, 1
call sub.msvcrt.dll_fwrite
mov rax, qword [rbx]
add rax, r13
test r12d, r12d
mov rcx, qword [rax + 0x18]
je 0x409169
lea rdx, str._FORWARDER_DEFINED
call fcn.00408ba0
test rax, rax
mov r15, rax
je 0x409576
cmp byte [rax], 0
jne 0x4093e0
mov rax, qword [rbx]
mov rdx, r14
mov rcx, rbp
mov r8, qword [rax + r13 + 0x18]
call sub.msvcrt.dll_fprintf
cmp byte [r15], 0
jne 0x409400
mov rcx, r15
add rdi, 1
call sub.msvcrt.dll_free
mov rax, qword [rsi]
xor edx, edx
cmp rdi, rax
jb 0x409189
test edx, edx
je 0x4094e0
test rax, rax
je 0x409305
lea r14, [0x004106f5]
mov edx, 1
xor edi, edi
jmp 0x409268
test r12d, r12d
mov rcx, qword [rax + 0x18]
jne 0x4092a8
mov r8, rcx
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
xor edx, edx
add rdi, 1
cmp rdi, qword [rsi]
jae 0x4092fd
mov rax, qword [rbx]
lea r13, [rdi + rdi*2]
shl r13, 5
add rax, r13
cmp dword [rax], 5
jne 0x40925b
test edx, edx
je 0x409242
lea rcx, str.__Coclass_record_forward_declarations.____n
mov r9, rbp
mov r8d, 0x2c
mov edx, 1
call sub.msvcrt.dll_fwrite
mov rax, qword [rbx]
add rax, r13
test r12d, r12d
mov rcx, qword [rax + 0x18]
je 0x40924b
lea rdx, str._FORWARDER_DEFINED
call fcn.00408ba0
test rax, rax
mov r15, rax
je 0x409590
cmp byte [rax], 0
jne 0x409420
mov rax, qword [rbx]
mov rdx, r14
mov rcx, rbp
mov r8, qword [rax + r13 + 0x18]
call sub.msvcrt.dll_fprintf
cmp byte [r15], 0
jne 0x409440
mov rcx, r15
add rdi, 1
call sub.msvcrt.dll_free
xor edx, edx
cmp rdi, qword [rsi]
jb 0x409268
test edx, edx
je 0x4094a0
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9, rax
mov r8, rax
mov rcx, rbp
lea rdx, str.ifndef__s_ndefine__s_n
call sub.msvcrt.dll_fprintf
jmp 0x408ecd
lea rdx, str.endif____s___n_n
mov r8, r15
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x408eea
mov r9, rax
mov r8, rax
mov rcx, rbp
lea rdx, str.ifndef__s_ndefine__s_n
call sub.msvcrt.dll_fprintf
jmp 0x408fcc
lea rdx, str.endif____s___n_n
mov r8, r13
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x409007
mov r9, rax
mov r8, rax
mov rcx, rbp
lea rdx, str.ifndef__s_ndefine__s_n
call sub.msvcrt.dll_fprintf
jmp 0x4090ea
lea rdx, str.endif____s___n_n
mov r8, r13
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x409125
mov r9, rax
mov r8, rax
mov rcx, rbp
lea rdx, str.ifndef__s_ndefine__s_n
call sub.msvcrt.dll_fprintf
jmp 0x4091ea
lea rdx, str.endif____s___n_n
mov r8, r15
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x409207
mov r9, rax
mov r8, rax
mov rcx, rbp
lea rdx, str.ifndef__s_ndefine__s_n
call sub.msvcrt.dll_fprintf
jmp 0x4092c9
lea rdx, str.endif____s___n_n
mov r8, r15
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x4092e6
mov r9, r15
mov r8, r15
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x40911a
mov r9, r15
mov r8, r15
mov rdx, r14
mov rcx, rbp
call sub.msvcrt.dll_fprintf
jmp 0x408ffc
mov rdx, rbp
mov ecx, 0xa
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sub.msvcrt.dll_fputc
mov r9, r13
jmp 0x409063
mov r9, r13
jmp 0x408f48
mov rdx, rbp
mov ecx, 0xa
call sub.msvcrt.dll_fputc
cmp qword [rsi], 0
jne 0x409232
jmp 0x409305
mov rdx, rbp
mov ecx, 0xa
call sub.msvcrt.dll_fputc
cmp qword [rsi], 0
jne 0x408f15
jmp 0x409305
mov rdx, rbp
mov ecx, 0xa
call sub.msvcrt.dll_fputc
cmp qword [rsi], 0
jne 0x409030
jmp 0x409305
mov rdx, rbp
mov ecx, 0xa
call sub.msvcrt.dll_fputc
cmp qword [rsi], 0
jne 0x409150
jmp 0x409305
mov rax, qword [rbx]
mov r13, qword [rax + r15 + 0x18]
jmp 0x409049
mov rax, qword [rbx]
mov r13, qword [rax + r15 + 0x18]
jmp 0x408f2e
mov rax, qword [rbx]
mov rcx, qword [rax + r13 + 0x18]
jmp 0x409169
mov rax, qword [rbx]
mov rcx, qword [rax + r14 + 0x18]
jmp 0x408e49
mov rax, qword [rbx]
mov rcx, qword [rax + r13 + 0x18]
jmp 0x40924b