Function at 0x2554c0
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
mov r8, rcx
mov r11, qword [r8 + 0x28]
mov rbx, qword [r8]
mov edi, dword [r8 + 8]
add edi, 0xfffffffb
add rdi, rbx
mov r13, qword [r8 + 0x10]
mov r10d, dword [r8 + 0x18]
sub edx, r10d
mov rax, r13
sub rax, rdx
mov qword [rsp + 0x60], rax
add r10d, 0xfffffeff
add r10, r13
mov esi, dword [r11 + 0x3c]
mov rdx, qword [r11 + 0x40]
mov cl, byte [r11 + 0x70]
mov eax, 1
mov ebp, 1
shl ebp, cl
dec ebp
mov dword [rsp + 0x84], ebp
mov cl, byte [r11 + 0x74]
shl eax, cl
dec eax
mov dword [rsp + 0x80], eax
mov eax, esi
not eax
mov dword [rsp + 0x74], eax
lea eax, [rsi - 1]
mov ecx, esi
and ecx, 0x1f
mov qword [rsp + 0xa0], rcx
neg rcx
lea rcx, [rax + rcx + 1]
lea rbp, [rdx + rax + 1]
mov qword [rsp + 0xa8], rbp
lea rbp, [rax + 2]
mov qword [rsp + 0xb8], rbp
inc rax
mov qword [rsp + 0xb0], rax
mov eax, esi
sub eax, ecx
mov dword [rsp + 0x70], eax
mov eax, dword [r11 + 0x34]
mov ebp, dword [r11 + 0x38]
mov dword [rsp + 0x7c], ebp
mov r14d, dword [r11 + 0x48]
mov r9d, dword [r11 + 0x4c]
mov r15, qword [r11 + 0x60]
mov r12, qword [r11 + 0x68]
mov qword [rsp + 0xc0], rax
lea eax, [rsi + rax]
mov dword [rsp + 0x78], eax
lea rax, [rdx + 1]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x98], rcx
lea rax, [rdx + rcx]
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x40], rdx
lea rax, [rdx + 0x10]
mov qword [rsp + 0x58], rax
jmp 0x255e60
movzx eax, al
movzx ebp, dx
and eax, 0xf
je 0x255618
cmp r9d, eax
jae 0x255602
movzx edx, byte [rbx]
inc rbx
mov ecx, r9d
shl edx, cl
add r14d, edx
add r9d, 8
mov edx, 1
mov ecx, eax
shl edx, cl
dec edx
and edx, r14d
add ebp, edx
shr r14d, cl
sub r9d, eax
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x38], r11
cmp r9d, 0xe
mov dword [rsp], ebp
ja 0x255652
movzx eax, byte [rbx]
mov ecx, r9d
shl eax, cl
add eax, r14d
lea ecx, [r9 + 8]
movzx r14d, byte [rbx + 1]
add rbx, 2
mov r11, rbx
shl r14d, cl
add r14d, eax
add r9d, 0x10
jmp 0x255655
mov r11, rbx
mov eax, r14d
and eax, dword [rsp + 0x80]
movzx ecx, byte [r12 + rax*4 + 1]
movzx ebx, word [r12 + rax*4 + 2]
shr r14d, cl
sub r9d, ecx
movzx eax, byte [r12 + rax*4]
test al, 0x10
mov ebp, r14d
mov edx, r9d
jne 0x2556b3
test al, 0x40
jne 0x255f19
movzx ebx, bx
mov esi, 1
mov ecx, eax
shl esi, cl
dec esi
and esi, ebp
add esi, ebx
movzx ecx, byte [r12 + rsi*4 + 1]
movzx ebx, word [r12 + rsi*4 + 2]
shr ebp, cl
sub edx, ecx
movzx eax, byte [r12 + rsi*4]
test al, 0x10
je 0x255680
movzx ecx, bx
mov qword [rsp + 0x48], rcx
and eax, 0xf
cmp edx, eax
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x28], rdi
jae 0x2556fc
mov rbx, r11
movzx r14d, byte [rbx]
mov ecx, edx
shl r14d, cl
add r14d, ebp
lea r9d, [rdx + 8]
cmp r9d, eax
jae 0x255707
movzx ebp, byte [rbx + 1]
add rbx, 2
mov ecx, r9d
shl ebp, cl
add r14d, ebp
add edx, 0x10
mov r9d, edx
jmp 0x25570a
mov r9d, edx
mov r14d, ebp
mov rbx, r11
jmp 0x25570a
inc rbx
mov rsi, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x48]
mov edi, 1
mov ecx, eax
shl edi, cl
dec edi
and edi, r14d
lea edx, [rdi + rdx]
shr r14d, cl
sub r9d, eax
mov ebp, r13d
sub ebp, dword [rsp + 0x60]
mov r10d, edx
sub r10d, ebp
jbe 0x25596d
mov qword [rsp + 0x18], rdi
cmp r10d, dword [rsp + 0x7c]
mov r11, qword [rsp + 0x38]
jbe 0x25575d
cmp dword [r11 + 0x1be0], 0
jne 0x255f91
test esi, esi
mov qword [rsp + 8], r8
je 0x2559f3
mov r8d, esi
sub r8d, r10d
jae 0x255af9
mov eax, dword [rsp + 0x78]
mov ebp, eax
sub ebp, r10d
mov rax, qword [rsp + 0x40]
lea rax, [rax + rbp]
sub r10d, esi
mov edi, dword [rsp]
mov ecx, edi
sub ecx, r10d
jbe 0x255c1e
mov dword [rsp], ecx
mov rdi, qword [rsp + 0x18]
add edi, dword [rsp + 0x74]
add edi, dword [rsp + 0x48]
mov ecx, r13d
sub ecx, dword [rsp + 0x60]
sub edi, ecx
lea rsi, [rdi + 1]
cmp rsi, 0x20
mov dword [rsp + 0x14], edx
mov qword [rsp + 0x18], rdi
jb 0x2557e6
lea rcx, [rbp + rdi]
add rcx, qword [rsp + 0x68]
cmp r13, rcx
jae 0x255d45
lea rcx, [r13 + rdi + 1]
cmp rax, rcx
jae 0x255d45
mov rcx, r13
mov r8, qword [rsp + 8]
mov edi, dword [rsp]
lea ebp, [r10 - 1]
mov esi, r10d
and esi, 7
je 0x255812
neg esi
nop
movzx edx, byte [rax]
inc rax
mov byte [rcx], dl
inc rcx
dec r10d
inc esi
jne 0x255800
cmp ebp, 7
jb 0x255864
nop word [rax + rax]
movzx edx, byte [rax]
mov byte [rcx], dl
movzx edx, byte [rax + 1]
mov byte [rcx + 1], dl
movzx edx, byte [rax + 2]
mov byte [rcx + 2], dl
movzx edx, byte [rax + 3]
mov byte [rcx + 3], dl
movzx edx, byte [rax + 4]
mov byte [rcx + 4], dl
movzx edx, byte [rax + 5]
mov byte [rcx + 5], dl
movzx edx, byte [rax + 6]
mov byte [rcx + 6], dl
movzx edx, byte [rax + 7]
mov byte [rcx + 7], dl
add rax, 8
add rcx, 8
add r10d, 0xfffffff8
jne 0x255820
mov rax, qword [rsp + 0x18]
lea rax, [r13 + rax + 1]
mov ecx, edi
mov rsi, qword [rsp + 0x20]
sub ecx, esi
jbe 0x255cd4
mov rdx, qword [rsp + 0xb8]
lea r8, [r13 + rdx]
cmp qword [rsp + 0xb0], 0x20
mov rdi, qword [rsp + 0x28]
mov r10, qword [rsp + 0x30]
mov qword [rsp + 0x50], rbx
jb 0x2558c6
cmp rax, qword [rsp + 0xa8]
jae 0x255e05
mov rdx, qword [rsp + 0x18]
lea rdx, [r8 + rdx]
cmp qword [rsp + 0x40], rdx
jae 0x255e05
mov ebp, esi
mov rdx, qword [rsp + 0x40]
mov r13, r8
lea r8d, [rbp - 1]
mov esi, ebp
and esi, 7
je 0x2558f1
neg esi
nop dword [rax]
movzx ebx, byte [rdx]
inc rdx
mov byte [rax], bl
inc rax
dec ebp
inc esi
jne 0x2558e0
cmp r8d, 7
mov rsi, qword [rsp + 0x20]
mov r8, r13
jb 0x255943
nop
movzx ebx, byte [rdx]
mov byte [rax], bl
movzx ebx, byte [rdx + 1]
mov byte [rax + 1], bl
movzx ebx, byte [rdx + 2]
mov byte [rax + 2], bl
movzx ebx, byte [rdx + 3]
mov byte [rax + 3], bl
movzx ebx, byte [rdx + 4]
mov byte [rax + 4], bl
movzx ebx, byte [rdx + 5]
mov byte [rax + 5], bl
movzx ebx, byte [rdx + 6]
mov byte [rax + 6], bl
movzx ebx, byte [rdx + 7]
mov byte [rax + 7], bl
add rdx, 8
add rax, 8
add ebp, 0xfffffff8
jne 0x255900
add r8, qword [rsp + 0x18]
mov edx, dword [rsp + 0x14]
mov rax, r8
sub rax, rdx
mov r13, r8
mov r8, qword [rsp + 8]
mov rbx, qword [rsp + 0x50]
cmp ecx, 3
jae 0x255c70
jmp 0x255c97
mov r11, rbx
mov esi, edx
mov edx, dword [rsp]
mov rbp, r13
sub rbp, rsi
neg rsi
add rbp, 2
xor ebx, ebx
xor ecx, ecx
mov rdi, qword [rsp + 0x28]
nop dword [rax + rax]
movzx eax, byte [rbp + rcx - 2]
mov byte [r13 + rcx], al
movzx eax, byte [rbp + rcx - 1]
mov byte [r13 + rcx + 1], al
movzx eax, byte [rbp + rcx]
mov byte [r13 + rcx + 2], al
add rcx, 3
add rbx, 0xfffffffffffffffd
lea eax, [rbx + rdx]
cmp eax, 2
ja 0x255990
cmp dword [rsp], ecx
mov r10, qword [rsp + 0x30]
jne 0x2559d0
add r13, rcx
jmp 0x255c33
dec rdx
lea rax, [r13 + rsi + 2]
mov al, byte [rax + rcx - 2]
mov byte [r13 + rcx], al
cmp edx, ecx
jne 0x255c22
lea r13, [r13 + rcx + 1]
jmp 0x255c33
mov dword [rsp + 0x14], edx
mov r8, qword [rsp + 0xc0]
sub r8d, r10d
mov rax, qword [rsp + 0x40]
lea rax, [rax + r8]
mov edx, dword [rsp]
mov ecx, edx
sub ecx, r10d
jbe 0x255c4e
mov qword [rsp + 0x50], rbx
mov rsi, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x18]
lea edx, [rdx + rsi - 1]
mov ebx, r13d
sub ebx, dword [rsp + 0x60]
mov edi, edx
sub edi, ebx
sub edx, ebp
mov qword [rsp], rdx
lea r11, [rdx + 1]
cmp r11, 0x20
jb 0x255a72
mov rdx, qword [rsp + 0x18]
lea ebx, [rdx + rsi - 1]
sub ebx, ebp
lea rbp, [r8 + rbx]
add rbp, qword [rsp + 0x68]
cmp r13, rbp
jae 0x255ce3
lea rbp, [r13 + rbx + 1]
cmp rax, rbp
jae 0x255ce3
mov rbx, r13
mov r11, qword [rsp + 0x38]
mov r8, qword [rsp + 8]
lea ebp, [r10 - 1]
mov esi, r10d
and esi, 7
je 0x255aa2
neg esi
nop dword [rax]
movzx edx, byte [rax]
inc rax
mov byte [rbx], dl
inc rbx
dec r10d
inc esi
jne 0x255a90
cmp ebp, 7
jb 0x255bf4
nop dword [rax + rax]
movzx edx, byte [rax]
mov byte [rbx], dl
movzx edx, byte [rax + 1]
mov byte [rbx + 1], dl
movzx edx, byte [rax + 2]
mov byte [rbx + 2], dl
movzx edx, byte [rax + 3]
mov byte [rbx + 3], dl
movzx edx, byte [rax + 4]
mov byte [rbx + 4], dl
movzx edx, byte [rax + 5]
mov byte [rbx + 5], dl
movzx edx, byte [rax + 6]
mov byte [rbx + 6], dl
movzx edx, byte [rax + 7]
mov byte [rbx + 7], dl
add rax, 8
add rbx, 8
add r10d, 0xfffffff8
jne 0x255ab0
jmp 0x255bf4
mov rax, qword [rsp + 0x40]
lea rax, [rax + r8]
mov edi, dword [rsp]
mov ecx, edi
sub ecx, r10d
jbe 0x255c1e
mov dword [rsp + 0x14], edx
mov qword [rsp + 0x50], rbx
mov rbx, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x18]
lea edi, [rdx + rbx - 1]
mov edx, r13d
sub edx, dword [rsp + 0x60]
mov esi, edi
sub esi, edx
mov qword [rsp], rsi
sub edi, ebp
mov qword [rsp + 0x88], rdi
lea rsi, [rdi + 1]
cmp rsi, 0x20
jb 0x255b75
mov rdx, qword [rsp + 0x18]
lea ebx, [rdx + rbx - 1]
sub ebx, ebp
lea rdx, [r8 + rbx]
add rdx, qword [rsp + 0x68]
cmp r13, rdx
jae 0x255da6
lea rdx, [r13 + rbx + 1]
cmp rax, rdx
jae 0x255da6
mov rbx, r13
mov r8, qword [rsp + 8]
mov rdi, qword [rsp]
lea ebp, [r10 - 1]
mov esi, r10d
and esi, 7
je 0x255ba2
neg esi
nop
movzx edx, byte [rax]
inc rax
mov byte [rbx], dl
inc rbx
dec r10d
inc esi
jne 0x255b90
cmp ebp, 7
jb 0x255bf4
nop word [rax + rax]
movzx edx, byte [rax]
mov byte [rbx], dl
movzx edx, byte [rax + 1]
mov byte [rbx + 1], dl
movzx edx, byte [rax + 2]
mov byte [rbx + 2], dl
movzx edx, byte [rax + 3]
mov byte [rbx + 3], dl
movzx edx, byte [rax + 4]
mov byte [rbx + 4], dl
movzx edx, byte [rax + 5]
mov byte [rbx + 5], dl
movzx edx, byte [rax + 6]
mov byte [rbx + 6], dl
movzx edx, byte [rax + 7]
mov byte [rbx + 7], dl
add rax, 8
add rbx, 8
add r10d, 0xfffffff8
jne 0x255bb0
lea r13, [r13 + rdi + 1]
mov edx, dword [rsp + 0x14]
mov rax, r13
sub rax, rdx
mov rdi, qword [rsp + 0x28]
mov r10, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x20]
cmp ecx, 3
jae 0x255c70
jmp 0x255c97
mov ecx, edi
jmp 0x255c50
add rsi, r13
mov al, byte [rcx + rsi + 1]
mov byte [r13 + rcx + 1], al
lea r13, [r13 + rcx + 2]
mov rbx, r11
mov r11, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x20]
cmp r13, r10
jb 0x255efc
jmp 0x255f3b
mov ecx, edx
mov r8, qword [rsp + 8]
mov rdi, qword [rsp + 0x28]
mov r10, qword [rsp + 0x30]
cmp ecx, 3
jb 0x255c97
nop word cs:[rax + rax]
movzx edx, byte [rax]
mov byte [r13], dl
movzx edx, byte [rax + 1]
mov byte [r13 + 1], dl
movzx edx, byte [rax + 2]
add rax, 3
mov byte [r13 + 2], dl
add r13, 3
add ecx, 0xfffffffd
cmp ecx, 2
ja 0x255c70
test ecx, ecx
je 0x255ef7
mov dl, byte [rax]
mov byte [r13], dl
cmp ecx, 1
jne 0x255cbb
inc r13
cmp r13, r10
jb 0x255efc
jmp 0x255f3b
mov al, byte [rax + 1]
mov byte [r13 + 1], al
add r13, 2
cmp r13, r10
jb 0x255efc
jmp 0x255f3b
mov r13, rax
mov ecx, edi
mov rax, qword [rsp + 0x40]
jmp 0x255c55
mov rdx, qword [rsp]
inc edx
and edx, 0x1f
sub r11, rdx
lea rbx, [r13 + r11]
sub r10d, r11d
add rax, r11
add r8, qword [rsp + 0x58]
lea rsi, [r13 + 0x10]
nop word cs:[rax + rax]
movups xmm0, xmmword [r8 - 0x10]
movups xmm1, xmmword [r8]
movups xmmword [rsi - 0x10], xmm0
movups xmmword [rsi], xmm1
add r8, 0x20
add rsi, 0x20
add r11, 0xffffffffffffffe0
jne 0x255d10
test edx, edx
mov r11, qword [rsp + 0x38]
mov r8, qword [rsp + 8]
jne 0x255a7f
jmp 0x255bf4
mov rdx, rbx
lea r8d, [rdi + 1]
and r8d, 0x1f
sub rsi, r8
lea rcx, [r13 + rsi]
sub r10d, esi
add rax, rsi
add rbp, qword [rsp + 0x58]
lea rbx, [r13 + 0x10]
nop word [rax + rax]
movups xmm0, xmmword [rbp - 0x10]
movups xmm1, xmmword [rbp]
movups xmmword [rbx - 0x10], xmm0
movups xmmword [rbx], xmm1
add rbp, 0x20
add rbx, 0x20
add rsi, 0xffffffffffffffe0
jne 0x255d70
test r8d, r8d
mov r8, qword [rsp + 8]
mov rbx, rdx
mov edi, dword [rsp]
jne 0x2557f1
jmp 0x255864
mov rdx, qword [rsp + 0x88]
inc edx
and edx, 0x1f
sub rsi, rdx
lea rbx, [r13 + rsi]
sub r10d, esi
add rax, rsi
add r8, qword [rsp + 0x58]
lea rbp, [r13 + 0x10]
nop word [rax + rax]
movups xmm0, xmmword [r8 - 0x10]
movups xmm1, xmmword [r8]
movups xmmword [rbp - 0x10], xmm0
movups xmmword [rbp], xmm1
add r8, 0x20
add rbp, 0x20
add rsi, 0xffffffffffffffe0
jne 0x255dd0
test edx, edx
mov r8, qword [rsp + 8]
mov rdi, qword [rsp]
jne 0x255b81
jmp 0x255bf4
mov rbp, qword [rsp + 0x98]
add rax, rbp
mov rdx, qword [rsp + 0x18]
lea rdx, [r13 + rdx + 0x11]
mov rbx, qword [rsp + 0x58]
movups xmm0, xmmword [rbx - 0x10]
movups xmm1, xmmword [rbx]
movups xmmword [rdx - 0x10], xmm0
movups xmmword [rdx], xmm1
add rbx, 0x20
add rdx, 0x20
add rbp, 0xffffffffffffffe0
jne 0x255e1f
cmp dword [rsp + 0xa0], 0
mov edx, dword [rsp + 0x70]
mov ebp, edx
mov rdx, qword [rsp + 0x90]
jne 0x2558cd
jmp 0x255943
cmp r9d, 0xe
ja 0x255e88
movzx eax, byte [rbx]
mov ecx, r9d
shl eax, cl
add eax, r14d
lea ecx, [r9 + 8]
movzx r14d, byte [rbx + 1]
add rbx, 2
shl r14d, cl
add r14d, eax
add r9d, 0x10
mov edx, r14d
and edx, dword [rsp + 0x84]
mov al, byte [r15 + rdx*4]
movzx ecx, byte [r15 + rdx*4 + 1]
movzx edx, word [r15 + rdx*4 + 2]
jmp 0x255ed4
movzx edx, dx
mov ebp, 1
mov ecx, eax
shl ebp, cl
dec ebp
and ebp, r14d
add ebp, edx
movzx eax, byte [r15 + rbp*4]
movzx ecx, byte [r15 + rbp*4 + 1]
movzx edx, word [r15 + rbp*4 + 2]
shr r14d, cl
sub r9d, ecx
test al, al
je 0x255ef0
test al, 0x10
jne 0x2555e0
test al, 0x40
je 0x255eb0
jmp 0x255f07
mov byte [r13], dl
inc r13
cmp r13, r10
jae 0x255f3b
cmp rbx, rdi
jb 0x255e60
jmp 0x255f3b
mov ecx, 0x3f3f
test al, 0x20
jne 0x255f37
lea rax, str.invalid_literal_length_code
jmp 0x255f2e
mov r9d, edx
mov r14d, ebp
mov rbx, r11
mov r11, qword [rsp + 0x38]
lea rax, str.invalid_distance_code
mov qword [r8 + 0x20], rax
mov ecx, 0x3f51
mov dword [r11 + 8], ecx
mov eax, r9d
shr eax, 3
sub rbx, rax
and r9d, 7
mov eax, 1
mov ecx, r9d
shl eax, cl
dec eax
and eax, r14d
mov qword [r8], rbx
mov qword [r8 + 0x10], r13
add edi, 5
sub edi, ebx
mov dword [r8 + 8], edi
add r10d, 0x101
sub r10d, r13d
mov dword [r8 + 0x18], r10d
mov dword [r11 + 0x48], eax
mov dword [r11 + 0x4c], r9d
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, str.invalid_distance_too_far_back
mov rdi, qword [rsp + 0x28]
mov r10, qword [rsp + 0x30]
jmp 0x255f2e