Function at 0x140023c40
Capabilities:
Allocate or change rwx memory

Disassembly:
lea rcx, [0x140017530]
jmp fcn.14000a6c7
push r15
mov eax, 0x3078
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.14001cc20
sub rsp, rax
xor ebx, ebx
xor r13d, r13d
mov qword [rsp + 0x30c8], rdx
mov r15d, ecx
call fcn.14001bd20
lea rax, [rsp + 0x70]
mov qword [rsp + 0x28], rax
mov rsi, rax
nop dword [rax + rax]
mov rdx, qword [rsp + 0x30c8]
lea r8, str.a:b:d:f:i:n:p:s:u:x:
mov ecx, r15d
call fcn.14001d7e0
cmp eax, 0xffffffff
je 0x1400231cd
lea r12, [rsp + 0x1070]
cmp rsi, r12
je 0x1400239e4
lea edx, [rax - 0x61]
cmp edx, 0x17
ja case.0x140022fc7.99
lea rdi, [0x1400251bc]
movsxd rdx, dword [rdi + rdx*4]
add rdx, rdi
jmp rdx
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.usage:_giftool___b_color____d_delay____iI____t_color____uU____x_disposal__n
mov rcx, rax
call fcn.140017540
nop word [rax + rax]
add rsi, 0x10
jmp 0x140022f80
cmp eax, 0x70
mov edx, 0x2c
setne al
movzx eax, al
add eax, 5
mov dword [rsi], eax
mov rax, qword [0x140026450]
mov r12, qword [rax]
mov rcx, r12
call sub.msvcrt.dll_strchr
mov rdi, rax
test rax, rax
je 0x140023c0d
mov rcx, r12
call sub.msvcrt.dll_atoi
lea rcx, [rdi + 1]
mov dword [rsi + 8], eax
mov ebp, eax
call sub.msvcrt.dll_atoi
mov dword [rsi + 0xc], eax
test eax, eax
js 0x140023052
test ebp, ebp
jns 0x140022ff0
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_negative_coordinate._n
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
nop word cs:[rax + rax]
mov rax, qword [0x140026450]
mov dword [rsi], 8
mov rcx, qword [rax]
call fcn.140017650
mov byte [rsi + 8], al
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 9
mov rcx, qword [rax]
call sub.msvcrt.dll_atoi
mov dword [rsi + 8], eax
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov edi, 1
lea rbp, str.0123456789
mov rbx, qword [rax]
jmp 0x1400230ec
add rdi, 1
cmp al, 0x2c
jne 0x140023b64
mov rdx, rbp
mov rcx, rbx
call sub.msvcrt.dll_strspn
mov r14, rax
test rax, rax
je 0x140023b64
mov rcx, rbx
add rbx, r14
mov r13d, edi
call sub.msvcrt.dll_atoi
sub eax, 1
mov dword [r12 + rdi*4 - 4], eax
movzx eax, byte [rbx]
test al, al
jne 0x1400230e0
mov ebx, 1
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 4
mov rcx, qword [rax]
call fcn.140017650
mov byte [rsi + 8], al
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 3
mov rax, qword [rax]
mov qword [rsi + 8], rax
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 1
mov rcx, qword [rax]
call sub.msvcrt.dll_atoi
mov dword [rsi + 8], eax
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 2
mov rcx, qword [rax]
call sub.msvcrt.dll_atoi
mov dword [rsi + 8], eax
jmp 0x140022ff0
mov rax, qword [0x140026450]
mov dword [rsi], 0
mov rcx, qword [rax]
call sub.msvcrt.dll_atoi
mov byte [rsi + 8], al
jmp 0x140022ff0
mov ebp, eax
lea rax, [rsp + 0x5c]
xor ecx, ecx
mov rdx, rax
mov qword [rsp + 0x30], rax
call fcn.140017f80
mov r12, rax
test rax, rax
je 0x140023bc2
mov rcx, rax
call fcn.140018f90
test eax, eax
je 0x140023bd5
mov rdx, qword [rsp + 0x30]
mov ecx, 1
call fcn.140019870
mov qword [rsp + 0x40], rax
test rax, rax
je 0x140023bc2
test bl, bl
je 0x1400232be
test r13d, r13d
je 0x140023264
lea edx, [r13 - 1]
mov r8d, dword [r12 + 0x20]
lea rax, [rsp + 0x1070]
lea rcx, [rsp + rdx*4 + 0x1074]
nop word [rax + rax]
mov edx, dword [rax]
test edx, edx
js 0x140023b9e
cmp edx, r8d
jge 0x140023b9e
add rax, 4
cmp rax, rcx
jne 0x140023248
cmp rsi, qword [rsp + 0x28]
jbe 0x1400233e5
lea rax, [rsp + 0x1070]
mov r14, qword [rsp + 0x28]
mov dword [rsp + 0x28], ebp
lea rbx, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea eax, [r13 - 1]
mov qword [rsp + 0x38], rax
lea rdi, [rsp + rax*4 + 0x1074]
nop dword [rax + rax]
mov edx, dword [r14]
cmp edx, 9
ja case.0x1400232bc.0
lea rcx, [0x14002521c]
mov eax, edx
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov r13d, dword [r12 + 0x20]
test r13d, r13d
jle 0x140023b88
movsxd rdx, r13d
xor eax, eax
lea rcx, [rsp + 0x1070]
nop dword [rax]
mov dword [rcx + rax*4], eax
add rax, 1
cmp rax, rdx
jne 0x1400232e0
jmp 0x140023264
mov rbp, qword [rsp + 0x20]
test r13d, r13d
je 0x1400233d8
nop
mov r15d, dword [rbp]
mov r8, rbx
mov rcx, r12
add rbp, 4
mov edx, r15d
call fcn.140018a40
mov eax, dword [r14 + 8]
mov r8d, r15d
mov rdx, r12
mov rcx, rbx
mov dword [rsp + 0x60], eax
call fcn.14001aa30
cmp rbp, rdi
jne 0x140023300
jmp 0x1400233d8
mov rbp, qword [rsp + 0x20]
test r13d, r13d
je 0x1400233d8
nop dword [rax]
mov r15d, dword [rbp]
mov r8, rbx
mov rcx, r12
add rbp, 4
mov edx, r15d
call fcn.140018a40
movzx eax, byte [r14 + 8]
mov r8d, r15d
mov rdx, r12
mov rcx, rbx
mov byte [rsp + 0x64], al
call fcn.14001aa30
cmp rbp, rdi
jne 0x140023348
jmp 0x1400233d8
mov rbp, qword [rsp + 0x20]
test r13d, r13d
je 0x1400233d8
nop word cs:[rax + rax]
mov r15d, dword [rbp]
mov r8, rbx
mov rcx, r12
add rbp, 4
mov edx, r15d
call fcn.140018a40
mov eax, dword [r14 + 8]
mov r8d, r15d
mov rdx, r12
mov rcx, rbx
mov dword [rsp + 0x6c], eax
call fcn.14001aa30
cmp rbp, rdi
jne 0x140023390
jmp 0x1400233d8
mov eax, dword [r14 + 8]
mov dword [r12], eax
mov eax, dword [r14 + 0xc]
mov dword [r12 + 4], eax
nop dword [rax]
add r14, 0x10
cmp rsi, r14
ja 0x1400232a0
mov eax, dword [r12]
mov rsi, qword [rsp + 0x40]
mov dword [rsi], eax
mov eax, dword [r12 + 4]
mov dword [rsi + 4], eax
mov eax, dword [r12 + 8]
mov dword [rsi + 8], eax
mov eax, dword [r12 + 0xc]
mov dword [rsi + 0xc], eax
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x140023426
mov rdx, qword [rax + 0x10]
mov ecx, dword [rax]
call fcn.14001b040
mov rsi, qword [rsp + 0x40]
mov qword [rsi + 0x18], rax
xor esi, esi
xor ebx, ebx
cmp dword [r12 + 0x20], 0
mov rdi, qword [rsp + 0x40]
jle 0x14002345e
nop word [rax + rax]
mov rdx, qword [r12 + 0x48]
mov rcx, rdi
add ebx, 1
add rdx, rsi
add rsi, 0x38
call fcn.14001b650
cmp dword [r12 + 0x20], ebx
jg 0x140023440
mov rcx, qword [rsp + 0x40]
call fcn.14001ae30
mov ebp, eax
test eax, eax
jne 0x140023b4a
mov rax, qword [rsp + 0x40]
mov ecx, dword [rax + 0x60]
call fcn.14001bb30
jmp 0x140023934
test r13d, r13d
je 0x1400233d8
mov r9, qword [r12 + 0x48]
mov r8d, dword [r14 + 8]
mov ecx, dword [r14 + 0xc]
mov rax, qword [rsp + 0x20]
nop
movsxd r10, dword [rax]
add rax, 4
lea rdx, [r10*8]
sub rdx, r10
lea rdx, [r9 + rdx*8]
mov dword [rdx], r8d
mov dword [rdx + 4], ecx
cmp rax, rdi
jne 0x1400234a0
jmp 0x1400233d8
test r13d, r13d
je 0x1400233d8
mov r9, qword [r12 + 0x48]
movzx r8d, byte [r14 + 8]
mov rax, qword [rsp + 0x20]
nop
movsxd rcx, dword [rax]
add rax, 4
lea rdx, [rcx*8]
sub rdx, rcx
mov byte [r9 + rdx*8 + 0x10], r8b
cmp rax, rdi
jne 0x1400234e0
jmp 0x1400233d8
mov ebp, dword [rsp + 0x28]
mov r15d, edx
test r13d, r13d
je 0x140023b43
mov rax, qword [r14 + 8]
mov dword [rsp + 0x4c], ebp
xor esi, esi
lea rbx, [0x140025244]
mov dword [rsp + 0x30], r15d
mov r15, rax
nop word [rax + rax]
mov rax, qword [rsp + 0x20]
movsxd rdx, dword [rax + rsi*4]
lea rax, [rdx*8]
mov r13, rdx
sub rax, rdx
mov rdx, qword [r12 + 0x48]
lea r14, [rdx + rax*8]
movzx eax, byte [r15]
test al, al
je 0x14002361c
lea rdi, [rsi*8]
mov rbp, r15
sub rdi, rsi
lea rcx, [rdi*8]
mov qword [rsp + 0x28], rcx
nop word [rax + rax]
lea rdi, [rbp + 1]
cmp al, 0x5c
je 0x140023830
cmp al, 0x25
jne 0x140023950
movzx r8d, byte [rbp + 1]
lea rax, [rbp + 2]
cmp r8b, 0x74
je 0x140023970
cmp r8b, 0x6f
je 0x140023990
cmp r8b, 0x79
je 0x1400239b0
cmp r8b, 0x31
je 0x1400239d0
mov rbp, rax
xor r9d, r9d
nop dword [rax + rax]
lea eax, [r8 - 0x25]
cmp al, 0x55
ja case.0x1400235e2.1
movzx eax, al
movsxd rax, dword [rbx + rax*4]
add rax, rbx
jmp rax
mov byte [rsp + 0x40], r8b
mov ecx, 2
call qword [fcn.140022d40]
movsx r8d, byte [rsp + 0x40]
lea rdx, str.giftool:_bad_format____c_n
mov rcx, rax
call fcn.140017540
nop dword [rax]
movzx eax, byte [rdi + 1]
test al, al
jne 0x140023580
lea rax, [rsi + 1]
cmp rsi, qword [rsp + 0x38]
je 0x140023b43
mov rsi, rax
jmp 0x140023530
mov eax, dword [r14 + 8]
mov dword [r12 + 0xc], eax
jmp 0x1400233d8
mov rbp, qword [rsp + 0x20]
test r13d, r13d
je 0x1400233d8
nop
mov r15d, dword [rbp]
mov r8, rbx
mov rcx, r12
add rbp, 4
mov edx, r15d
call fcn.140018a40
mov eax, dword [r14 + 8]
mov r8d, r15d
mov rdx, r12
mov rcx, rbx
mov dword [rsp + 0x68], eax
call fcn.14001aa30
cmp rbp, rdi
jne 0x140023650
jmp 0x1400233d8
mov rcx, qword [rsp + 0x28]
mov rax, qword [r12 + 0x48]
mov rax, qword [rax + rcx + 0x18]
xor ecx, ecx
test rax, rax
je 0x1400236a0
movzx ecx, byte [rax + 8]
mov edx, r9d
call fcn.1400175c0
lea rcx, [0x14002517a]
mov rdx, rax
call fcn.140017570
jmp 0x140023610
mov edx, r13d
mov rcx, r12
lea r8, [rsp + 0x60]
call fcn.140018a40
mov edx, dword [rsp + 0x60]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov edx, dword [r14 + 8]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov ecx, 1
call qword [fcn.140022d40]
mov rcx, r12
mov qword [rsp + 0x40], rax
call fcn.140019ad0
mov rdx, qword [rsp + 0x40]
mov rcx, rax
call sub.msvcrt.dll_fputs
jmp 0x140023610
mov rcx, r12
lea r8, [rsp + 0x60]
mov edx, r13d
mov dword [rsp + 0x40], r9d
call fcn.140018a40
movzx ecx, byte [rsp + 0x64]
mov r9d, dword [rsp + 0x40]
jmp 0x1400236a0
mov edx, r13d
mov rcx, r12
lea r8, [rsp + 0x60]
call fcn.140018a40
mov edx, dword [rsp + 0x6c]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov r8d, dword [r12 + 4]
mov edx, dword [r12]
lea rcx, str._d__d
call fcn.140017570
jmp 0x140023610
mov r8d, dword [r14 + 4]
mov edx, dword [r14]
lea rcx, str._d__d
call fcn.140017570
jmp 0x140023610
lea edx, [r13 + 1]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov edx, dword [r14 + 0xc]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov edx, r13d
mov rcx, r12
lea r8, [rsp + 0x60]
call fcn.140018a40
mov edx, dword [rsp + 0x68]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov edx, dword [r12 + 0xc]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
movzx edx, byte [r12 + 0x10]
lea rcx, [0x140025171]
call fcn.140017570
jmp 0x140023610
mov ecx, 0x25
call sub.msvcrt.dll_putchar
jmp 0x140023610
movsx ecx, byte [rbp + 1]
lea eax, [rcx - 0x62]
cmp al, 0x16
ja case.0x14002384c.1
lea rdx, [0x14002539c]
movzx eax, al
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
call sub.msvcrt.dll_putchar
add rbp, 2
jmp 0x140023610
movzx eax, byte [rbp + 2]
sub eax, 0x30
cmp al, 0x36
ja case.0x140023880.10
lea rdx, [0x1400253f8]
movzx eax, al
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
mov ecx, 0xb
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 0xa
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 0xc
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 0x1b
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 8
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 9
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ecx, 0xd
add rbp, 2
call sub.msvcrt.dll_putchar
jmp 0x140023610
mov ebp, dword [rsp + 0x4c]
mov eax, ebp
add rsp, 0x3078
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movsx ecx, al
call sub.msvcrt.dll_putchar
mov rax, rdi
mov rdi, rbp
mov rbp, rax
jmp 0x140023610
movzx r8d, byte [rbp + 2]
mov rdi, rax
add rbp, 3
mov r9d, 2
jmp 0x1400235d0
movzx r8d, byte [rbp + 2]
mov rdi, rax
add rbp, 3
mov r9d, 1
jmp 0x1400235d0
movzx r8d, byte [rbp + 2]
mov r9d, dword [rsp + 0x30]
add rbp, 3
mov rdi, rax
jmp 0x1400235d0
movzx r8d, byte [rbp + 2]
mov rdi, rax
add rbp, 3
xor r9d, r9d
jmp 0x1400235d0
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_too_many_operations.
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
mov ecx, 0xfffffff0
nop dword [rax]
movzx eax, byte [rbp + 3]
lea rdi, [rbp + 3]
sub eax, 0x30
cmp al, 0x36
ja case.0x140023a30.10
lea rdx, [0x1400254d4]
movzx eax, al
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
mov ebp, 0xfffffffe
jmp 0x140023934
mov ecx, 0xffffffe0
jmp 0x140023a10
mov ecx, 0xffffffd0
jmp 0x140023a10
mov ecx, 0xffffffc0
jmp 0x140023a10
mov ecx, 0xffffffb0
jmp 0x140023a10
mov ecx, 0xffffffa0
jmp 0x140023a10
add ecx, 0xf
nop dword [rax + rax]
movsx ecx, cl
add rbp, 4
call sub.msvcrt.dll_putchar
jmp 0x140023610
add ecx, 0xd
jmp case.0x140023a30.0
add ecx, 0xc
jmp case.0x140023a30.0
add ecx, 0xe
jmp case.0x140023a30.0
add ecx, 0xb
jmp case.0x140023a30.0
add ecx, 0xa
jmp case.0x140023a30.0
mov ecx, 0xffffff90
jmp 0x140023a10
mov ecx, 0xffffff80
jmp 0x140023a10
mov ecx, 0x70
jmp 0x140023a10
mov ecx, 0x60
jmp 0x140023a10
mov ecx, 0x50
jmp 0x140023a10
mov ecx, 0x40
jmp 0x140023a10
mov ecx, 0x30
jmp 0x140023a10
mov ecx, 0x20
jmp 0x140023a10
xor ecx, ecx
jmp 0x140023a10
mov ecx, 0x10
jmp 0x140023a10
add ecx, 1
jmp case.0x140023a30.0
add ecx, 7
jmp case.0x140023a30.0
add ecx, 6
jmp case.0x140023a30.0
add ecx, 5
jmp case.0x140023a30.0
add ecx, 4
jmp case.0x140023a30.0
add ecx, 3
jmp case.0x140023a30.0
add ecx, 2
jmp case.0x140023a30.0
add ecx, 9
jmp case.0x140023a30.0
add ecx, 8
jmp case.0x140023a30.0
xor ecx, ecx
call sub.msvcrt.dll_exit
mov rdx, qword [rsp + 0x30]
mov rcx, r12
call fcn.140018b00
mov ebp, eax
test eax, eax
je 0x140023b90
xor ebp, ebp
jmp 0x140023934
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_bad_selection._n
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
xor r13d, r13d
jmp 0x140023264
mov ecx, dword [rsp + 0x5c]
call fcn.14001bb30
jmp 0x140023934
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_selection_index_out_of_bounds._n
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
mov ecx, dword [rsp + 0x5c]
call fcn.14001bb30
mov ecx, 1
call sub.msvcrt.dll_exit
mov ecx, dword [r12 + 0x60]
call fcn.14001bb30
mov ecx, 1
call sub.msvcrt.dll_exit
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_unknown_operation_mode_n
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
mov ecx, 2
call qword [fcn.140022d40]
lea rdx, str.giftool:_missing_comma_in_coordinate_pair._n
mov rcx, rax
call fcn.140017540
mov ecx, 1
call sub.msvcrt.dll_exit
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp 0x140017520