Function at 0x41c9f5
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, dword [ebp + 8]
mov eax, edx
xor ebx, ebx
mov edi, edx
mov edx, 0
mov dword [ebp - 0x18], ecx
sub eax, 0x1a
mov dword [ebp - 0x1c], edi
cmovb eax, ebx
mov dword [ebp - 0x10], eax
jbe 0x41ccb3
xor edx, edx
mov ebx, 0x20
lea eax, [edx + 0x1a]
cmp eax, edi
ja 0x41cefd
test ebx, ebx
je 0x41cf08
cmp ebx, dword [ebp + 0xc]
ja 0x41cf16
mov edi, dword [ebp - 0x18]
mov eax, dword [edi + edx]
bswap eax
mov ecx, eax
shr ecx, 0x1a
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x20], cl
mov ecx, eax
shr ecx, 0x14
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x1f], cl
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x1e], cl
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x1d], cl
mov ecx, eax
shr ecx, 2
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x1c], cl
mov ecx, dword [edi + edx + 4]
bswap ecx
shld eax, ecx, 4
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0x1b], al
mov eax, ecx
shr ecx, 0x10
shr eax, 0x16
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0x1a], al
mov al, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x19], al
mov eax, dword [edi + edx + 6]
bswap eax
mov ecx, eax
shr ecx, 0x1a
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x18], cl
mov ecx, eax
shr ecx, 0x14
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x17], cl
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x16], cl
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x15], cl
mov ecx, eax
shr ecx, 2
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x14], cl
mov ecx, dword [edi + edx + 0xa]
bswap ecx
shld eax, ecx, 4
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0x13], al
mov eax, ecx
shr ecx, 0x10
shr eax, 0x16
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0x12], al
mov al, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x11], al
mov eax, dword [edi + edx + 0xc]
bswap eax
mov ecx, eax
shr ecx, 0x1a
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0x10], cl
mov ecx, eax
shr ecx, 0x14
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0xf], cl
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0xe], cl
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0xd], cl
mov ecx, eax
shr ecx, 2
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 0xc], cl
mov ecx, dword [edi + edx + 0x10]
bswap ecx
shld eax, ecx, 4
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0xb], al
mov eax, ecx
shr ecx, 0x10
shr eax, 0x16
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 0xa], al
mov al, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 9], al
mov eax, dword [edi + edx + 0x12]
bswap eax
mov ecx, eax
shr ecx, 0x1a
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 8], cl
mov ecx, eax
shr ecx, 0x14
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 7], cl
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 6], cl
mov ecx, eax
shr ecx, 8
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 5], cl
mov ecx, eax
shr ecx, 2
and ecx, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov byte [esi + ebx - 4], cl
mov ecx, dword [edi + edx + 0x16]
add edx, 0x18
mov edi, dword [ebp - 0x1c]
bswap ecx
shld eax, ecx, 4
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 3], al
mov eax, ecx
shr ecx, 0x10
shr eax, 0x16
and ecx, 0x3f
and eax, 0x3f
mov cl, byte [ecx + 0x547ef8]
mov al, byte [eax + 0x547ef8]
mov byte [esi + ebx - 2], al
mov byte [esi + ebx - 1], cl
add ebx, 0x20
cmp edx, dword [ebp - 0x10]
jbe 0x41ca28
add ebx, 0xffffffe0
mov ecx, edx
mov edx, 0xaaaaaaab
mov eax, edi
mul edx
shr edx, 1
lea edx, [edx + edx*2]
cmp ecx, edx
mov eax, edx
mov dword [ebp - 0x14], edx
jae 0x41cd84
cmp ecx, 0xfffffffc
ja 0x41cf22
lea eax, [ecx + 3]
mov dword [ebp - 0x20], eax
cmp eax, edi
mov eax, dword [ebp + 0xc]
ja 0x41cf2c
cmp ebx, 0xfffffffb
ja 0x41cf38
lea edi, [ebx + 4]
mov edx, ecx
mov ecx, esi
cmp edi, eax
mov dword [ebp - 0x10], edi
ja 0x41cf4c
mov eax, dword [ebp - 0x18]
mov esi, edx
movzx eax, byte [eax + edx]
mov edx, dword [ebp - 0x18]
mov dl, byte [edx + esi + 1]
mov edi, eax
shl al, 4
shr edi, 2
mov dh, dl
shl dl, 2
shr dh, 4
or dh, al
mov al, byte [edi + 0x547ef8]
mov edi, dword [ebp - 0x1c]
mov byte [ecx + ebx], al
movzx eax, dh
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [ecx + ebx + 1], al
mov eax, dword [ebp - 0x18]
movzx eax, byte [eax + esi + 2]
mov esi, ecx
mov dh, al
and eax, 0x3f
shr dh, 6
mov al, byte [eax + 0x547ef8]
or dh, dl
movzx edx, dh
and edx, 0x3f
mov dl, byte [edx + 0x547ef8]
mov byte [ecx + ebx + 2], dl
mov byte [ecx + ebx + 3], al
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
cmp ecx, dword [ebp - 0x14]
mov ebx, eax
jb 0x41ccd0
jmp 0x41cd86
mov eax, ebx
mov ebx, edi
mov dword [ebp - 0x10], eax
sub ebx, dword [ebp - 0x14]
cmp ebx, 1
je 0x41ce2a
mov edx, dword [ebp + 0xc]
cmp ebx, 2
jne 0x41ce7a
mov ecx, dword [ebp - 0x10]
cmp ecx, edx
jae 0x41cec8
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
movzx eax, byte [eax + ecx]
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
shr eax, 2
mov al, byte [eax + 0x547ef8]
mov byte [esi + ecx], al
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
inc ecx
cmp ecx, edi
mov dword [ebp - 0x14], ecx
jae 0x41cecf
lea ecx, [eax + 1]
cmp ecx, edx
jae 0x41ceed
mov edi, eax
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov dl, byte [eax + edx]
shl cl, 4
mov eax, edx
shr al, 4
or cl, al
movzx eax, cl
lea ecx, [edi + 2]
and eax, 0x3f
mov al, byte [eax + 0x547ef8]
mov byte [esi + edi + 1], al
mov eax, dword [ebp + 0xc]
cmp ecx, eax
jae 0x41cef4
shl dl, 2
mov edi, 3
and dl, 0x3c
jmp 0x41ce64
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
cmp ecx, edi
jae 0x41cedb
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
movzx edx, byte [eax + edx]
mov eax, edx
shr eax, 2
mov al, byte [eax + 0x547ef8]
mov byte [esi + ecx], al
inc ecx
cmp ecx, edi
jae 0x41cee4
shl dl, 4
mov edi, 2
and dl, 0x30
movzx eax, dl
mov edx, dword [ebp + 0xc]
mov al, byte [eax + 0x547ef8]
mov byte [esi + ecx], al
mov eax, dword [ebp - 0x10]
add eax, edi
jmp 0x41ce7d
mov eax, dword [ebp - 0x10]
mov ecx, eax
cmp eax, edx
ja 0x41cf63
xor eax, eax
test ebx, ebx
je 0x41cea7
xor ebx, 3
je 0x41cea7
mov eax, ecx
sub edx, ecx
add esi, ecx
xor eax, eax
cmp edx, eax
je 0x41ceb7
mov byte [esi + eax], 0x3d
inc eax
cmp ebx, eax
jne 0x41ce9a
add ecx, eax
jb 0x41cf72
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edx
push 0x547de8
call fcn.00444440
add esp, 4
ud2
push 0x547d48
jmp 0x41cebe
mov ecx, dword [ebp - 0x14]
mov edx, edi
push 0x547d58
jmp 0x41cebe
mov edx, edi
push 0x547d88
jmp 0x41cebe
mov edx, edi
push 0x547d98
jmp 0x41cebe
push 0x547d68
jmp 0x41cebe
mov edx, eax
push 0x547d78
jmp 0x41cebe
mov ecx, eax
mov edx, edi
push 0x547dc8
jmp 0x41cf59
mov ecx, 0xffffffe0
xor edx, edx
push 0x547dd8
jmp 0x41cf42
mov edx, dword [ebp + 0xc]
mov ecx, ebx
push 0x547dd8
jmp 0x41cf59
lea edx, [ecx + 3]
push 0x547da8
jmp 0x41cf42
add ecx, 3
mov edx, edi
push 0x547da8
jmp 0x41cf59
lea edx, [ebx + 4]
mov ecx, ebx
push 0x547db8
call fcn.00446290
jmp 0x41cec3
mov edx, dword [ebp + 0xc]
add ebx, 4
mov ecx, ebx
push 0x547db8
call fcn.00445020
jmp 0x41cec3
push 0x547cfc
call fcn.00444cf0
jmp 0x41cec3
mov ecx, str.usize_overflow_when_calculating_b64_length
mov edx, 0x2a
push 0x547d38
call fcn.00448d20
jmp 0x41cec3