Function at 0x40d640
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov edx, 0xfb1
xor ebx, ebx
mov r12, rcx
lea rcx, [0x00412020]
call fcn.004079c0
movdqa xmm0, xmmword [0x00414f30]
lea rbp, [rax + 0x10]
mov rsi, rax
movups xmmword [rax], xmm0
nop dword [rax]
nop word cs:[rax + rax]
mov r9, r12
mov r8d, 0xfa0
mov edx, 1
mov rcx, rbp
call sub.msvcrt.dll_fread
cmp rax, 0xfa0
mov rdi, rax
je 0x40ca20
mov rcx, r12
call sub.msvcrt.dll_ferror
test eax, eax
jne 0x40ca64
mov rcx, rsi
mov rdx, rdi
call fcn.00407e40
test rax, rax
mov rsi, rax
je 0x40ca50
mov rdx, qword [rax]
mov rcx, rbx
call fcn.00407770
lea rdx, [rsi + 0x10]
mov rbx, rax
mov rax, qword [rax]
lea rcx, [rbx + rax + 0x10]
mov rax, qword [rsi]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
add qword [rbx], rax
mov rax, rbx
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rdx, qword [rsi]
mov rcx, rbx
call fcn.00407770
mov r8, qword [rsi]
mov rdx, rbp
mov rbx, rax
mov rax, qword [rax]
add r8, 1
lea rcx, [rbx + rax + 0x10]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
add qword [rbx], rax
jmp 0x40c9a0
xor edx, edx
mov rcx, rbx
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
jmp fcn.00407770
mov rcx, r12
call fcn.0040c6f0
nop
nop dword [rax]
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1a8
lea rcx, [0x004195b0]
mov edx, 0x400
lea rdi, [0x00419570]
call fcn.004079c0
mov edx, 0x248a382a
mov qword [rax], rdi
lea rcx, [0x00414c60]
mov qword [rsp + 0x38], rax
call fcn.00407560
mov edx, 0x39ccc2ea
mov rcx, rax
call fcn.00407bd0
xor r8d, r8d
xor edx, edx
mov ecx, 0x40000
call qword [0x00419560]
mov r8d, 0x1000
mov edx, 8
mov rcx, rax
call qword [0x00419558]
mov edx, 0x2f966a0e
mov dword [rsp + 0x7c], 0
lea rsi, [rax + 0x2a]
mov rbx, rax
mov qword [0x00419550], rax
lea rcx, [0x00414c20]
mov qword [0x00419548], rsi
lea rdi, [rax + 0x15]
call fcn.00407560
mov edx, 0x6756d64e
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40cb38
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rbx
call fcn.0040c0f0
mov edx, 0x77c8f40a
lea rcx, [0x00414be0]
call fcn.00407560
mov edx, 0x7bb35cca
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40cb76
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rdi
call fcn.0040c0f0
mov edx, 0x1b582bae
lea rcx, [0x00414ba0]
call fcn.00407560
mov edx, 0x55b11ee
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40cbb4
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rsi
call fcn.0040c0f0
lea rsi, [rbx + 0x93]
mov edx, 0x39ccc2ea
lea rcx, [0x00414b70]
mov qword [0x00419540], rsi
call fcn.00407560
mov edx, 0x5c5d39aa
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40cc00
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rsi
call fcn.0040c0f0
lea rsi, [rbx + 0x3f]
mov edx, 0x6756d64e
lea rcx, [0x00414b40]
mov qword [0x00419538], rsi
call fcn.00407560
mov edx, 0x10c1c68e
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40cc49
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rsi
call fcn.0040c0f0
lea rcx, [0x00414b00]
mov edx, 0x6f0b918a
call fcn.00407bd0
lea rsi, [rbx + 0x111]
lea rdi, [rbx + 0x126]
test rax, rax
lea rcx, section..rdata
je 0x40cc88
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rsi
call fcn.0040c0f0
lea rcx, [0x00414ac0]
mov edx, 0x59361c2e
call fcn.00407bd0
lea rcx, section..rdata
test rax, rax
je 0x40ccb9
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmovne rcx, rdx
mov rdx, rdi
call fcn.0040c0f0
lea r9, [rsp + 0x7c]
mov edx, 0x15
mov rcx, rbx
mov r8d, 0x20
call qword [0x00419530]
mov edx, 0x1e2e5c6a
lea rcx, [0x004149c0]
call fcn.00407bd0
mov rax, qword [0x00419508]
mov edx, 0x10
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x88], 0
mov rcx, qword [rax + 8]
test rcx, rcx
jne 0x40d2a0
add rdx, qword [rax]
seto al
movzx eax, al
mov qword [rsp + 0x40], rax
jo 0x40d62d
lea rcx, [0x004194f0]
call fcn.004079c0
movdqa xmm0, xmmword [0x00414f40]
mov ecx, 0x19
mov rbx, rax
mov rsi, qword [rax + 0x10]
mov qword [rsp + 0x50], rax
movups xmmword [rax], xmm0
call fcn.00407440
mov rdx, qword [0x004149b0]
movdqa xmm0, xmmword [0x00414f10]
test rsi, rsi
movups xmmword [rax], xmm0
mov qword [rax + 0x10], rdx
movzx edx, byte [0x004149b8]
mov byte [rax + 0x18], dl
mov qword [rbx + 0x10], rax
je 0x40cda0
mov rax, qword [rsi - 0x10]
lea rdx, [rsi - 0x10]
sub rax, 8
cmp rax, 7
mov qword [rsi - 0x10], rax
jbe 0x40d2e0
mov rax, qword [rbx]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x90]
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
cmp rax, rsi
jge 0x40cef8
mov rsi, qword [rsp + 0x50]
xor edx, edx
mov rcx, qword [rsp + 0x60]
lea rax, [rsi + rax*8 + 0x10]
mov qword [rsp + 0x68], rax
mov rax, qword [0x004194e8]
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x58]
mov qword [0x004194e8], rax
call sub.msvcrt.dll__setjmp
movsxd rbx, eax
test rbx, rbx
mov qword [rsp + 0x98], rbx
jne 0x40d220
mov rax, qword [rsp + 0x68]
mov rsi, qword [rax]
test rsi, rsi
je 0x40d300
cmp qword [rsi], 0
je 0x40d300
lea rdi, [rsi + 0x10]
mov rcx, rdi
call sub.msvcrt.dll_strlen
mov rdx, rax
mov rcx, rdi
call fcn.00407f60
mov edx, 3
lea rcx, [0x0041322b]
mov rdi, rax
call fcn.00407f60
mov rcx, rdi
mov rdx, rax
call qword [sym.imp.msvcrt.dll__wfopen]
test rax, rax
je 0x40d310
mov qword [rsp + 0x80], rax
mov rsi, qword [rsp + 0x80]
xor ecx, ecx
call qword [fcn.0040fb60]
cmp rsi, rax
je 0x40ced4
mov rcx, rsi
call fcn.0040f670
xor edx, edx
mov r8d, 2
mov rcx, rsi
mov rdi, rax
call fcn.0040f8c0
mov rcx, rsi
call fcn.0040f670
xor r8d, r8d
mov rdx, rdi
mov rcx, rsi
mov rbp, rax
call fcn.0040f8c0
test rbp, rbp
jg 0x40d4e0
mov rcx, rsi
call fcn.0040c960
mov rdi, rax
mov rax, qword [0x004194e8]
mov qword [rsp + 0x88], rdi
mov rax, qword [rax]
mov qword [0x004194e8], rax
mov rdi, qword [rsp + 0x88]
test rdi, rdi
je 0x40d430
mov rsi, qword [rdi]
lea rcx, [0x00419420]
lea rbp, [rdi + 0x10]
mov rdx, rsi
call fcn.00409f30
test rsi, rsi
mov rbx, rax
mov rax, qword [rsp + 0x38]
lea r12, [rax + 0x30]
jle 0x40d44a
lea rax, [rbx + 0x20]
cmp rbp, rax
setae dl
cmp rbp, rbx
setbe al
or dl, al
je 0x40d580
lea rax, [rsi - 1]
cmp rax, 0xe
jbe 0x40d580
mov rax, rsi
and rax, 0xfffffffffffffff0
lea rdx, [rax + 0x10]
mov eax, 0x10
nop word [rax + rax]
movdqu xmm1, xmmword [rdi + rax]
movups xmmword [rbx + rax], xmm1
add rax, 0x10
cmp rdx, rax
jne 0x40cf70
mov rax, rsi
and rax, 0xfffffffffffffff0
cmp rax, rsi
je 0x40d0c0
movzx edx, byte [rdi + rax + 0x10]
mov byte [rbx + rax + 0x10], dl
lea rdx, [rax + 1]
cmp rsi, rdx
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x11]
lea rdx, [rax + 2]
cmp rdx, rsi
mov byte [rbx + rax + 0x11], cl
jge 0x40d0c0
movzx ecx, byte [rbp + rax + 2]
lea rdx, [rax + 3]
cmp rsi, rdx
mov byte [rbx + rax + 0x12], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x13]
lea rdx, [rax + 4]
cmp rdx, rsi
mov byte [rbx + rax + 0x13], cl
jge 0x40d0c0
movzx ecx, byte [rbp + rax + 4]
lea rdx, [rax + 5]
cmp rsi, rdx
mov byte [rbx + rax + 0x14], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x15]
lea rdx, [rax + 6]
cmp rsi, rdx
mov byte [rbx + rax + 0x15], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x16]
lea rdx, [rax + 7]
cmp rsi, rdx
mov byte [rbx + rax + 0x16], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x17]
lea rdx, [rax + 8]
cmp rsi, rdx
mov byte [rbx + rax + 0x17], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x18]
lea rdx, [rax + 9]
cmp rdx, rsi
mov byte [rbx + rax + 0x18], cl
jge 0x40d0c0
movzx ecx, byte [rbp + rax + 9]
lea rdx, [rax + 0xa]
cmp rsi, rdx
mov byte [rbx + rax + 0x19], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x1a]
lea rdx, [rax + 0xb]
cmp rsi, rdx
mov byte [rbx + rax + 0x1a], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x1b]
lea rdx, [rax + 0xc]
cmp rsi, rdx
mov byte [rbx + rax + 0x1b], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x1c]
lea rdx, [rax + 0xd]
cmp rsi, rdx
mov byte [rbx + rax + 0x1c], cl
jle 0x40d0c0
movzx ecx, byte [rdi + rax + 0x1d]
mov byte [rbx + rax + 0x1d], cl
add rax, 0xe
cmp rsi, rax
jle 0x40d0c0
movzx edx, byte [rdi + rax + 0x10]
mov byte [rbx + rax + 0x10], dl
nop word [rax + rax]
add qword [rbx - 0x10], 8
mov rax, qword [r12]
test rax, rax
je 0x40d0e8
mov rsi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rsi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40d2b0
mov rax, qword [rsp + 0x38]
mov qword [r12], rbx
xor edx, edx
mov rax, qword [rax + 0x30]
test rax, rax
je 0x40d0ff
mov rdx, qword [rax]
lea rcx, [0x00419420]
call fcn.00409f30
mov edx, 0x6cfb7ace
lea rcx, [0x004147c0]
call fcn.00407bd0
mov rdi, qword [rsp + 0x38]
mov r8d, 0x3c8
xor edx, edx
lea rcx, [rdi + 0x38]
call sub.msvcrt.dll_memset
mov edx, 0x5de2524a
mov qword [rdi + 0x10], 0
lea rcx, [0x00414640]
mov qword [rdi + 0x18], 0
mov qword [rdi + 0x20], 0
mov qword [rdi + 0x28], 0
call fcn.00407bd0
mov edx, 0x15478a6e
lea rcx, [0x00414560]
call fcn.00407bd0
mov edx, 0x6d9eeb2a
lea rcx, [0x00414440]
call fcn.00407bd0
mov edx, 0x3b2c330e
lea rcx, [0x004142c0]
call fcn.00407bd0
mov edx, 0x34945f0a
lea rcx, [0x00414200]
call fcn.00407bd0
mov edx, 0x4f919cae
lea rcx, [0x00414020]
call fcn.00407bd0
mov edx, 0x7039a5ea
lea rcx, [0x00413ea0]
call fcn.00407bd0
mov edx, 0x14c02f4e
lea rcx, [0x00413e40]
call fcn.00407bd0
xor edx, edx
test rdi, rdi
mov rcx, qword [rdi + 0x30]
je 0x40d460
test rcx, rcx
je 0x40d1f1
mov rdx, qword [rcx]
mov r8, qword [rsp + 0x38]
add rcx, 0x10
call fcn.0040bb70
xor eax, eax
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
mov rax, qword [0x004194e8]
mov rax, qword [rax]
mov qword [rsp + 0x98], 0
mov qword [0x004194e8], rax
mov rax, qword [0x004194e0]
mov rbx, qword [rax + 0x28]
test rbx, rbx
je 0x40d262
add qword [rbx - 0x10], 8
mov rax, qword [0x004194e0]
test rax, rax
je 0x40d5b0
mov rdi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rdi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40d2d0
cmp qword [rsp + 0x98], 0
mov qword [0x004194e0], rbx
jne 0x40d480
add qword [rsp + 0x40], 1
jmp 0x40cdc2
lea rdx, [rcx + 0xf]
neg rcx
and rdx, rcx
jmp 0x40cd1c
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40d0e8
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40d278
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40cda0
lea rdi, section..rdata
xor edx, edx
jmp 0x40ce49
lea rcx, [0x004194a0]
call fcn.00407230
test rsi, rsi
mov rdi, rax
lea rax, [0x00419460]
mov qword [rdi], rax
lea rax, str.IOError
mov qword [rdi + 0x10], rax
je 0x40d5d0
mov rax, qword [rsi]
lea rbp, [rax + 0xd]
mov eax, 7
cmp rbp, 7
cmovl rbp, rax
lea rdx, [rbp + 0x11]
lea rcx, [0x00412020]
call fcn.004079c0
mov rdx, qword [0x00413e30]
test rsi, rsi
mov rbx, rax
mov qword [rax + 8], rbp
mov qword [rax], 0xd
mov qword [rax + 0x10], rdx
mov edx, dword [0x00413e38]
mov dword [rax + 0x18], edx
movzx edx, word [0x00413e3c]
mov word [rax + 0x1c], dx
je 0x40d3b1
lea rcx, [rax + 0x1d]
mov rax, qword [rsi]
lea rdx, [rsi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
add rax, 0xd
mov qword [rbx], rax
add qword [rbx - 0x10], 8
mov rax, qword [rdi + 0x18]
test rax, rax
je 0x40d3d9
mov rsi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rsi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40d4c0
mov rax, qword [rdi + 8]
mov qword [rdi + 0x18], rbx
test rax, rax
je 0x40d400
mov rbx, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rbx - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40d4a0
mov qword [rdi + 8], 0
lea r9, str.io.nim
mov rcx, rdi
mov qword [rsp + 0x20], 0x2f7
lea r8, str.open
lea rdx, str.IOError
call fcn.00409b60
nop
lea rcx, [0x00419420]
xor edx, edx
call fcn.00409f30
mov rbx, rax
mov rax, qword [rsp + 0x38]
lea r12, [rax + 0x30]
test rbx, rbx
je 0x40d0c5
jmp 0x40d0c0
test rcx, rcx
je 0x40d468
mov rdx, qword [rcx]
add rcx, 0x10
call fcn.0040bb70
jmp 0x40d1ff
test rbx, rbx
je 0x40d632
mov rcx, rbx
call fcn.00409aa0
nop dword [rax + rax]
nop word cs:[rax + rax]
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40d400
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40d3d9
cmp rbp, 7
mov r12d, 7
cmovge r12, rbp
lea rcx, [0x00412020]
lea rdx, [r12 + 0x11]
call fcn.004079c0
movq xmm2, r12
mov r9, rsi
mov r8, rbp
movq xmm0, rbp
mov edx, 1
mov rdi, rax
punpcklqdq xmm0, xmm2
lea rcx, [rax + 0x10]
movups xmmword [rax], xmm0
call sub.msvcrt.dll_fread
cmp rbp, rax
mov r13, rax
je 0x40d53f
mov rcx, rsi
call sub.msvcrt.dll_ferror
test eax, eax
jne 0x40d637
mov rcx, rsi
call sub.msvcrt.dll_fgetc
mov rdx, rsi
mov r12d, eax
mov ecx, eax
call sub.msvcrt.dll_ungetc
test r12d, r12d
jns 0x40d5e0
cmp rbp, r13
jle 0x40cedf
mov rcx, rdi
mov rdx, r13
call fcn.00407e40
mov rdi, rax
jmp 0x40cedf
xor eax, eax
nop dword [rax]
nop word cs:[rax + rax]
movzx edx, byte [rdi + rax + 0x10]
mov byte [rbx + rax + 0x10], dl
add rax, 1
cmp rsi, rax
jne 0x40d590
jmp 0x40d0c0
cmp qword [rsp + 0x98], 0
mov qword [0x004194e0], rbx
je 0x40d28e
jmp 0x40d489
mov edx, 0x1e
mov ebp, 0xd
jmp 0x40d355
mov rcx, rsi
call fcn.0040c960
test rax, rax
mov rsi, rax
je 0x40d5f3
mov rbx, qword [rax]
mov rcx, rdi
mov rdx, rbx
call fcn.00407770
test rsi, rsi
mov rdi, rax
je 0x40cedf
mov rax, qword [rax]
lea rdx, [rsi + 0x10]
lea rcx, [rdi + rax + 0x10]
mov rax, qword [rsi]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
add qword [rdi], rax
jmp 0x40cedf
call fcn.00409ea0
call fcn.00409d30
mov rcx, rsi
call fcn.0040c6f0
nop
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rax, qword [0x00427160]
cmp rax, 0xdab
jg 0x40e05e
lea rcx, [rax + 1]
lea rdx, [0x00420400]
cmp rcx, 0xdac
mov qword [0x00427160], rcx
lea rdi, [0x004084f0]
mov qword [rdx + rax*8], rdi
je 0x40e05e
lea rdi, [0x004084c0]
mov qword [rdx + rcx*8], rdi
lea rcx, [rax + 2]
cmp rcx, 0xdac
mov qword [0x00427160], rcx
je 0x40e05e
lea rdi, [0x00408390]
mov qword [rdx + rcx*8], rdi
lea rcx, [rax + 3]
cmp rcx, 0xdac
mov qword [0x00427160], rcx
je 0x40e05e
lea rsi, [0x00408360]
add rax, 4
mov qword [rdx + rcx*8], rsi
lea rcx, [0x00418080]
mov qword [0x00427160], rax
call qword [0x00419138]
mov eax, dword [0x00418084]
cmp eax, 6
je 0x40d9c0
cmp eax, 5
jg 0x40d70e
mov dword [0x00418070], 1
lea rcx, [0x00413c80]
mov edx, 0x17e490a
call fcn.00407560
mov edx, 0x63ccfaae
mov rcx, rax
call fcn.00407bd0
test rax, rax
mov rbx, rax
je 0x40db30
lea rsi, [rax - 0x10]
add qword [rsi], 8
mov rax, qword [0x00418068]
test rax, rax
je 0x40d766
mov rdi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rdi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40dae0
cmp qword [rbx + 8], 0
mov qword [0x00418068], rbx
mov rbp, qword [0x00418060]
js 0x40dad0
mov rdi, qword [rbx]
mov eax, 7
cmp rdi, 7
cmovl rdi, rax
lea rcx, [rdi + 0x11]
call fcn.00407440
lea rdx, [rbx + 0x10]
mov rsi, rax
mov qword [rax + 8], rdi
mov rax, qword [rbx]
lea rcx, [rsi + 0x10]
mov qword [rsi], rax
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
test rbp, rbp
mov qword [0x00418060], rsi
je 0x40d7dc
mov rax, qword [rbp - 0x10]
lea rdx, [rbp - 0x10]
sub rax, 8
cmp rax, 7
mov qword [rbp - 0x10], rax
jbe 0x40d9f0
call qword [0x00419128]
cmp byte [rax + 2], 0
jne 0x40da0c
call qword [0x00418910]
mov rbx, rax
call qword [0x00418910]
cmp dword [rbx + 0x70], 2
jne 0x40db20
mov eax, dword [rax + 0x74]
test eax, eax
jne 0x40db20
call fcn.004083c0
test al, al
je 0x40d92c
lea rdx, [0x004016e0]
mov ecx, 1
xor esi, esi
call qword [0x004188f8]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov ecx, 0x80000003
call qword [0x004188f0]
lea rcx, [0x004016e0]
call qword [0x004188e8]
mov edx, 0x67e5bd4e
lea rcx, [0x00413c60]
call fcn.00407560
mov rdi, rax
mov rax, qword [0x00418068]
test rax, rax
je 0x40d874
mov rsi, qword [rax]
test rdi, rdi
je 0x40dff0
add rsi, qword [rdi]
lea rcx, [0x00412020]
mov eax, 7
cmp rsi, 7
cmovl rsi, rax
lea rdx, [rsi + 0x11]
call fcn.004079c0
mov qword [rax + 8], rsi
mov rbx, rax
mov qword [rax], 0
mov rsi, qword [0x00418068]
test rsi, rsi
je 0x40de70
lea rcx, [rax + 0x10]
mov rax, qword [rsi]
lea rdx, [rsi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
mov qword [rbx], rax
lea rcx, [rax + 0x10]
mov rax, qword [rdi]
lea rdx, [rdi + 0x10]
add rcx, rbx
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rdi]
add qword [rbx], rax
add qword [rbx - 0x10], 8
mov rax, qword [0x00418060]
test rax, rax
je 0x40d925
mov rdi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rdi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
ja 0x40d925
lea rcx, [0x00427188]
call fcn.004058f0
mov qword [0x00418060], rbx
lea rcx, [0x00413b40]
mov edx, 0x280dd0ee
call fcn.00407560
mov edx, 0x384ed96a
mov rcx, rax
call fcn.00407bd0
test rax, rax
mov rbx, rax
je 0x40d957
add qword [rax - 0x10], 8
mov rax, qword [0x00418058]
test rax, rax
je 0x40d985
mov rsi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rsi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
ja 0x40d985
lea rcx, [0x00427188]
call fcn.004058f0
mov qword [0x00418058], rbx
call qword [0x004188e0]
mov ecx, 0x5dc
mov ebx, eax
call qword [0x004188d8]
call qword [0x004188e0]
sub eax, ebx
cmp eax, 0x513
jg 0x40db80
xor ecx, ecx
call sub.msvcrt.dll_exit
nop dword [rax]
mov eax, dword [0x00418088]
cmp eax, 2
je 0x40d704
cmp eax, 3
je 0x40d704
test eax, eax
je 0x40d704
cmp eax, 1
je 0x40d704
jmp 0x40d70e
lea rcx, [0x00427188]
call fcn.004058f0
call qword [0x00419128]
cmp byte [rax + 2], 0
je 0x40d7ec
lea rcx, [0x00413880]
mov edx, 0x63ccfaae
call fcn.00407560
mov ecx, 1
mov rbp, qword [fcn.0040fb60]
mov rsi, rax
call rbp
test rsi, rsi
mov rdi, rax
je 0x40ddb0
cmp qword [rsi], 0
lea r8, [rsi + 0x10]
mov rcx, rdi
lea rax, section..rdata
lea rdx, [0x00413234]
cmove r8, rax
call sub.msvcrt.dll_fprintf
lea r12, [0x00413234]
mov ebx, eax
movsxd rax, ebx
cmp rax, qword [rsi]
jge 0x40da91
cmp byte [rsi + rax + 0x10], 0
jne 0x40db00
xor ecx, ecx
mov rdx, rdi
call sub.msvcrt.dll_fputc
test eax, eax
jne 0x40da91
add ebx, 1
movsxd rax, ebx
cmp rax, qword [rsi]
jl 0x40da6d
mov ecx, 1
call rbp
mov r8d, 1
mov edx, 1
lea rcx, [0x004130af]
mov r9, rax
call sub.msvcrt.dll_fwrite
mov ecx, 1
call rbp
mov rcx, rax
call fcn.0040faa0
xor ecx, ecx
call sub.msvcrt.dll_exit
nop dword [rax + rax]
add qword [rsi], 8
mov rsi, rbx
jmp 0x40d7b6
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40d766
lea r8, [rsi + rax + 0x10]
mov rdx, r12
mov rcx, rdi
call sub.msvcrt.dll_fprintf
test eax, eax
jle 0x40da91
add ebx, eax
jmp 0x40da65
mov ecx, 1
call sub.msvcrt.dll_exit
nop word [rax + rax]
mov rax, qword [0x00418068]
test rax, rax
je 0x40db6b
mov rdi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rdi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
ja 0x40db60
lea rcx, [0x00427188]
call fcn.004058f0
nop
mov qword [0x00418068], 0
mov rbp, qword [0x00418060]
xor esi, esi
jmp 0x40d7b6
lea rcx, [0x004138a0]
mov edx, 0x7bbfe6aa
xor esi, esi
call fcn.00407560
mov rdi, rax
mov rax, qword [0x00418060]
test rax, rax
je 0x40dba5
mov rsi, qword [rax]
test rdi, rdi
je 0x40df80
add rsi, qword [rdi]
lea rcx, [0x00412020]
mov eax, 7
cmp rsi, 7
cmovl rsi, rax
lea rdx, [rsi + 0x11]
call fcn.004079c0
mov qword [rax + 8], rsi
mov rbx, rax
mov qword [rax], 0
mov rsi, qword [0x00418060]
test rsi, rsi
je 0x40dfe0
lea rcx, [rax + 0x10]
mov rax, qword [rsi]
lea rdx, [rsi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
mov qword [rbx], rax
lea rcx, [rax + 0x10]
mov rax, qword [rdi]
lea rdx, [rdi + 0x10]
add rcx, rbx
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rdi]
add qword [rbx], rax
add qword [rbx - 0x10], 8
mov rax, qword [0x00418060]
test rax, rax
je 0x40dc4e
mov rsi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rsi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40de50
mov edx, 0x79181d8e
mov qword [0x00418060], rbx
lea rcx, [0x00413940]
call fcn.00407560
mov edx, 0xe2041ce
mov rcx, rax
call fcn.00407bd0
lea rcx, section..rdata
xor edx, edx
test rax, rax
je 0x40dc96
mov rdx, qword [rax]
lea rcx, section..rdata
add rax, 0x10
test rdx, rdx
cmovne rcx, rax
call fcn.00407f60
mov rcx, rax
call qword [0x00419118]
mov edx, 0x7815cb2e
lea rcx, [0x00413900]
call fcn.00407560
mov edx, 0x4233296e
mov rcx, rax
call fcn.00407bd0
mov edx, 0x384ed96a
lea rcx, [0x004138c0]
mov rbx, rax
call fcn.00407560
mov edx, 0x248a382a
mov rcx, rax
call fcn.00407bd0
test rbx, rbx
mov rsi, rax
je 0x40df70
mov rdx, qword [rbx]
lea rcx, section..rdata
add rbx, 0x10
test rdx, rdx
cmovne rcx, rbx
call fcn.00407f60
mov rcx, rax
call qword [0x00419118]
cmp eax, 0xffffffff
je 0x40df30
xor edx, edx
mov ecx, 0x1000
movabs r8, 0xffffffff1
call qword [0x00419110]
test rax, rax
jne 0x40de80
lea rcx, [0x004139c0]
mov edx, 0x4233296e
call fcn.00407560
mov edx, 0x1b582bae
mov rcx, rax
call fcn.00407bd0
test rax, rax
mov rbx, rax
je 0x40dd66
add qword [rax - 0x10], 8
mov rax, qword [0x00418050]
test rax, rax
je 0x40dd8c
mov rsi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rsi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
jbe 0x40de30
mov qword [0x00418050], rbx
call 0x40ca70
nop
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
jmp 0x40ca70
lea r8, section..rdata
mov rcx, rax
lea rdx, [0x00413234]
call sub.msvcrt.dll_fprintf
lea rsi, [0x00413234]
mov ebx, eax
nop
test ebx, ebx
jns 0x40da91
movsxd r8, ebx
cmp byte [r8 + 0x10], 0
jne 0x40de09
xor ecx, ecx
mov rdx, rdi
call sub.msvcrt.dll_fputc
test eax, eax
jne 0x40da91
add ebx, 1
test ebx, ebx
jns 0x40da91
movsxd r8, ebx
cmp byte [r8 + 0x10], 0
je 0x40dde2
add r8, 0x10
mov rdx, rsi
mov rcx, rdi
call sub.msvcrt.dll_fprintf
test eax, eax
jle 0x40da91
add ebx, eax
jmp 0x40ddd0
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40dd8c
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40dc4e
mov ecx, 0x10
jmp 0x40d8d9
lea rcx, [0x004139a0]
mov edx, 0xac7974a
call fcn.00407560
mov edx, 0x77c8f40a
mov rcx, rax
call fcn.00407bd0
test rax, rax
mov rbx, rax
je 0x40deab
add qword [rax - 0x10], 8
mov rax, qword [0x00418068]
test rax, rax
je 0x40ded9
mov rdi, qword [rax - 0x10]
lea rdx, [rax - 0x10]
lea rcx, [rdi - 8]
cmp rcx, 7
mov qword [rax - 0x10], rcx
ja 0x40ded9
lea rcx, [0x00427188]
call fcn.004058f0
mov rsi, qword [0x00418060]
mov rcx, rbx
mov qword [0x00418068], rbx
call fcn.004074d0
mov qword [0x00418060], rax
test rsi, rsi
je 0x40dd3b
mov rax, qword [rsi - 0x10]
lea rdx, [rsi - 0x10]
sub rax, 8
cmp rax, 7
mov qword [rsi - 0x10], rax
ja 0x40dd3b
lea rcx, [0x00427188]
call fcn.004058f0
jmp 0x40dd3b
test rsi, rsi
je 0x40e050
mov rdx, qword [rsi]
lea rcx, section..rdata
add rsi, 0x10
test rdx, rdx
cmovne rcx, rsi
call fcn.00407f60
mov rcx, rax
call qword [0x00419118]
jmp 0x40dd1b
lea rcx, section..rdata
xor edx, edx
jmp 0x40dd04
lea rcx, [0x00412020]
cmp rsi, 7
mov eax, 7
cmovl rsi, rax
lea rdx, [rsi + 0x11]
call fcn.004079c0
mov qword [rax + 8], rsi
mov rbx, rax
mov qword [rax], 0
mov rsi, qword [0x00418060]
test rsi, rsi
je 0x40dc23
lea rcx, [rax + 0x10]
mov rax, qword [rsi]
lea rdx, [rsi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
mov qword [rbx], rax
jmp 0x40dc23
mov ecx, 0x10
jmp 0x40dc0a
lea rcx, [0x00412020]
cmp rsi, 7
mov eax, 7
cmovl rsi, rax
lea rdx, [rsi + 0x11]
call fcn.004079c0
mov qword [rax + 8], rsi
mov rbx, rax
mov qword [rax], 0
mov rsi, qword [0x00418068]
test rsi, rsi
je 0x40d8f2
lea rcx, [rax + 0x10]
mov rax, qword [rsi]
lea rdx, [rsi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi]
mov qword [rbx], rax
jmp 0x40d8f2
lea rcx, section..rdata
xor edx, edx
jmp 0x40df4e
call fcn.00403d30
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sub rsp, 0x28
mov rax, qword [0x00412060]
mov rax, qword [rax]
test rax, rax
je 0x40e0a0
call rax
mov rax, qword [0x00412060]
lea rdx, [rax + 8]
mov rax, qword [rax + 8]
mov qword [0x00412060], rdx
test rax, rax
jne 0x40e083
add rsp, 0x28
ret