Function at 0x4047f0
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov rax, qword [rcx + 0x50]
mov rsi, qword [rcx + 0xb8]
mov r12, qword [rcx + 0x68]
mov r14, qword [rcx + 0xd8]
mov rbx, rcx
mov r13, qword [rcx + 0xb0]
mov rbp, qword [rcx + 0x60]
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0xd0]
mov rdi, qword [rcx + 0x88]
mov byte [rsi + 0x13], 1
mov byte [rsi + 0x14], 1
mov dword [rsi + 4], 0
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], r14
call fcn.0040e410
mov r9, qword [r12 + 0x18]
mov r8, qword [r12 + 0x10]
lea rax, str.START
lea rdx, [0x005355f3]
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.0040e460
mov rcx, rbx
call fcn.004211f0
cmp byte [r13 + 1], 0
mov qword [rsi + 0x118], 0
mov qword [rsi + 0xc0], 0
mov qword [rsi + 0xc8], 0
je 0x404c70
mov rax, qword [r13 + 0x20]
mov byte [r13 + 1], 0
mov rax, qword [rax + 0x110]
mov qword [rsi + 0xc0], rax
mov qword [rsi + 0xc8], rax
mov qword [r14 + 0x1f8], 0
mov rcx, rbx
call fcn.00464ba0
mov rcx, rbx
call fcn.00468500
mov rcx, rbx
call fcn.00411840
cmp eax, 0xffffffff
je 0x404c51
mov rcx, rbx
call fcn.004215d0
cmp eax, 0xffffffff
je 0x404c51
mov rcx, rbx
call fcn.0042ac10
mov r13, rax
mov rax, qword [rsi + 0xd8]
xor edx, edx
xor r9d, r9d
xor r8d, r8d
mov ecx, 0x20
div r13
mov rdx, rbx
mov qword [rsi + 0xd0], rax
call fcn.00402e60
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x41], 0
jne 0x404ca3
mov rax, qword [rsi + 0xc0]
cmp rax, qword [rsi + 0xd0]
ja 0x4050ed
mov rdx, qword [rsp + 0x30]
cmp dword [rdx + 0x148], 9
je 0x404f60
imul r13, rax
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x38]
test eax, eax
je 0x4049af
mov rcx, qword [rsi + 0xf0]
sub eax, 1
lea rdx, [rcx + 8]
lea rax, [rdx + rax*8]
jmp 0x4049a4
add rdx, 8
cmp rax, rdx
mov qword [rcx], r13
mov rcx, rdx
jne 0x4049a0
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x36], 0
jne 0x405070
mov rcx, rbx
call fcn.00456960
movsxd rcx, dword [rdi + 0x2840]
mov edx, 0x10
call fcn.0040e940
movsxd rcx, dword [rdi + 0x2840]
mov edx, 8
mov r13, rax
mov qword [rsp + 0x48], rax
call fcn.0040e940
xor r8d, r8d
xor r9d, r9d
mov rdx, rbx
mov ecx, 1
mov r14, rax
call fcn.00402e60
mov r8d, dword [rdi + 0x2840]
mov dword [rsi + 4], 1
test r8d, r8d
jle 0x404b33
mov rax, qword [sym.imp.KERNEL32.dll_CreateThread]
xor r15d, r15d
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], rsi
mov rbp, r14
mov esi, r15d
mov r15, rax
nop word [rax + rax]
mov dword [r13], esi
mov qword [r13 + 8], rbx
mov r9, r13
xor edx, edx
xor ecx, ecx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
lea r8, [0x00448950]
add esi, 1
call r15
mov qword [rbp], rax
mov eax, dword [rdi + 0x2840]
add r13, 0x10
add rbp, 8
cmp eax, esi
jg 0x404a40
test eax, eax
mov rbp, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
jle 0x404b33
mov r13, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov r15d, 1
mov rcx, qword [r14 + r15*8 - 8]
mov edx, 0xffffffff
call r13
mov eax, dword [rdi + 0x2840]
mov edx, r15d
add r15, 1
cmp eax, edx
jg 0x404aa2
test eax, eax
jle 0x404b33
xor r15d, r15d
xor r13d, r13d
xor r11d, r11d
nop dword [rax]
cmp byte [rdi], 0
je 0x404b01
mov r10, qword [rdi + 0x2878]
add r10, r15
cmp byte [r10 + 0x20c], 0
jne 0x404b01
cmp byte [r10 + 0x20d], 0
jne 0x404b01
cmp dword [r10 + 0x26c], 1
je 0x404ed0
add r13d, 1
add r15, 0x1603f8
cmp dword [rdi + 0x2840], r13d
jg 0x404ad0
test r11d, r11d
je 0x404b33
xor edx, edx
mov rcx, rbx
call fcn.004032f0
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x38], 0
je 0x404fe0
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
xor ecx, ecx
call fcn.00402e60
mov rcx, rbx
call fcn.004566e0
mov rcx, rbx
call fcn.00456860
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x44], 0
jne 0x4050a0
lea rcx, [rsi + 0x108]
call sub.KERNEL32.dll_QueryPerformanceCounter
mov rax, qword [sym.imp.msvcrt.dll__time64]
lea rcx, [rsp + 0x70]
mov qword [rsp + 0x50], rax
call rax
mov rax, qword [rsp + 0x70]
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov ecx, 0x32
mov qword [rsi + 0xf8], rax
call fcn.00402e60
mov edx, dword [rdi + 0x2840]
mov dword [rsi + 4], 3
mov byte [rsi], 1
test edx, edx
jle 0x404cec
mov rax, qword [sym.imp.KERNEL32.dll_CreateThread]
xor r15d, r15d
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], rsi
mov r12, r14
mov esi, r15d
mov r13, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x40]
mov r15, rax
jmp 0x404c1b
lea r8, [0x0046bf90]
xor edx, edx
xor ecx, ecx
call r15
mov qword [r12], rax
mov eax, dword [rdi + 0x2840]
add esi, 1
add r13, 0x10
add r12, 8
cmp eax, esi
jle 0x404cb0
mov dword [r13], esi
cmp dword [rbp + 0xc], 1
mov r9, r13
mov qword [r13 + 8], rbx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
jne 0x404bf0
lea r8, [0x0046bea0]
xor edx, edx
xor ecx, ecx
call r15
mov qword [r12], rax
jmp 0x404c02
xor eax, eax
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rsp + 0x30]
mov rax, qword [rdx + 0x1f8]
test rax, rax
je 0x4048da
mov qword [rsi + 0xc0], rax
mov qword [rsi + 0xc8], rax
mov qword [rdx + 0x1f8], 0
jmp 0x4048da
mov dword [rsi + 4], 3
xor eax, eax
jmp 0x404c53
test eax, eax
mov rbp, qword [rsp + 0x58]
mov r12, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
jle 0x404cec
mov r13, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov r15d, 1
mov rcx, qword [r14 + r15*8 - 8]
mov edx, 0xffffffff
call r13
mov eax, r15d
add r15, 1
cmp dword [rdi + 0x2840], eax
jg 0x404cd0
mov rcx, r14
call fcn.0040ea80
mov rcx, qword [rsp + 0x48]
call fcn.0040ea80
mov eax, dword [rsi + 4]
cmp eax, 3
je 0x404fb0
lea edx, [rax - 6]
cmp edx, 5
jbe 0x404d1e
lea edx, [rax - 0xd]
cmp edx, 1
ja 0x404f8c
cmp eax, 5
je 0x404f93
lea rcx, [rsp + 0x78]
mov rax, qword [rsp + 0x50]
call rax
mov rax, qword [rsp + 0x78]
mov r9, qword [r12 + 0x18]
lea rdx, str._s_t_s_t_s_t_u
mov r8, qword [r12 + 0x10]
mov rcx, rbx
mov qword [rsi + 0x100], rax
mov rax, qword [rsp + 0x70]
mov dword [rsp + 0x28], eax
lea rax, str.runtime_start
mov qword [rsp + 0x20], rax
call fcn.0040e460
mov rax, qword [rsp + 0x78]
mov r9, qword [r12 + 0x18]
lea rdx, str._s_t_s_t_s_t_u
mov r8, qword [r12 + 0x10]
mov rcx, rbx
mov dword [rsp + 0x28], eax
lea rax, str.runtime_stop
mov qword [rsp + 0x20], rax
call fcn.0040e460
mov rdx, qword [rsi + 8]
mov rcx, rbx
call fcn.00404200
cmp eax, 0xffffffff
je 0x4050b0
mov rax, qword [rsp + 0x38]
mov r9, qword [r12 + 0x18]
lea rdx, str._s_t_s_t_s_t_u
mov r8, qword [r12 + 0x10]
mov byte [rsi], 0
mov rcx, rbx
mov eax, dword [rax + 0x20]
mov dword [rsp + 0x28], eax
lea rax, str.hashes__digests_done_new
mov qword [rsp + 0x20], rax
call fcn.0040e460
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov ecx, 0x30
call fcn.00402e60
mov eax, dword [rsi + 4]
mov r9, qword [r12 + 0x18]
lea rdx, str._s_t_s_t_s_t_u
mov r8, qword [r12 + 0x10]
mov rcx, rbx
mov dword [rsp + 0x28], eax
lea rax, str.status_after_work
mov qword [rsp + 0x20], rax
call fcn.0040e460
lea rax, [0x00535808]
mov r9, qword [r12 + 0x18]
mov r8, qword [r12 + 0x10]
lea rdx, [0x005355f3]
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.0040e460
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x44], 0
jne 0x405090
mov eax, dword [rbp + 0x18]
test eax, eax
jne 0x404c51
mov rcx, rbx
call fcn.0040cd80
mov eax, dword [rbp + 0x18]
test eax, eax
je 0x404c51
test eax, eax
mov dword [rbp + 0x1c], 0
jg 0x404ea1
jmp 0x404ec0
movsxd rdx, dword [rbp + 0x1c]
mov rax, qword [rbp + 0x10]
mov rcx, qword [rax + rdx*8]
call sub.msvcrt.dll__unlink
mov eax, dword [rbp + 0x1c]
add eax, 1
cmp eax, dword [rbp + 0x18]
mov dword [rbp + 0x1c], eax
jge 0x404ec0
cmp dword [rsi + 4], 5
jne 0x404e82
mov rcx, rbx
call fcn.004047f0
cmp eax, 0xffffffff
je 0x4050e0
cmp byte [rsi + 0x12], 0
jne 0x404e82
nop
mov rcx, qword [rbp + 0x10]
call fcn.0040ea80
jmp 0x404e62
mov eax, dword [r10]
add r11d, 1
mov r9d, dword [r10 + 0x270]
mov qword [rsp + 0x50], r10
lea r8d, [rax + 1]
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x38], 0
jne 0x405020
lea rdx, str._Device__u:_skipped__due_to_kernel_autotune_failure___d_.
mov rcx, rbx
mov dword [rsp + 0x58], r11d
call fcn.004032f0
mov r10, qword [rsp + 0x50]
mov r11d, dword [rsp + 0x58]
cmp byte [r10 + 0x15ff48], 0
mov byte [r10 + 0x20c], 1
je 0x404f2d
sub dword [rdi + 0x2858], 1
cmp byte [r10 + 0x15fd00], 0
je 0x404f3e
sub dword [rdi + 0x2850], 1
cmp byte [r10 + 0x160192], 0
je 0x404f4f
sub dword [rdi + 0x2868], 1
sub dword [rdi + 0x2848], 1
jmp 0x404b01
test rax, rax
je 0x4049af
mov rcx, qword [rsi + 0xf0]
xor edx, edx
xor eax, eax
mov qword [rcx + rax*8], r13
lea eax, [rdx + 1]
cmp rax, qword [rsi + 0xc0]
mov rdx, rax
jb 0x404f74
jmp 0x4049af
mov dword [rsi + 4], 5
mov rax, qword [rsp + 0x30]
cmp byte [rax + 0x59], 0
je 0x405040
mov dword [rsi + 4], 9
jmp 0x404d27
cmp byte [rsi + 0x17], 0
jne 0x405050
cmp byte [rsi + 0x18], 0
mov eax, 3
je 0x404d0a
mov rcx, rbx
call fcn.004266a0
mov eax, dword [rsi + 4]
jmp 0x404d0a
mov ecx, dword [rdi + 0x2848]
test ecx, ecx
jg 0x404b33
lea rdx, str.Aborting_session_due_to_kernel_autotune_failures__for_all_active_devices.
mov rcx, rbx
call fcn.00403390
lea rdx, [0x00535710]
mov rcx, rbx
call fcn.004032f0
xor edx, edx
mov rcx, rbx
call fcn.004032f0
mov eax, 0xfffffff6
jmp 0x404c53
lea rdx, str._Device__u:_detected_kernel_autotune_failure___d___min_values_will_be_used
mov rcx, rbx
mov dword [rsp + 0x50], r11d
call fcn.004032f0
mov r11d, dword [rsp + 0x50]
jmp 0x404b01
cmp byte [rax + 0x51], 0
je 0x404d27
jmp 0x404fa2
mov rcx, rbx
call fcn.00426670
mov eax, dword [rsi + 4]
cmp eax, 3
je 0x404fba
jmp 0x404d0a
mov rcx, rbx
call fcn.0043deb0
mov rdx, qword [rsp + 0x30]
mov dword [rdx + 0x16c], eax
jmp 0x4049be
mov rcx, rbx
call fcn.0040e7e0
jmp 0x404e57
mov rcx, rbx
call fcn.0040e6e0
jmp 0x404b62
call qword [sym.imp.msvcrt.dll___iob_func]
lea rcx, str.Initialization_problem:_the_hashcat_status_monitoring_function_returned_an_unexpected_value_n
lea r9, [rax + 0x60]
mov r8d, 0x5c
mov edx, 1
call sub.msvcrt.dll_fwrite
jmp 0x404db0
mov rcx, rbx
call fcn.00426700
jmp 0x404eb8
lea rdx, str.Restore_value_is_greater_than_keyspace.
mov rcx, rbx
call fcn.00403390
mov eax, 0xffffffff
jmp 0x404c53