Function at 0x45dcb0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x4f8
xor eax, eax
lea r13, [rsp + 0x1c0]
mov qword [rsp + 0x540], rcx
mov ecx, 0x66
mov rbp, rdx
mov edx, dword [r8 + 0x18]
mov qword [rsp + 0x550], r8
mov rdi, r13
rep stosq qword [rdi], rax
mov eax, dword [r8 + 0x1c]
mov ecx, dword [r8 + 0x14]
mov dword [rsp + 0x20], eax
sub eax, edx
mov dword [rsp + 0x1d8], ecx
mov dword [rsp + 0x1e0], eax
mov eax, dword [r8 + 0x20]
mov r8d, eax
sub r8d, edx
cmp edx, eax
cmovge eax, edx
mov dword [rsp + 0x1e4], r8d
add eax, 1
cmp ecx, eax
jle 0x45e593
mov rsi, qword [0x00670bd0]
sub eax, edx
lea rdx, str.GIF87a
mov ebx, eax
mov dword [rsp + 0x1e8], eax
test ebx, ebx
mov rax, qword [rsi]
mov r9, qword [rax + 0x848]
lea rax, str.GIF89a
cmovne rdx, rax
lea r14, [r13 + 0x30]
mov r8d, 6
mov rcx, rbp
call r9
lea rdx, [rsp + 0x4f0]
mov rax, r14
nop dword [rax + rax]
mov byte [rax], 0xff
mov byte [rax + 1], 0xff
add rax, 3
mov byte [rax - 1], 0xff
cmp rax, rdx
jne 0x45dd80
mov rax, qword [rsp + 0x550]
mov rcx, qword [rsp + 0x550]
mov edi, dword [rax + 8]
mov eax, dword [rax + 0xc]
mov edx, dword [rcx + 0x10]
mov dword [rsp + 0x20], eax
mov rax, qword [rsp + 0x550]
mov dword [rsp + 0x1dc], edx
movsxd rax, dword [rax + 0x18]
add rax, qword [rcx]
test ebx, ebx
mov qword [rsp + 0x1d0], rax
je 0x45e570
mov r10d, dword [rsp + 0x20]
xor ebx, ebx
mov byte [rsp + 0x1f0], 0xd9
mov byte [rsp + 0x1f1], 0xd9
mov byte [rsp + 0x1f2], 0xd9
test r10d, r10d
jle 0x45dee0
movsxd rcx, edx
mov qword [rsp + 0x548], rbp
xor r9d, r9d
mov qword [rsp + 0x28], rcx
mov rbp, rax
test edi, edi
mov r8, rbp
jle 0x45deac
xor r11d, r11d
mov eax, dword [rsp + 0x1e8]
test eax, eax
je 0x45de38
movsxd rdx, eax
cmp byte [r8 + rdx], 0
je 0x45de94
movsxd rdx, dword [rsp + 0x1e0]
test eax, eax
movzx ecx, byte [r8]
setne al
movzx r10d, byte [r8 + rdx]
movsxd rdx, dword [rsp + 0x1e4]
movzx r12d, byte [r8 + rdx]
movzx edx, al
cmp edx, ebx
jg 0x45e4e1
movzx eax, al
lea r15, [r13 + rax*2]
lea rax, [r15 + rax + 0x30]
jmp 0x45de84
add edx, 1
add rax, 3
cmp edx, ebx
jg 0x45e4e1
cmp cl, byte [rax]
jne 0x45de75
cmp r10b, byte [rax + 1]
jne 0x45de75
cmp r12b, byte [rax + 2]
jne 0x45de75
movsxd rax, dword [rsp + 0x1d8]
add r11d, 1
add r8, rax
cmp r11d, edi
jne 0x45de23
mov rax, qword [rsp + 0x550]
add r9d, 1
add rbp, qword [rsp + 0x28]
cmp r9d, dword [rax + 0xc]
jl 0x45de15
cmp ebx, 0xff
mov rbp, qword [rsp + 0x548]
jg 0x45e535
cmp ebx, 1
jg 0x45dee5
mov ebx, 2
mov rax, qword [rsi]
lea r12, [rsp + 0x5f]
mov r8d, 1
mov rcx, rbp
mov byte [rsp + 0x5f], dil
mov rdx, r12
call qword [rax + 0x848]
mov eax, edi
mov r8d, 1
mov rdx, r12
sar ax, 8
mov rcx, rbp
mov word [rsp + 0x4c], ax
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
mov r15d, dword [rsp + 0x20]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], r15b
call qword [rax + 0x848]
mov eax, r15d
mov rcx, rbp
mov r8d, 1
sar ax, 8
mov rdx, r12
mov word [rsp + 0x4e], ax
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
xor ecx, ecx
nop
add ecx, 1
mov eax, ebx
sar eax, cl
test eax, eax
jne 0x45df70
mov dword [rsp + 0x34], eax
mov al, 1
mov byte [rsp + 0x38], cl
shl eax, cl
mov r8d, 1
mov rdx, r12
mov r15d, eax
lea eax, [rcx + 1]
mov dword [rsp + 0x3c], eax
lea eax, [r15 + 1]
mov dword [rsp + 0x40], eax
lea eax, [r15 + 2]
mov dword [rsp + 0x44], eax
lea eax, [r15 - 1]
mov dword [rsp + 0x28], eax
mov eax, 0xffd
sub eax, r15d
mov dword [rsp + 0x48], eax
mov eax, ecx
shl eax, 4
lea ecx, [rax + rcx + 0x6f]
mov rax, qword [rsi]
mov byte [rsp + 0x5f], cl
mov rcx, rbp
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov dword [rsp + 0x1ec], r15d
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
call qword [rax + 0x848]
test r15d, r15d
jle 0x45e082
mov eax, dword [rsp + 0x28]
lea rbx, [rax + rax*2 + 0x33]
add rbx, r13
nop
movzx eax, byte [r14]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
add r14, 3
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
movzx eax, byte [r14 - 2]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
movzx eax, byte [r14 - 1]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
cmp r14, rbx
jne 0x45e020
mov r8d, dword [rsp + 0x1e8]
test r8d, r8d
jne 0x45e695
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0x2c
lea r14, [rsp + 0x60]
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
mov rax, qword [rsi]
mov byte [rsp + 0x5f], dil
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov rdi, r14
call qword [rax + 0x848]
movzx eax, byte [rsp + 0x4c]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
movzx eax, byte [rsp + 0x20]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
movzx eax, byte [rsp + 0x4e]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
call qword [rax + 0x848]
movzx eax, byte [rsp + 0x38]
mov r8d, 1
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], al
mov rax, qword [rsi]
call qword [rax + 0x848]
mov rax, qword [rsp + 0x550]
mov ecx, 0x2b
mov ebx, dword [rsp + 0x48]
mov edx, 9
mov eax, dword [rax + 8]
mov dword [rsp + 0x1c8], eax
mov dword [rsp + 0x1c0], eax
mov rax, qword [rsp + 0x550]
mov r9d, dword [rax + 0xc]
xor eax, eax
rep stosq qword [rdi], rax
mov eax, dword [rsp + 0x40]
mov edi, dword [rsp + 0x3c]
mov ecx, dword [rsp + 0x28]
mov dword [rsp + 0x1c4], r9d
mov dword [rsp + 0x20], r9d
mov dword [rsp + 0x98], r15d
mov dword [rsp + 0x9c], eax
mov eax, dword [rsp + 0x44]
cmp edi, 4
mov dword [rsp + 0x88], ecx
mov dword [rsp + 0x84], ecx
mov rcx, r14
mov qword [rsp + 0xa8], rbp
mov dword [rsp + 0x7c], edi
mov dword [rsp + 0x64], eax
lea eax, [r15 - 2]
mov dword [rsp + 0x94], ebx
mov dword [rsp + 0x78], edi
mov dword [rsp + 0x74], 1
cmovl eax, edx
mov edx, r15d
add r13, 0x30
mov dword [rsp + 0x90], eax
mov dword [rsp + 0x8c], eax
xor r15d, r15d
call fcn.0045c5b0
mov r9d, dword [rsp + 0x20]
mov dword [rsp + 0x68], 0
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x548], rbp
mov esi, r15d
mov qword [rsp + 0x28], r12
test r9d, r9d
je 0x45e412
mov r8d, dword [rsp + 0x1e8]
mov rcx, qword [rsp + 0x1d0]
test r8d, r8d
je 0x45e2d3
movsxd rax, r8d
xor ebx, ebx
cmp byte [rcx + rax], 0
je 0x45e340
movsxd rax, dword [rsp + 0x1e4]
test r8d, r8d
setne r8b
movzx ebx, r8b
movzx r8d, r8b
lea rdi, [r8 + r8]
movzx r11d, byte [rcx + rax]
movsxd rax, dword [rsp + 0x1e0]
add r8, rdi
movzx edx, byte [rcx + rax]
movzx eax, byte [rcx]
jmp 0x45e323
add ebx, 1
add r8, 3
cmp ebx, 0x100
jg 0x45e5c0
lea rdi, [r13 + r8]
cmp al, byte [rdi]
jne 0x45e310
cmp dl, byte [rdi + 1]
jne 0x45e310
cmp r11b, byte [rdi + 2]
jne 0x45e310
nop word [rax + rax]
movsxd rax, dword [rsp + 0x1d8]
add rcx, rax
mov rdx, rax
mov eax, dword [rsp + 0x1c0]
mov qword [rsp + 0x1d0], rcx
sub eax, 1
test eax, eax
mov dword [rsp + 0x1c0], eax
jle 0x45e5e4
test esi, esi
jle 0x45e3dd
mov edi, dword [rsp + 0x60]
cmp edi, ebx
je 0x45e5ca
cmp esi, 1
je 0x45e42d
mov ecx, dword [rsp + 0x74]
test ecx, ecx
jne 0x45e672
mov r12d, dword [rsp + 0x70]
cmp r12d, 1
jle 0x45e3a9
cmp edi, dword [rsp + 0x6c]
je 0x45e6cd
mov edx, dword [rsp + 0x94]
mov ecx, esi
call fcn.0045c620
cmp eax, esi
jge 0x45e3c4
jmp 0x45e624
mov edi, dword [rsp + 0x60]
mov edx, edi
mov rcx, r14
sub esi, 1
call fcn.0045c830
test esi, esi
jg 0x45e3c0
mov dword [rsp + 0x68], 0
cmp ebx, 0xffffffff
je 0x45e444
cmp dword [rsp + 0x60], ebx
je 0x45e61d
mov dword [rsp + 0x60], ebx
mov dword [rsp + 0x68], 1
mov r10d, 1
mov r9d, dword [rsp + 0x1c4]
mov esi, r10d
test r9d, r9d
jne 0x45e2b3
test esi, esi
jle 0x45e444
mov edi, dword [rsp + 0x60]
cmp edi, 0xffffffff
je 0x45e444
cmp esi, 1
mov ebx, 0xffffffff
jne 0x45e388
mov edx, edi
mov rcx, r14
call fcn.0045c830
cmp ebx, 0xffffffff
mov dword [rsp + 0x68], 0
jne 0x45e3e2
mov edx, dword [rsp + 0x9c]
mov rcx, r14
mov rbp, qword [rsp + 0x548]
mov rsi, qword [rsp + 0x20]
mov r12, qword [rsp + 0x28]
call fcn.0045c5b0
mov eax, dword [rsp + 0xa4]
test eax, eax
jle 0x45e689
movsxd rdx, dword [rsp + 0x1b0]
mov ecx, dword [rsp + 0xa0]
lea eax, [rdx + 1]
mov byte [rsp + rdx + 0xb0], cl
cmp eax, 0xfe
mov dword [rsp + 0x1b0], eax
jg 0x45e681
test eax, eax
jle 0x45e4ab
mov rcx, r14
call fcn.0045c550
mov rax, qword [rsi]
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0
mov r8d, 1
call qword [rax + 0x848]
mov rax, qword [rsi]
mov byte [rsp + 0x5f], 0x3b
mov r8d, 1
mov rdx, r12
mov rcx, rbp
call qword [rax + 0x848]
jmp 0x45e558
add ebx, 1
cmp ebx, 0xff
mov dword [rsp + 0x1ec], ebx
jg 0x45e535
movsxd rbx, ebx
lea rax, [rbx + rbx*2]
mov byte [rsp + rax + 0x1f0], cl
movsxd rax, dword [rsp + 0x1ec]
lea rax, [rax + rax*2]
mov byte [rsp + rax + 0x1f1], r10b
movsxd rax, dword [rsp + 0x1ec]
lea rax, [rax + rax*2]
mov byte [rsp + rax + 0x1f2], r12b
mov ebx, dword [rsp + 0x1ec]
jmp 0x45de94
mov rax, qword [rsi]
xor r8d, r8d
lea rdx, str.too_many_colors
mov rcx, qword [rsp + 0x540]
call qword [rax + 0x240]
mov dword [rsp + 0x34], 1
mov eax, dword [rsp + 0x34]
add rsp, 0x4f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, dword [rsp + 0x20]
mov dword [rsp + 0x1ec], 0xffffffff
mov ebx, 0xffffffff
test r9d, r9d
jg 0x45ddff
jmp 0x45dee0
mov rsi, qword [0x00670bd0]
mov dword [rsp + 0x1e8], 0
xor ebx, ebx
lea rdx, str.GIF87a
mov rax, qword [rsi]
mov r9, qword [rax + 0x848]
jmp 0x45dd5d
mov ebx, 0xffffffff
jmp 0x45e340
cmp ebx, 0xffffffff
je 0x45e444
mov r10d, esi
add r10d, 1
mov dword [rsp + 0x68], r10d
jmp 0x45e3fe
mov eax, dword [rsp + 0x1c8]
mov edi, dword [rsp + 0x1dc]
sub r9d, 1
mov dword [rsp + 0x1c4], r9d
mov dword [rsp + 0x1c0], eax
imul eax, edx
sub edi, eax
movsxd rax, edi
add rcx, rax
mov qword [rsp + 0x1d0], rcx
jmp 0x45e36f
mov r10d, dword [rsp + 0x68]
jmp 0x45e5d6
mov edx, dword [rsp + 0x98]
mov rcx, r14
call fcn.0045c5b0
mov eax, dword [rsp + 0x7c]
mov dword [rsp + 0x80], 0
mov dword [rsp + 0x70], 0
mov dword [rsp + 0x74], 1
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x84], eax
mov eax, dword [rsp + 0x90]
mov dword [rsp + 0x8c], eax
mov edx, esi
mov rcx, r14
call fcn.0045dbb0
jmp 0x45e3d5
mov rcx, r14
call fcn.0045c550
mov eax, dword [rsp + 0x1b0]
jmp 0x45e49f
mov rax, qword [rsi]
mov rdx, r12
mov rcx, rbp
mov byte [rsp + 0x5f], 0x21
mov r8d, 1
call qword [rax + 0x848]
mov rax, qword [rsi]
mov r8d, 7
lea rdx, [0x00639c79]
mov rcx, rbp
call qword [rax + 0x848]
jmp 0x45e093
mov eax, esi
xor r11d, r11d
mov ebp, dword [rsp + 0x94]
cdq
idiv r12d
test edx, edx
mov edi, edx
mov edx, dword [rsp + 0x80]
mov r15d, eax
setne r11b
lea eax, [rax + rdx]
add eax, r11d
cmp eax, ebp
jle 0x45e716
mov r15d, ebp
mov eax, r12d
mov edi, esi
sub r15d, edx
mov edx, ebp
imul eax, r15d
sub edi, eax
mov ecx, edi
call fcn.0045c620
mov r11d, eax
mov edx, ebp
mov ecx, esi
mov dword [rsp + 0x38], r11d
call fcn.0045c620
mov r11d, dword [rsp + 0x38]
add r11d, r15d
cmp eax, r11d
jl 0x45e624
test r15d, r15d
mov dword [rsp + 0x8c], ebp
jg 0x45e748
jmp 0x45e760
mov r12d, dword [rsp + 0x70]
mov edx, dword [rsp + 0x64]
mov rcx, r14
add edx, r12d
sub edx, 2
call fcn.0045c830
sub r15d, 1
jne 0x45e743
test edi, edi
je 0x45e786
mov edx, dword [rsp + 0x74]
test edx, edx
jne 0x45e802
cmp edi, 1
je 0x45e7f4
add edi, dword [rsp + 0x64]
mov rcx, r14
mov edx, edi
sub edx, 2
call fcn.0045c830
mov eax, dword [rsp + 0x90]
cmp eax, dword [rsp + 0x80]
mov dword [rsp + 0x8c], eax
jg 0x45e3d5
mov edx, dword [rsp + 0x98]
mov rcx, r14
call fcn.0045c5b0
mov eax, dword [rsp + 0x7c]
mov dword [rsp + 0x80], 0
mov dword [rsp + 0x70], 0
mov dword [rsp + 0x74], 1
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x84], eax
mov eax, dword [rsp + 0x90]
mov dword [rsp + 0x8c], eax
jmp 0x45e3d5
mov edx, dword [rsp + 0x60]
mov rcx, r14
call fcn.0045c830
jmp 0x45e786
mov edx, edi
mov rcx, r14
call fcn.0045dbb0
jmp 0x45e786