Function at 0x404590
Capabilities:
Inspect section memory permissions

Disassembly:
push rbp
sub rsp, 0x150
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xe0], rcx
mov qword [rbp + 0xe8], rdx
mov dword [rbp + 0xf0], r8d
mov qword [rbp + 0xf8], r9
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xbc]
mov dword [rbp + 0x54], eax
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xc0]
mov dword [rbp + 0x50], eax
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xc4]
mov dword [rbp + 0x4c], eax
mov eax, dword [rbp + 0x54]
mov dword [rbp + 0xbc], eax
mov rax, qword [rbp + 0xe0]
mov rax, qword [rax + 0x10]
mov qword [rbp + 0x40], rax
mov rax, qword [rbp + 0x40]
mov rax, qword [rax + 8]
mov qword [rbp + 0x38], rax
mov qword [rbp + 0x10], 0x78
mov rax, qword [rbp + 0x10]
mov rcx, rax
call fcn.0050c076
mov qword [rbp], rax
mov qword [rbp + 8], 0
mov eax, dword [0x005820a0]
test eax, eax
je 0x404648
mov eax, dword [0x005820a0]
mov dword [rbp + 0xcc], eax
jmp 0x404667
cmp dword [rbp + 0xf0], 0
je 0x40465d
mov dword [rbp + 0xcc], 4
jmp 0x404667
mov dword [rbp + 0xcc], 0x10
mov dword [rbp + 0xc8], 0
mov eax, dword [0x00582070]
test eax, eax
jne 0x404711
mov rax, qword [rbp + 0x38]
mov rcx, qword [rax + 0x28]
mov rax, qword [rbp + 0x38]
mov rax, qword [rax + 0x38]
mov r10d, dword [rbp + 0x54]
mov edx, 0
div r10
add rcx, rax
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
lea rdx, [rbp - 0x20]
mov r8, rcx
mov rcx, rax
call fcn.0044a9ba
jmp 0x4046bd
add dword [rbp + 0xc8], 1
mov eax, dword [rbp + 0xc8]
cdqe
movzx eax, byte [rbp + rax - 0x20]
cmp al, 0x30
je 0x4046b6
mov eax, dword [rbp + 0xc8]
cdqe
movzx eax, byte [rbp + rax - 0x20]
test al, al
jne 0x4046f6
mov rax, qword [rbp + 0x38]
mov rax, qword [rax + 0x28]
test rax, rax
je 0x4046f6
mov dword [rbp + 0xc8], 0
cmp dword [rbp + 0xc8], 0
je 0x404711
mov eax, dword [rbp + 0xc8]
sub eax, 1
and eax, 0xfffffffc
mov dword [rbp + 0xc8], eax
mov rax, qword [rbp + 0xe0]
mov byte [rax + 0xcc], 0
mov rax, qword [rbp + 0x100]
mov qword [rbp + 0xc0], rax
jmp 0x40558b
mov dword [rbp + 0xac], 0
mov eax, dword [rbp + 0xbc]
mov dword [rbp + 0x34], eax
mov dword [rbp + 0xbc], 0
mov rax, qword [rbp + 0x40]
mov qword [rax + 0x30], 0
mov eax, dword [rbp + 0x54]
mov rdx, qword [rbp + 0xc0]
imul rax, rdx
mov qword [rbp + 0xb0], rax
jmp 0x404792
mov rdx, qword [rbp + 0xf8]
mov rax, qword [rbp + 0xb0]
add rax, rdx
movzx eax, byte [rax]
test al, al
jne 0x4047a8
add qword [rbp + 0xb0], 1
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0x108]
cmp qword [rbp + 0xb0], rax
jb 0x404772
jmp 0x4047a9
nop
mov eax, dword [0x00582094]
test eax, eax
jne 0x404927
mov rax, qword [rbp + 0xe0]
movzx eax, byte [rax + 0xcc]
test al, al
je 0x4047df
mov rax, qword [rbp + 0xe0]
movzx eax, byte [rax + 0xcd]
test al, al
jne 0x404927
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, qword [rbp + 0xb0]
sub rdx, rax
mov eax, dword [rbp + 0x50]
cmp rdx, rax
jae 0x404835
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0x108]
cmp qword [rbp + 0xb0], rax
jne 0x404927
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, qword [rbp + 0xb0]
sub rdx, rax
mov eax, dword [rbp + 0x4c]
cmp rdx, rax
jae 0x404927
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0x108]
cmp qword [rbp + 0xb0], rax
je 0x40487d
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, rax
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0xb0]
sub rcx, rax
mov rax, rcx
and rax, 0xfffffffffffffffc
add rax, rdx
mov qword [rbp + 0xb0], rax
mov rax, qword [rbp + 0xb0]
mov edx, eax
mov rax, qword [rbp + 0xc0]
imul eax, dword [rbp + 0x54]
sub edx, eax
mov eax, edx
mov dword [rbp + 0xbc], eax
mov eax, dword [0x005820c4]
test eax, eax
je 0x404916
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
mov edx, eax
mov rax, qword [rbp + 0xc0]
add rax, rdx
cmp qword [rbp + 0x108], rax
jbe 0x404916
mov rax, qword [rbp + 0x38]
mov rax, qword [rax + 0x90]
mov ecx, eax
mov rax, qword [rbp + 0xc0]
mov r8d, eax
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
add eax, r8d
add ecx, eax
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
mov r8d, ecx
mov edx, eax
lea rcx, str._t...__skipping__d_zeroes__resuming_at_file_offset:_0x_lx__n
call sub.msvcrt.dll_printf
jmp 0x4052df
lea rcx, str._t...
call sub.msvcrt.dll_puts
jmp 0x4052df
mov dword [rbp + 0xa8], 0
mov dword [rbp + 0xa4], 0
mov eax, dword [0x00582074]
test eax, eax
jne 0x40494f
mov eax, dword [0x00582078]
test eax, eax
je 0x40496c
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
mov rcx, qword [rbp + 0xc0]
mov rdx, qword [rbp + 0x38]
mov r8, rcx
mov rcx, rax
call fcn.00403f09
mov eax, dword [0x00582070]
test eax, eax
jne 0x404a1b
mov rax, qword [rbp + 0x38]
mov rdx, qword [rax + 0x28]
mov rax, qword [rbp + 0xc0]
lea rcx, [rdx + rax]
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
lea rdx, [rbp - 0x60]
mov r8, rcx
mov rcx, rax
call fcn.0044a9ba
mov eax, dword [rbp + 0xc8]
cdqe
lea rdx, [rbp - 0x60]
add rax, rdx
mov qword [rbp + 0x98], rax
jmp 0x4049cd
mov rax, qword [rbp + 0x98]
mov byte [rax], 0x20
add qword [rbp + 0x98], 1
mov rax, qword [rbp + 0x98]
movzx eax, byte [rax]
cmp al, 0x30
je 0x4049bb
mov rax, qword [rbp + 0x98]
movzx eax, byte [rax]
test al, al
jne 0x4049fb
sub qword [rbp + 0x98], 1
mov rax, qword [rbp + 0x98]
mov byte [rax], 0x30
mov eax, dword [rbp + 0xc8]
cdqe
lea rdx, [rbp - 0x60]
add rax, rdx
mov rdx, rax
lea rcx, str._s:_t
call sub.msvcrt.dll_printf
jmp 0x404a5c
mov rax, qword [rbp + 0x40]
mov dword [rax + 0x10], 1
mov rax, qword [rbp + 0x38]
mov rdx, qword [rax + 0x28]
mov rax, qword [rbp + 0xc0]
add rax, rdx
mov rdx, qword [rbp + 0xe0]
mov rcx, rax
call fcn.00403941
mov rax, qword [rbp + 0x40]
mov dword [rax + 0x10], 0
mov ecx, 0x20
call sub.msvcrt.dll_putchar
cmp dword [rbp + 0xf0], 0
je 0x404cf8
mov qword [rbp + 8], 0
mov rax, qword [rbp + 0xe0]
lea rdx, [0x004044b6]
mov qword [rax], rdx
mov rax, qword [rbp + 0xe0]
mov rdx, rbp
mov qword [rax + 8], rdx
mov rax, qword [rbp + 0xe0]
mov dword [rax + 0xb0], 0
mov rax, qword [rbp + 0xe0]
mov dword [rax + 0xb4], 0
mov eax, dword [0x00582090]
test eax, eax
je 0x404ac3
mov edx, 0x40000000
jmp 0x404ac8
mov edx, 0
mov rax, qword [rbp + 0xe0]
mov dword [rax + 0x60], edx
mov rax, qword [0x00582108]
test rax, rax
je 0x404af9
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0x60]
or eax, 0x20000000
mov edx, eax
mov rax, qword [rbp + 0xe0]
mov dword [rax + 0x60], edx
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xc8]
test eax, eax
je 0x404bd5
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
mov eax, dword [rax + 0x40]
shr eax, 5
and eax, 0xfffff
and eax, 2
test eax, eax
jne 0x404bd5
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
mov eax, dword [rax + 0x40]
shr eax, 5
and eax, 0xfffff
and eax, 0x40
test eax, eax
jne 0x404bd5
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
cmp qword [rbp + 0x120], rax
jbe 0x404bd5
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
mov rax, qword [rax]
mov rax, qword [rax + 8]
mov rcx, qword [rbp + 0x110]
mov rdx, qword [rbp + 0xc0]
add rdx, rcx
sub rax, rdx
mov qword [rbp + 0x28], rax
cmp qword [rbp + 0x28], 0
je 0x404ba5
cmp qword [rbp + 0x28], 0
jle 0x404bd5
mov eax, dword [rbp + 0x34]
mov edx, 0
div dword [rbp + 0x54]
mov eax, eax
cmp qword [rbp + 0x28], rax
jge 0x404bd5
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0x60]
or eax, 0x80000000
mov edx, eax
mov rax, qword [rbp + 0xe0]
mov dword [rax + 0x60], edx
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
mov rdx, qword [rax]
mov rax, qword [rbp + 0x40]
mov qword [rax + 0x30], rdx
mov eax, dword [0x00582090]
test eax, eax
jne 0x404c12
mov rax, qword [rbp + 0x38]
mov eax, dword [rax + 0x20]
and eax, 0x110
cmp eax, 0x110
jne 0x404c12
mov rax, qword [rbp + 0x38]
mov rdx, qword [rax + 0x28]
mov rax, qword [rbp + 0x108]
add rdx, rax
mov rax, qword [rbp + 0xe0]
mov qword [rax + 0xf0], rdx
mov rax, qword [rbp + 0x38]
mov rdx, qword [rax + 0x28]
mov rax, qword [rbp + 0xc0]
lea rcx, [rdx + rax]
mov rax, qword [rbp + 0xe8]
mov rdx, qword [rbp + 0xe0]
call rax
mov dword [rbp + 0xbc], eax
mov rax, qword [rbp + 0xe0]
mov qword [rax + 0xf0], 0
mov rax, qword [rbp + 0xe0]
mov rdx, qword [sub.msvcrt.dll_fprintf]
mov qword [rax], rdx
mov rax, qword [sym.imp.msvcrt.dll___iob_func]
call rax
lea rdx, [rax + 0x30]
mov rax, qword [rbp + 0xe0]
mov qword [rax + 8], rdx
mov eax, dword [0x005820a0]
test eax, eax
jne 0x404ca4
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb0]
test eax, eax
je 0x404ca4
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb0]
mov dword [rbp + 0xcc], eax
mov eax, dword [rbp + 0x54]
cmp dword [rbp + 0xbc], eax
jge 0x404e22
mov rax, qword [rbp + 8]
test rax, rax
je 0x404cc8
mov rax, qword [rbp]
mov rcx, rax
call sub.msvcrt.dll_puts
cmp dword [rbp + 0xbc], 0
js 0x4055a1
mov eax, dword [rbp + 0xbc]
mov edx, eax
lea rcx, str.disassemble_fn_returned_length__d
call fcn.0043f289
mov dword [0x00582030], 1
jmp 0x4055a2
mov eax, dword [rbp + 0xcc]
mov dword [rbp + 0xbc], eax
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
mov edx, eax
mov rax, qword [rbp + 0xc0]
add rax, rdx
cmp qword [rbp + 0x108], rax
jae 0x404d3f
mov rax, qword [rbp + 0x108]
sub rax, qword [rbp + 0xc0]
imul eax, dword [rbp + 0x54]
mov dword [rbp + 0xbc], eax
mov eax, dword [rbp + 0x54]
mov rdx, qword [rbp + 0xc0]
imul rax, rdx
mov qword [rbp + 0x90], rax
jmp 0x404ddf
mov rdx, qword [rbp + 0xf8]
mov rax, qword [rbp + 0x90]
add rax, rdx
movzx eax, byte [rax]
movzx edx, al
mov rax, qword [0x0056b800]
movsxd rdx, edx
movzx eax, word [rax + rdx*2]
movzx eax, ax
and eax, 0x10
test eax, eax
je 0x404dba
mov rdx, qword [rbp + 0xf8]
mov rax, qword [rbp + 0x90]
add rax, rdx
movzx edx, byte [rax]
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rcx, qword [rbp + 0x90]
sub rcx, rax
mov rax, rcx
mov byte [rbp + rax - 0x60], dl
jmp 0x404dd7
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, qword [rbp + 0x90]
sub rdx, rax
mov rax, rdx
mov byte [rbp + rax - 0x60], 0x2e
add qword [rbp + 0x90], 1
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, rax
mov eax, dword [rbp + 0xbc]
cdqe
add rax, rdx
cmp qword [rbp + 0x90], rax
jb 0x404d59
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, qword [rbp + 0x90]
sub rdx, rax
mov rax, rdx
mov byte [rbp + rax - 0x60], 0
mov eax, dword [0x00582070]
test eax, eax
je 0x404e39
mov eax, dword [0x0058207c]
test eax, eax
setg al
jmp 0x404e44
mov eax, dword [0x0058207c]
not eax
shr eax, 0x1f
test al, al
je 0x405062
mov eax, dword [rbp + 0xbc]
mov dword [rbp + 0xa4], eax
mov eax, dword [rbp + 0xa4]
cmp eax, dword [rbp + 0xcc]
jle 0x404e86
mov eax, dword [0x00582070]
test eax, eax
jne 0x404e86
mov eax, dword [0x0058209c]
test eax, eax
jne 0x404e86
mov eax, dword [rbp + 0xcc]
mov dword [rbp + 0xa4], eax
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb4]
test eax, eax
je 0x404eac
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb4]
mov dword [rbp + 0xa8], eax
jmp 0x404eb6
mov dword [rbp + 0xa8], 1
mov eax, dword [rbp + 0x54]
mov rdx, qword [rbp + 0xc0]
imul rax, rdx
mov qword [rbp + 0x88], rax
jmp 0x404fc8
mov eax, dword [rbp + 0xa8]
movsxd rdx, eax
mov rax, qword [rbp + 0x88]
add rdx, rax
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0x108]
cmp rdx, rax
ja 0x404faf
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb8]
cmp eax, 1
jne 0x404f5d
mov eax, dword [rbp + 0xa8]
sub eax, 1
mov dword [rbp + 0x84], eax
jmp 0x404f52
mov eax, dword [rbp + 0x84]
movsxd rdx, eax
mov rax, qword [rbp + 0x88]
add rdx, rax
mov rax, qword [rbp + 0xf8]
add rax, rdx
movzx eax, byte [rax]
movzx eax, al
mov edx, eax
lea rcx, [0x005307b2]
call sub.msvcrt.dll_printf
sub dword [rbp + 0x84], 1
cmp dword [rbp + 0x84], 0
jns 0x404f1a
jmp 0x404faf
mov dword [rbp + 0x84], 0
jmp 0x404fa1
mov eax, dword [rbp + 0x84]
movsxd rdx, eax
mov rax, qword [rbp + 0x88]
add rdx, rax
mov rax, qword [rbp + 0xf8]
add rax, rdx
movzx eax, byte [rax]
movzx eax, al
mov edx, eax
lea rcx, [0x005307b2]
call sub.msvcrt.dll_printf
add dword [rbp + 0x84], 1
mov eax, dword [rbp + 0x84]
cmp eax, dword [rbp + 0xa8]
jl 0x404f69
mov ecx, 0x20
call sub.msvcrt.dll_putchar
mov eax, dword [rbp + 0xa8]
cdqe
add qword [rbp + 0x88], rax
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, rax
mov eax, dword [rbp + 0xa4]
cdqe
add rax, rdx
cmp qword [rbp + 0x88], rax
jb 0x404ed0
jmp 0x405033
mov dword [rbp + 0x80], 0
jmp 0x40500f
lea rcx, [0x00530490]
call sub.msvcrt.dll_printf
add dword [rbp + 0x80], 1
mov eax, dword [rbp + 0x80]
cmp eax, dword [rbp + 0xa8]
jl 0x404ffc
mov ecx, 0x20
call sub.msvcrt.dll_putchar
sahf
adc byte [rax], al
mov eax, dword [rbp + 0xa8]
add dword [rbp + 0xa4], eax
mov eax, dword [rbp + 0xa4]
cmp eax, dword [rbp + 0xcc]
jl 0x404ff0
cmp dword [rbp + 0xf0], 0
je 0x405056
mov ecx, 9
call sub.msvcrt.dll_putchar
jmp 0x405062
lea rcx, [0x005307b7]
call sub.msvcrt.dll_printf
cmp dword [rbp + 0xf0], 0
jne 0x405080
lea rax, [rbp - 0x60]
mov rdx, rax
lea rcx, [0x00530695]
call sub.msvcrt.dll_printf
jmp 0x40509c
mov rax, qword [rbp + 8]
test rax, rax
je 0x40509c
mov rax, qword [rbp]
mov rdx, rax
lea rcx, [0x00530695]
call sub.msvcrt.dll_printf
mov eax, dword [0x00582070]
test eax, eax
je 0x4050b3
mov eax, dword [0x0058207c]
test eax, eax
setg al
jmp 0x4050be
mov eax, dword [0x0058207c]
not eax
shr eax, 0x1f
test al, al
je 0x4052bc
jmp 0x4052aa
mov ecx, 0xa
call sub.msvcrt.dll_putchar
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, rax
mov eax, dword [rbp + 0xa4]
cdqe
add rax, rdx
mov qword [rbp + 0x78], rax
mov rax, qword [rbp + 0x38]
mov rcx, qword [rax + 0x28]
mov r11d, dword [rbp + 0x54]
mov rax, qword [rbp + 0x78]
mov edx, 0
div r11
add rcx, rax
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
lea rdx, [rbp - 0x60]
mov r8, rcx
mov rcx, rax
call fcn.0044a9ba
mov eax, dword [rbp + 0xc8]
cdqe
lea rdx, [rbp - 0x60]
add rax, rdx
mov qword [rbp + 0x70], rax
jmp 0x405144
mov rax, qword [rbp + 0x70]
mov byte [rax], 0x20
add qword [rbp + 0x70], 1
mov rax, qword [rbp + 0x70]
movzx eax, byte [rax]
cmp al, 0x30
je 0x405138
mov rax, qword [rbp + 0x70]
movzx eax, byte [rax]
test al, al
jne 0x405166
sub qword [rbp + 0x70], 1
mov rax, qword [rbp + 0x70]
mov byte [rax], 0x30
mov eax, dword [rbp + 0xc8]
cdqe
lea rdx, [rbp - 0x60]
add rax, rdx
mov rdx, rax
lea rcx, str._s:_t
call sub.msvcrt.dll_printf
mov eax, dword [rbp + 0xcc]
add dword [rbp + 0xa4], eax
mov eax, dword [rbp + 0xa4]
cmp eax, dword [rbp + 0xbc]
jle 0x405287
mov eax, dword [rbp + 0xbc]
mov dword [rbp + 0xa4], eax
jmp 0x405287
mov eax, dword [rbp + 0xa8]
movsxd rdx, eax
mov rax, qword [rbp + 0x78]
add rdx, rax
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0x108]
cmp rdx, rax
ja 0x405271
mov rax, qword [rbp + 0xe0]
mov eax, dword [rax + 0xb8]
cmp eax, 1
jne 0x40522e
mov eax, dword [rbp + 0xa8]
sub eax, 1
mov dword [rbp + 0x6c], eax
jmp 0x405226
mov eax, dword [rbp + 0x6c]
movsxd rdx, eax
mov rax, qword [rbp + 0x78]
add rdx, rax
mov rax, qword [rbp + 0xf8]
add rax, rdx
movzx eax, byte [rax]
movzx eax, al
mov edx, eax
lea rcx, [0x005307b2]
call sub.msvcrt.dll_printf
sub dword [rbp + 0x6c], 1
cmp dword [rbp + 0x6c], 0
jns 0x4051f7
jmp 0x405271
mov dword [rbp + 0x6c], 0
jmp 0x405266
mov eax, dword [rbp + 0x6c]
movsxd rdx, eax
mov rax, qword [rbp + 0x78]
add rdx, rax
mov rax, qword [rbp + 0xf8]
add rax, rdx
movzx eax, byte [rax]
movzx eax, al
mov edx, eax
lea rcx, [0x005307b2]
call sub.msvcrt.dll_printf
add dword [rbp + 0x6c], 1
mov eax, dword [rbp + 0x6c]
cmp eax, dword [rbp + 0xa8]
jl 0x405237
mov ecx, 0x20
call sub.msvcrt.dll_putchar
mov eax, dword [rbp + 0xa8]
cdqe
add qword [rbp + 0x78], rax
mov eax, dword [rbp + 0x54]
imul rax, qword [rbp + 0xc0]
mov rdx, rax
mov eax, dword [rbp + 0xa4]
cdqe
add rax, rdx
cmp qword [rbp + 0x78], rax
jb 0x4051b3
mov eax, dword [rbp + 0xa4]
cmp eax, dword [rbp + 0xbc]
jl 0x4050cb
mov eax, dword [0x0058209c]
test eax, eax
jne 0x4052d5
mov ecx, 0xa
call sub.msvcrt.dll_putchar
jmp 0x40550f
mov dword [rbp + 0xac], 1
jmp 0x40550f
mov eax, dword [0x00582058]
test eax, eax
jne 0x4052fc
mov eax, dword [0x0058205c]
test eax, eax
je 0x4054f7
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
mov rax, qword [rax]
mov qword [rbp + 0x20], rax
mov eax, dword [0x0058209c]
test eax, eax
je 0x405323
mov ecx, 9
call sub.msvcrt.dll_putchar
jmp 0x40532f
lea rcx, [0x005307bc]
call sub.msvcrt.dll_printf
mov rax, qword [rbp + 0x38]
mov rax, qword [rax + 0x28]
sub rax, qword [rbp + 0x110]
mov rdx, rax
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 8]
add rax, rdx
mov r8d, 1
mov rdx, qword [rbp + 0xe0]
mov rcx, rax
call fcn.00402a8c
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x18]
test rax, rax
jne 0x40537c
lea rcx, str.:_unknown_t
call sub.msvcrt.dll_printf
jmp 0x4053c2
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x20]
test rax, rax
je 0x4053aa
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x20]
mov rdx, rax
lea rcx, str.:__s_t
call sub.msvcrt.dll_printf
jmp 0x4053c2
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x18]
mov eax, dword [rax]
mov edx, eax
lea rcx, str.:__d_t
call sub.msvcrt.dll_printf
mov rax, qword [rbp + 0x20]
mov rax, qword [rax]
test rax, rax
je 0x4053dd
mov rax, qword [rbp + 0x20]
mov rax, qword [rax]
mov rax, qword [rax]
test rax, rax
jne 0x4053ee
lea rcx, [0x005307d9]
call sub.msvcrt.dll_printf
jmp 0x40548c
mov rax, qword [rbp + 0x20]
mov rax, qword [rax]
mov rax, qword [rax]
mov rax, qword [rax + 8]
mov qword [rbp + 0x60], rax
cmp qword [rbp + 0x60], 0
je 0x405437
mov rax, qword [rbp + 0x60]
movzx eax, byte [rax]
test al, al
je 0x405437
mov rax, qword [rbp + 0x20]
mov rax, qword [rax]
mov rdx, qword [rax]
mov rax, qword [rbp + 0x40]
mov rax, qword [rax]
mov r8, rdx
mov rdx, qword [rbp + 0xe0]
mov rcx, rax
call fcn.00402b23
jmp 0x40548c
mov rax, qword [rbp + 0x20]
mov rax, qword [rax]
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
mov qword [rbp + 0x18], rax
mov rax, qword [rbp + 0x18]
mov rax, qword [rax]
mov qword [rbp + 0x60], rax
cmp qword [rbp + 0x60], 0
je 0x405466
mov rax, qword [rbp + 0x60]
movzx eax, byte [rax]
test al, al
jne 0x405471
lea rax, [0x005307d9]
mov qword [rbp + 0x60], rax
mov rax, qword [rbp + 0x60]
mov rcx, rax
call fcn.00401753
mov rdx, rax
lea rcx, [0x00530695]
call sub.msvcrt.dll_printf
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x10]
test rax, rax
je 0x4054e3
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0x10]
mov qword [rbp + 0x58], rax
cmp qword [rbp + 0x58], 0
jns 0x4054be
lea rcx, [0x005306a6]
call sub.msvcrt.dll_printf
neg qword [rbp + 0x58]
jmp 0x4054ca
lea rcx, [0x005306aa]
call sub.msvcrt.dll_printf
mov rax, qword [rbp + 0x58]
mov r8d, 1
mov rdx, qword [rbp + 0xe0]
mov rcx, rax
call fcn.00402a8c
mov ecx, 0xa
call sub.msvcrt.dll_putchar
mov dword [rbp + 0xac], 0
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
lea rdx, [rax + 8]
mov rax, qword [rbp + 0x118]
mov qword [rax], rdx
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
cmp qword [rbp + 0x120], rax
jbe 0x405561
mov rax, qword [rbp + 0x118]
mov rax, qword [rax]
mov rax, qword [rax]
mov rcx, qword [rax + 8]
mov rdx, qword [rbp + 0x110]
mov rax, qword [rbp + 0xc0]
lea r8, [rdx + rax]
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
mov eax, eax
add rax, r8
cmp rcx, rax
jb 0x4052e4
cmp dword [rbp + 0xac], 0
je 0x405574
mov ecx, 0xa
call sub.msvcrt.dll_putchar
mov eax, dword [rbp + 0xbc]
mov edx, 0
div dword [rbp + 0x54]
mov eax, eax
add qword [rbp + 0xc0], rax
mov rax, qword [rbp + 0xc0]
cmp rax, qword [rbp + 0x108]
jb 0x404732
jmp 0x4055a2
nop
mov rax, qword [rbp]
mov rcx, rax
call sub.msvcrt.dll_free
nop
add rsp, 0x150
pop rbp
ret