Function at 0x62e50f50
Capabilities:
Encode data using base64
Inspect section memory permissions

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [esp + 0x70]
test eax, eax
je 0x62e515e8
mov ebp, dword [esp + 0x74]
test ebp, ebp
js 0x62e515a0
mov edi, dword [esp + 0x78]
test edi, edi
je 0x62e51618
mov eax, dword [esp + 0x78]
mov ebx, dword [eax]
cmp ebx, dword [esp + 0x74]
jae 0x62e51580
mov esi, dword [esp + 0x7c]
test esi, esi
je 0x62e51008
mov ecx, dword [esp + 0x80]
test ecx, ecx
js 0x62e51638
cmp byte [esp + 0x84], 0x40
movzx eax, byte [esp + 0x84]
je 0x62e515c0
cmp eax, 0x4c
je 0x62e51570
test eax, eax
je 0x62e51028
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_unsupported_base64_variant.
mov dword [esp + 8], 8
mov eax, dword [esp + 0x88]
mov dword [esp + 4], 0x61
mov dword [esp], eax
call dbg.libcerror_error_set
mov eax, 0xffffffff
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], 0x62ec0d88
mov dword [esp + 8], 1
jmp 0x62e50fdd
mov byte [esp + 0x39], 0
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x84]
and edi, 0xf000000
and eax, 0xe000000
mov dword [esp + 0x34], edi
cmp eax, 0x2000000
je 0x62e51608
xor esi, esi
cmp edi, 0x1000000
jne 0x62e50fc5
mov ebp, dword [esp + 0x84]
and ebp, 0xf0000000
cmp ebp, 0x20000000
je 0x62e5122c
ja 0x62e51240
test ebp, ebp
jne 0x62e51220
mov dword [esp + 0x30], 1
mov edx, 0xaaaaaaab
mov edi, dword [esp + 0x80]
mov eax, edx
mul dword [esp + 0x80]
shr edx, 1
lea eax, [edx + edx*2]
lea ecx, [edx*4]
sub edi, eax
je 0x62e510c4
mov edx, esi
test dl, dl
je 0x62e51778
add ecx, 4
movzx eax, byte [esp + 0x39]
add ecx, 1
test al, al
je 0x62e510e1
movzx esi, al
xor edx, edx
mov eax, ecx
div esi
cmp edx, 1
sbb eax, 0xffffffff
add ecx, eax
imul ecx, dword [esp + 0x30]
cmp dword [esp + 0x74], ecx
jb 0x62e51830
lea eax, [ebp - 0x30000000]
mov edx, dword [esp + 0x80]
xor esi, esi
xor ecx, ecx
and eax, 0xefffffff
mov dword [esp + 0x44], eax
test edx, edx
je 0x62e513dd
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x80]
lea esi, [esi]
mov eax, dword [esp + 0x7c]
lea edx, [esi + 1]
movzx eax, byte [eax + esi]
shl eax, 0x10
mov edi, eax
cmp ecx, edx
jbe 0x62e51260
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + esi + 1]
shl edx, 8
or edi, edx
lea edx, [esi + 2]
cmp ecx, edx
jbe 0x62e51a6a
movzx edx, byte [eax + esi + 2]
mov byte [esp + 0x3a], 0
add esi, 3
or edi, edx
cmp dword [esp + 0x74], ebx
jbe 0x62e51271
mov edx, dword [esp + 0x84]
and edx, 0xf0000
cmp edx, 0x10000
je 0x62e512a8
cmp edx, 0x20000
jne 0x62e511b8
mov dword [esp + 0x2c], str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__
mov eax, dword [esp + 0x34]
cmp eax, 0x2000000
je 0x62e51560
cmp eax, 0x3000000
je 0x62e512b8
cmp eax, 0x1000000
je 0x62e51560
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], str.libuna_base64_triplet_copy_to_base64_stream
mov dword [esp + 0xc], str._s:_unsupported_base64_variant.
mov dword [esp + 8], 8
mov dword [esp + 4], 0x61
mov dword [esp], eax
call dbg.libcerror_error_set
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_unable_to_copy_base64_triplet_to_base64_stream.
mov dword [esp], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0x63
call dbg.libcerror_error_set
mov eax, 0xffffffff
jmp 0x62e50ff9
cmp ebp, 0x10000000
jne 0x62e50fc5
mov dword [esp + 0x30], 2
jmp 0x62e51092
lea eax, [ebp - 0x30000000]
test eax, 0xe0000000
jne 0x62e50fc5
mov dword [esp + 0x30], 4
jmp 0x62e51092
mov byte [esp + 0x3a], 2
mov esi, edx
cmp dword [esp + 0x74], ebx
ja 0x62e5116a
mov dword [esp + 0x10], str.libuna_base64_triplet_copy_to_base64_stream
mov dword [esp + 0xc], str._s:_base64_stream_string_too_small.
mov eax, dword [esp + 0x88]
mov dword [esp + 8], 5
mov dword [esp + 4], 0x61
mov dword [esp], eax
call dbg.libcerror_error_set
jmp 0x62e511e7
mov dword [esp + 0x2c], str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jmp 0x62e51193
mov byte [esp + 0x3b], 0x3d
cmp ebp, 0x20000000
je 0x62e519f4
ja 0x62e514a8
test ebp, ebp
jne 0x62e51420
mov eax, edi
shr eax, 0xc
mov edx, eax
mov eax, edi
and edx, 0x3f
shr eax, 0x12
mov byte [esp + 0x40], dl
lea edx, [ebx + 2]
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x74], edx
jb 0x62e515d0
lea eax, [ebx + 1]
movzx edx, byte [esp + 0x40]
mov dword [esp + 0x40], 1
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x48], al
mov eax, dword [esp + 0x4c]
movzx edx, byte [edx + eax]
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], dl
mov edx, eax
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx + 1], al
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
add ebx, eax
add eax, ebx
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x74], eax
jb 0x62e515d0
cmp byte [esp + 0x3b], 0
setne byte [esp + 0x3c]
cmp byte [esp + 0x3a], 1
movzx edx, byte [esp + 0x3c]
jbe 0x62e51658
test dl, dl
jne 0x62e51658
movzx eax, byte [esp + 0x39]
test al, al
je 0x62e513c2
add dword [esp + 0x28], 4
mov edi, dword [esp + 0x28]
cmp eax, edi
ja 0x62e513c2
cmp ebp, 0x20000000
je 0x62e51760
ja 0x62e513f0
test ebp, ebp
je 0x62e51750
cmp ebp, 0x10000000
jne 0x62e513b6
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov byte [eax + ebx + 1], 0xa
mov dword [esp + 0x28], 0
add ebx, dword [esp + 0x30]
cmp ecx, esi
ja 0x62e51120
cmp byte [esp + 0x39], 0
mov ecx, dword [esp + 0x28]
je 0x62e513dd
test ecx, ecx
jne 0x62e518b0
mov eax, dword [esp + 0x78]
mov dword [eax], ebx
mov eax, 1
jmp 0x62e50ff9
cmp ebp, 0x30000000
je 0x62e51730
cmp ebp, 0x40000000
jne 0x62e513b6
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 3], 0
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx], 0xa
jmp 0x62e513b6
cmp ebp, 0x10000000
jne 0x62e511b8
mov eax, edi
shr eax, 0xc
and eax, 0x3f
mov byte [esp + 0x40], al
mov eax, edi
shr eax, 0x12
mov edx, eax
lea eax, [ebx + 4]
cmp dword [esp + 0x74], eax
jb 0x62e515d0
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov byte [esp + 0x4c], al
lea eax, [ebx + 2]
mov dword [esp + 0x3c], eax
movzx eax, byte [esp + 0x40]
mov edx, eax
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x70]
mov byte [esp + 0x40], al
mov byte [esp + 0x48], al
movzx eax, byte [esp + 0x4c]
mov byte [edx + ebx], 0
mov byte [edx + ebx + 1], al
movzx eax, byte [esp + 0x40]
mov byte [edx + ebx + 2], 0
mov byte [edx + ebx + 3], al
mov dword [esp + 0x40], 2
jmp 0x62e51339
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x62e511b8
mov eax, edi
shr eax, 0xc
and eax, 0x3f
mov byte [esp + 0x40], al
mov eax, edi
shr eax, 0x12
mov edx, eax
lea eax, [ebx + 8]
cmp dword [esp + 0x74], eax
jb 0x62e515d0
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
lea edx, [ebx + 4]
mov dword [esp + 0x3c], edx
movzx edx, byte [esp + 0x40]
mov byte [esp + 0x4c], al
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov byte [esp + 0x48], al
cmp ebp, 0x30000000
je 0x62e51848
cmp ebp, 0x40000000
jne 0x62e51890
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 3], 0
mov edx, eax
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 1], 0
movzx eax, byte [esp + 0x4c]
mov byte [edx + ebx], al
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x3c]
mov byte [eax + ebx + 7], 0
mov byte [eax + ebx + 6], 0
mov byte [eax + ebx + 5], 0
mov ebx, eax
movzx eax, byte [esp + 0x48]
mov byte [ebx + edx], al
mov dword [esp + 0x40], 4
jmp 0x62e51339
mov byte [esp + 0x3b], 0
jmp 0x62e512bd
mov byte [esp + 0x39], 0x4c
jmp 0x62e5102d
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_base64_stream_string_too_small.
mov dword [esp + 8], 5
jmp 0x62e50fdd
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_invalid_base64_stream_size_value_exceeds_maximum.
mov dword [esp + 8], 4
jmp 0x62e50fdd
mov byte [esp + 0x39], 0x40
jmp 0x62e5102d
mov dword [esp + 0x10], str.libuna_base64_triplet_copy_to_base64_stream
mov dword [esp + 0xc], str._s:_base64_stream_is_too_small.
jmp 0x62e51281
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_invalid_base64_stream.
mov dword [esp + 8], 1
jmp 0x62e50fdd
mov esi, 0x3d
jmp 0x62e51063
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_invalid_base64_stream_index.
mov dword [esp + 8], 1
jmp 0x62e50fdd
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], 0x62ec0da4
mov dword [esp + 8], 4
jmp 0x62e50fdd
cmp byte [esp + 0x3a], 2
je 0x62e51790
mov eax, edi
mov edx, dword [esp + 0x2c]
shr eax, 6
and eax, 0x3f
movzx eax, byte [edx + eax]
mov dword [esp + 0x48], eax
cmp ebp, 0x20000000
je 0x62e51911
ja 0x62e517b0
test ebp, ebp
je 0x62e51930
cmp ebp, 0x10000000
jne 0x62e516ac
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov edx, eax
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx + 1], al
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
add ebx, eax
cmp dword [esp + 0x74], ebx
jb 0x62e515d0
cmp byte [esp + 0x3a], 0
je 0x62e516d2
cmp byte [esp + 0x3c], 0
je 0x62e519eb
cmp byte [esp + 0x3a], 0
movzx edx, byte [esp + 0x3b]
jne 0x62e516eb
mov edx, dword [esp + 0x2c]
mov eax, edi
and eax, 0x3f
movzx edx, byte [edx + eax]
cmp ebp, 0x20000000
je 0x62e5196a
ja 0x62e517f0
test ebp, ebp
je 0x62e519a0
cmp ebp, 0x10000000
jne 0x62e51375
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x4c]
mov byte [edi + eax], 0
mov byte [edi + eax + 1], dl
jmp 0x62e51375
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 3], 0xa
jmp 0x62e513b6
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0xa
jmp 0x62e513b6
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx], 0xa
jmp 0x62e513b6
mov edx, ecx
xor ecx, ecx
cmp edi, 1
setne cl
lea ecx, [ecx + edx + 2]
jmp 0x62e510c4
movzx eax, byte [esp + 0x3b]
movzx edx, byte [esp + 0x48]
test al, al
cmovne edx, eax
mov dword [esp + 0x48], edx
jmp 0x62e51677
cmp ebp, 0x30000000
je 0x62e51948
cmp ebp, 0x40000000
jne 0x62e516ac
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 3], 0
mov edx, eax
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 1], 0
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx], al
jmp 0x62e516ac
cmp ebp, 0x30000000
je 0x62e51980
cmp ebp, 0x40000000
jne 0x62e51375
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x4c]
mov byte [edi + eax + 3], 0
mov byte [edi + eax + 2], 0
mov byte [edi + eax + 1], 0
mov byte [edi + eax], dl
jmp 0x62e51375
mov dword [esp + 0x10], str.libuna_base64_stream_with_index_copy_from_byte_stream
mov dword [esp + 0xc], str._s:_base64_stream_is_too_small.
jmp 0x62e51590
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov edx, eax
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx + 2], 0
movzx eax, byte [esp + 0x4c]
mov byte [edx + ebx + 3], al
mov eax, dword [esp + 0x70]
mov dword [esp + 0x40], 4
mov byte [eax + ebx + 4], 0
mov edx, eax
mov byte [eax + ebx + 5], 0
mov byte [eax + ebx + 6], 0
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx + 7], al
jmp 0x62e51339
cmp ebp, 0x30000000
je 0x62e51865
cmp ebp, 0x40000000
jne 0x62e5154e
jmp 0x62e5152d
cmp ebp, 0x20000000
je 0x62e519b0
ja 0x62e518e4
test ebp, ebp
je 0x62e519c2
cmp ebp, 0x10000000
jne 0x62e518db
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov byte [eax + ebx + 1], 0xa
add ebx, dword [esp + 0x30]
jmp 0x62e513dd
cmp ebp, 0x30000000
je 0x62e519cf
cmp ebp, 0x40000000
jne 0x62e518db
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 3], 0
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx], 0xa
jmp 0x62e518db
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 1], 0
mov edx, eax
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx], al
jmp 0x62e516ac
mov edx, dword [esp + 0x70]
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx], al
jmp 0x62e516ac
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov edx, eax
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx + 2], 0
movzx eax, byte [esp + 0x48]
mov byte [edx + ebx + 3], al
jmp 0x62e516ac
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x4c]
mov byte [edi + eax + 1], 0
mov byte [edi + eax], dl
jmp 0x62e51375
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x4c]
mov byte [edi + eax], 0
mov byte [edi + eax + 1], 0
mov byte [edi + eax + 2], 0
mov byte [edi + eax + 3], dl
jmp 0x62e51375
mov eax, dword [esp + 0x70]
mov edi, dword [esp + 0x4c]
mov byte [eax + edi], dl
jmp 0x62e51375
mov eax, dword [esp + 0x70]
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx], 0xa
jmp 0x62e518db
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0xa
jmp 0x62e518db
mov eax, dword [esp + 0x70]
mov byte [eax + ebx], 0
mov byte [eax + ebx + 1], 0
mov byte [eax + ebx + 2], 0
mov byte [eax + ebx + 3], 0xa
jmp 0x62e518db
mov ebx, dword [esp + 0x4c]
jmp 0x62e51375
mov eax, edi
shr eax, 0xc
and eax, 0x3f
mov byte [esp + 0x40], al
mov eax, edi
shr eax, 0x12
mov edx, eax
lea eax, [ebx + 4]
cmp dword [esp + 0x74], eax
jb 0x62e515d0
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov byte [esp + 0x4c], al
lea eax, [ebx + 2]
mov dword [esp + 0x3c], eax
movzx eax, byte [esp + 0x40]
mov edx, eax
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x70]
mov byte [esp + 0x40], al
mov byte [esp + 0x48], al
movzx eax, byte [esp + 0x4c]
mov byte [edx + ebx + 1], 0
mov byte [edx + ebx], al
movzx eax, byte [esp + 0x40]
mov byte [edx + ebx + 3], 0
mov byte [edx + ebx + 2], al
mov dword [esp + 0x40], 2
jmp 0x62e51339
mov byte [esp + 0x3a], 1
mov esi, edx
jmp 0x62e51160