Function at 0x14001b200
Capabilities:
Compute adler32 checksum

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x28
cmp byte [0x14032e0ac], 0
je 0x14001b2e0
lea rdi, [0x14032e0ac]
mov rbx, 0xffffffffffffffff
inc rbx
cmp byte [rdi + rbx], 0
jne 0x14001b224
cmp rbx, 0x100000
jb 0x14001b24f
mov r8d, 0x34d
lea rdx, [0x14044cca0]
lea rcx, str.len___UPX_RSIZE_MAX_STR
call fcn.1402f4398
mov r8d, 5
lea rdx, str.ERROR
mov rcx, rdi
call fcn.1402f49a0
test eax, eax
jne 0x14001b28f
cmp rbx, 5
je 0x14001b2ba
cmp rbx, 6
je 0x14001b2c0
mov r8d, 0x53b
lea rdx, [0x1404382e0]
lea rcx, str.revlen__5__revlen__6
call fcn.1402f4398
jmp 0x14001b2ba
cmp rbx, 0xc
je 0x14001b2e0
cmp rbx, 0xd
je 0x14001b2c0
mov r8d, 0x53c
lea rdx, [0x1404382e0]
lea rcx, str.revlen__12__revlen__13
call fcn.1402f4398
cmp rbx, 6
je 0x14001b2c0
cmp rbx, 0xd
jne 0x14001b2e0
cmp byte [rbx + rdi - 1], 0x2b
je 0x14001b2e0
mov r8d, 0x53d
lea rdx, [0x1404382e0]
lea rcx, str.gitrev_revlen_1___
call fcn.1402f4398
call fcn.140275b70
test al, al
jne 0x14001b302
mov r8d, 0x541
lea rdx, [0x1404382e0]
lea rcx, str.TestBELE_LE16_::test__
call fcn.1402f4398
call fcn.140275870
test al, al
jne 0x14001b324
mov r8d, 0x542
lea rdx, [0x1404382e0]
lea rcx, str.TestBELE_LE32_::test__
call fcn.1402f4398
call fcn.140275510
test al, al
jne 0x14001b346
mov r8d, 0x543
lea rdx, [0x1404382e0]
lea rcx, str.TestBELE_LE64_::test__
call fcn.1402f4398
mov ebp, 4
lea rdi, [0x14043a4bf]
mov ebx, 1
xor esi, esi
mov r11d, ebp
mov r9, rdi
mov ecx, ebx
mov r8d, esi
nop dword [rax]
nop dword [rax + rax]
mov edx, 0x15b0
cmp r11d, edx
cmovb edx, r11d
sub r11d, edx
cmp edx, 0x10
jl 0x14001b44c
mov r10d, edx
shr r10, 4
mov eax, r10d
neg eax
shl eax, 4
add edx, eax
nop dword [rax]
movzx eax, byte [r9]
add ecx, eax
movzx eax, byte [r9 + 1]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 2]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 3]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 4]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 5]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 6]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 7]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 8]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 9]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xa]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xb]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xc]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xd]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xe]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xf]
add r8d, ecx
add r9, 0x10
add ecx, eax
add r8d, ecx
sub r10, rbx
jne 0x14001b3a0
test edx, edx
je 0x14001b462
movzx eax, byte [r9]
dec edx
add ecx, eax
inc r9
add r8d, ecx
test edx, edx
jg 0x14001b450
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul r8d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r8d, eax
test r11d, r11d
jne 0x14001b370
shl r8d, 0x10
or r8d, ecx
cmp r8d, 0x9f003f7
je 0x14001b4ba
mov r8d, 0x554
lea rdx, [0x1404382e0]
lea rcx, str.upx_adler32_d__4___0x09f003f7
call fcn.1402f4398
mov r11d, ebp
mov r9, rdi
mov ecx, esi
mov r8d, esi
nop word [rax + rax]
mov edx, 0x15b0
cmp r11d, edx
cmovb edx, r11d
sub r11d, edx
cmp edx, 0x10
jl 0x14001b5ac
mov r10d, edx
shr r10, 4
mov eax, r10d
neg eax
shl eax, 4
add edx, eax
nop dword [rax]
movzx eax, byte [r9]
add ecx, eax
movzx eax, byte [r9 + 1]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 2]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 3]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 4]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 5]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 6]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 7]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 8]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 9]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xa]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xb]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xc]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xd]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xe]
add r8d, ecx
add ecx, eax
movzx eax, byte [r9 + 0xf]
add r8d, ecx
add r9, 0x10
add ecx, eax
add r8d, ecx
sub r10, rbx
jne 0x14001b500
test edx, edx
je 0x14001b5c2
movzx eax, byte [r9]
dec edx
add ecx, eax
inc r9
add r8d, ecx
test edx, edx
jg 0x14001b5b0
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul r8d
shr edx, 0xf
imul eax, edx, 0xffff000f
add r8d, eax
test r11d, r11d
jne 0x14001b4d0
shl r8d, 0x10
or r8d, ecx
cmp r8d, 0x9ec03f6
je 0x14001b61a
mov r8d, 0x555
lea rdx, [0x1404382e0]
lea rcx, str.upx_adler32_d__4__0___0x09ec03f6
call fcn.1402f4398
mov r8, rdi
mov ecx, esi
nop
mov edx, 0x15b0
cmp ebp, edx
cmovb edx, ebp
sub ebp, edx
cmp edx, 0x10
jl 0x14001b6ed
mov r9d, edx
shr r9, 4
mov eax, r9d
neg eax
shl eax, 4
add edx, eax
nop word [rax + rax]
movzx eax, byte [r8]
add ebx, eax
movzx eax, byte [r8 + 1]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 2]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 3]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 4]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 5]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 6]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 7]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 8]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 9]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xa]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xb]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xc]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xd]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xe]
add ecx, ebx
add ebx, eax
movzx eax, byte [r8 + 0xf]
add ecx, ebx
add r8, 0x10
add ebx, eax
add ecx, ebx
sub r9, 1
jne 0x14001b650
test edx, edx
je 0x14001b702
movzx eax, byte [r8]
dec edx
add ebx, eax
inc r8
add ecx, ebx
test edx, edx
jg 0x14001b6f1
mov eax, 0x80078071
mul ebx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ebx, eax
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
test ebp, ebp
jne 0x14001b620
shl ecx, 0x10
or ecx, ebx
cmp ecx, 0x9f003f7
je 0x14001b754
mov r8d, 0x556
lea rdx, [0x1404382e0]
lea rcx, str.upx_adler32_d__4__1___0x09f003f7
call fcn.1402f4398
mov rax, qword [0x14045ff30]
lea rcx, [0x14045ff30]
mov rdx, rdi
call qword [rax + 0x18]
cmp eax, 0xfffe
je 0x14001b788
mov r8d, 0x559
lea rdx, [0x1404382e0]
lea rcx, str.bele__get16_d___0xfffe
call fcn.1402f4398
mov rax, qword [0x14045ff30]
lea rcx, [0x14045ff30]
mov rdx, rdi
call qword [rax + 0x20]
cmp eax, 0xfffefd
je 0x14001b7bc
mov r8d, 0x55c
lea rdx, [0x1404382e0]
lea rcx, str.bele__get24_d___0xfffefd
call fcn.1402f4398
mov rax, qword [0x14045ff30]
lea rcx, [0x14045ff30]
mov rdx, rdi
call qword [rax + 0x28]
cmp eax, 0xfffefdfc
je 0x14001b7f0
mov r8d, 0x55f
lea rdx, [0x1404382e0]
lea rcx, str.bele__get32_d___0xfffefdfc
call fcn.1402f4398
movzx eax, word [0x14043a4bf]
mov ebx, 0xfeff
cmp ax, bx
je 0x14001b81a
mov r8d, 0x562
lea rdx, [0x1404382e0]
lea rcx, str.get_le16_d___0xfeff
call fcn.1402f4398
mov rax, qword [0x14045ff38]
lea rcx, [0x14045ff38]
mov rdx, rdi
call qword [rax + 0x18]
cmp eax, ebx
je 0x14001b84b
mov r8d, 0x563
lea rdx, [0x1404382e0]
lea rcx, str.bele__get16_d___0xfeff
call fcn.1402f4398
movzx eax, word [0x14043a4bf]
mov ecx, eax
and eax, 0x8000
neg eax
or eax, ecx
cmp eax, 0xfffffeff
je 0x14001b87d
mov r8d, 0x564
lea rdx, [0x1404382e0]
lea rcx, str.get_le16_signed_d____257
call fcn.1402f4398
mov rax, qword [0x14045ff38]
lea rcx, [0x14045ff38]
mov rdx, rdi
call qword [rax + 0x20]
cmp eax, 0xfdfeff
je 0x14001b8b1
mov r8d, 0x566
lea rdx, [0x1404382e0]
lea rcx, str.bele__get24_d___0xfdfeff
call fcn.1402f4398
mov eax, dword [0x14043a4bf]
cmp eax, 0xfcfdfeff
je 0x14001b8d7
mov r8d, 0x568
lea rdx, [0x1404382e0]
lea rcx, str.get_le32_d___0xfcfdfeff
call fcn.1402f4398
mov rax, qword [0x14045ff38]
lea rcx, [0x14045ff38]
mov rdx, rdi
call qword [rax + 0x28]
cmp eax, 0xfcfdfeff
je 0x14001b90b
mov r8d, 0x569
lea rdx, [0x1404382e0]
lea rcx, str.bele__get32_d___0xfcfdfeff
call fcn.1402f4398
mov eax, dword [0x14043a4bf]
mov ecx, eax
and ecx, 0x80000000
neg ecx
or ecx, eax
cmp ecx, 0xfcfdfeff
je 0x14001b93e
mov r8d, 0x56a
lea rdx, [0x1404382e0]
lea rcx, str.get_le32_signed_d____50462977
call fcn.1402f4398
mov rax, qword [0x14043a4bf]
movabs rdx, 0x8000000000000000
mov rcx, rax
and rcx, rdx
neg rcx
or rcx, rax
movabs rax, 0xf8f9fafbfcfdfeff
cmp rcx, rax
je 0x14001b983
mov r8d, 0x56b
lea rdx, [0x1404382e0]
lea rcx, str.get_le64_signed_d___UPX_INT64_C__506097522914230529_
call fcn.1402f4398
mov word [rsp + 0x50], bx
mov rcx, rdi
mov edx, esi
movzx eax, bx
cmp byte [rcx], 0xff
jne 0x14001b99a
cmp word [rcx], ax
je 0x14001b9a5
inc edx
inc rcx
test edx, edx
jle 0x14001b990
jmp 0x14001b9a9
test edx, edx
je 0x14001b9c2
mov r8d, 0x56c
lea rdx, [0x1404382e0]
lea rcx, str.find_be16_d__2__0xfffe___0
call fcn.1402f4398
mov word [rsp + 0x58], bx
mov rcx, rdi
movzx eax, word [rsp + 0x58]
mov edx, esi
cmp byte [rcx], al
jne 0x14001b9da
cmp word [rcx], ax
je 0x14001b9e5
inc edx
inc rcx
test edx, edx
jle 0x14001b9d1
jmp 0x14001b9e9
test edx, edx
je 0x14001ba02
mov r8d, 0x56d
lea rdx, [0x1404382e0]
lea rcx, str.find_le16_d__2__0xfeff___0
call fcn.1402f4398
mov dword [rsp + 0x60], 0xfcfdfeff
mov rcx, rdi
mov eax, dword [rsp + 0x60]
mov edx, esi
cmp byte [rcx], 0xff
jne 0x14001ba1c
cmp dword [rcx], eax
je 0x14001ba27
inc edx
inc rcx
test edx, edx
jle 0x14001ba13
jmp 0x14001ba2b
test edx, edx
je 0x14001ba44
mov r8d, 0x56e
lea rdx, [0x1404382e0]
lea rcx, str.find_be32_d__4__0xfffefdfc___0
call fcn.1402f4398
mov dword [rsp + 0x68], 0xfcfdfeff
mov eax, dword [rsp + 0x68]
cmp byte [rdi], al
jne 0x14001ba58
cmp dword [rdi], eax
je 0x14001ba63
inc esi
inc rdi
test esi, esi
jle 0x14001ba50
jmp 0x14001ba67
test esi, esi
je 0x14001ba80
mov r8d, 0x56f
lea rdx, [0x1404382e0]
lea rcx, str.find_le32_d__4__0xfcfdfeff___0
call fcn.1402f4398
add rsp, 0x28
pop rdi
pop rsi
pop rbp
pop rbx
ret