Function at 0x41afb0
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x38
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x20]
call fcn.00411450
mov edi, dword [esi + 0x38]
sub edi, dword [esi + 0x34]
mov eax, 0xaaaaaaab
mul edi
shr edx, 1
xor ecx, ecx
lea eax, [edx + edx*2]
mov ebp, edi
sub ebp, eax
mov eax, ecx
setne al
lea ebx, [esi + 8]
mov dword [esi + 4], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], ecx
add eax, edx
mov edx, dword [ebx + 0x14]
add eax, eax
add eax, eax
cmp eax, edx
ja 0x41b010
push 0xffffffffffffffff
push eax
mov ecx, ebx
call fcn.004016e0
jmp 0x41b01b
push ecx
sub eax, edx
push eax
mov ecx, ebx
call fcn.0040f800
mov ecx, ebx
call fcn.00401480
lea ecx, [esp + 0x40]
mov dword [esp + 0x14], eax
call fcn.00411450
test ebx, ebx
je 0x41b057
cmp dword [esp + 0x14], 0
je 0x41b057
mov ecx, ebx
call fcn.00401480
cmp eax, dword [esp + 0x14]
ja 0x41b057
mov ecx, ebx
call fcn.00401480
add eax, dword [ebx + 0x14]
cmp dword [esp + 0x14], eax
jbe 0x41b05c
call fcn.004a5fa4
mov ecx, dword [esp + 0x14]
sub edi, ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edi
je 0x41b36d
mov edi, 2
mov edx, dword [esi + 0x38]
sub edx, dword [esi + 0x34]
mov ebp, dword [esp + 0x10]
cmp ebp, edx
jb 0x41b08c
call fcn.004a5fa4
mov ebx, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add ebx, ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
cmp eax, 0xfffffffc
je 0x41b0d3
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b0b8
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov edx, dword [esp + 0x20]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b0d3
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x28], 0xfffffffc
je 0x41b10b
lea ecx, [esp + 0x28]
call fcn.00406590
test al, al
jne 0x41b0f0
call fcn.004a5fa4
mov ecx, dword [esp + 0x28]
call fcn.00401480
mov ecx, dword [esp + 0x28]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x2c], eax
jb 0x41b10b
call fcn.004a5fa4
movzx edx, byte [ebx]
mov ecx, dword [esp + 0x2c]
shr edx, 2
mov al, byte [edx + 0x50fc20]
mov byte [ecx], al
mov edx, dword [esi + 0x38]
sub edx, dword [esi + 0x34]
cmp ebp, edx
jb 0x41b12c
call fcn.004a5fa4
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x38]
sub ecx, dword [esi + 0x34]
add eax, ebp
mov dword [esp + 0x14], eax
lea eax, [edi - 1]
cmp eax, ecx
jb 0x41b147
call fcn.004a5fa4
mov ebx, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
lea ebp, [edi - 1]
add ebx, ebp
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
cmp eax, 0xfffffffc
je 0x41b191
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b176
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov ecx, dword [esp + 0x20]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b191
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x30], 0xfffffffc
je 0x41b1c9
lea ecx, [esp + 0x30]
call fcn.00406590
test al, al
jne 0x41b1ae
call fcn.004a5fa4
mov ecx, dword [esp + 0x30]
call fcn.00401480
mov edx, dword [esp + 0x30]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x34], eax
jb 0x41b1c9
call fcn.004a5fa4
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx]
movzx eax, byte [ebx]
mov ecx, dword [esp + 0x34]
shr eax, 4
shl edx, 4
or eax, edx
and eax, 0x3f
mov al, byte [eax + 0x50fc20]
mov byte [ecx], al
mov edx, dword [esi + 0x38]
sub edx, dword [esi + 0x34]
lea eax, [edi - 1]
cmp eax, edx
jb 0x41b1fc
call fcn.004a5fa4
mov eax, dword [esi + 0x34]
add eax, ebp
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x38]
sub eax, dword [esi + 0x34]
cmp edi, eax
jb 0x41b214
call fcn.004a5fa4
mov ebx, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add ebx, edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
cmp eax, 0xfffffffc
je 0x41b25b
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b240
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov edx, dword [esp + 0x20]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b25b
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x38], 0xfffffffc
je 0x41b293
lea ecx, [esp + 0x38]
call fcn.00406590
test al, al
jne 0x41b278
call fcn.004a5fa4
mov ecx, dword [esp + 0x38]
call fcn.00401480
mov ecx, dword [esp + 0x38]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x3c], eax
jb 0x41b293
call fcn.004a5fa4
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax]
movzx edx, byte [ebx]
mov eax, dword [esp + 0x3c]
add ecx, ecx
shr edx, 6
add ecx, ecx
or edx, ecx
and edx, 0x3f
mov dl, byte [edx + 0x50fc20]
mov byte [eax], dl
mov ecx, dword [esi + 0x38]
sub ecx, dword [esi + 0x34]
cmp edi, ecx
jb 0x41b2c4
call fcn.004a5fa4
mov ebx, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
add ebx, edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
cmp eax, 0xfffffffc
je 0x41b30b
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b2f0
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov ecx, dword [esp + 0x20]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b30b
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b343
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b328
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov edx, dword [esp + 0x40]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b343
call fcn.004a5fa4
movzx eax, byte [ebx]
mov edx, dword [esp + 0x44]
and eax, 0x3f
mov cl, byte [eax + 0x50fc20]
mov eax, dword [esp + 0x10]
add eax, 3
add edi, 3
mov byte [edx], cl
mov dword [esp + 0x10], eax
cmp eax, dword [esp + 0x1c]
jb 0x41b079
cmp dword [esp + 0x18], 0
je 0x41b749
mov ecx, dword [esi + 0x38]
sub ecx, dword [esi + 0x34]
mov eax, dword [esp + 0x10]
cmp eax, ecx
jb 0x41b38f
call fcn.004a5fa4
mov eax, dword [esp + 0x10]
mov edi, dword [esi + 0x34]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
add edi, eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
cmp ecx, 0xfffffffc
je 0x41b3da
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b3bb
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov ecx, dword [esp + 0x20]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b3d6
call fcn.004a5fa4
mov eax, dword [esp + 0x10]
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b416
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b3f7
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov edx, dword [esp + 0x40]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b412
call fcn.004a5fa4
mov eax, dword [esp + 0x10]
movzx ecx, byte [edi]
shr ecx, 2
cmp dword [esp + 0x18], 1
mov dl, byte [ecx + 0x50fc20]
mov ecx, dword [esp + 0x44]
mov byte [ecx], dl
jne 0x41b560
mov edx, dword [esi + 0x38]
sub edx, dword [esi + 0x34]
cmp eax, edx
jb 0x41b446
call fcn.004a5fa4
mov eax, dword [esp + 0x10]
mov esi, dword [esi + 0x34]
mov ecx, dword [esp + 0x24]
add esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
cmp eax, 0xfffffffc
je 0x41b48d
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b472
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov edx, dword [esp + 0x20]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b48d
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b4c5
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b4aa
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov ecx, dword [esp + 0x40]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b4c5
call fcn.004a5fa4
movzx edx, byte [esi]
mov ecx, dword [esp + 0x44]
and edx, 3
shl edx, 4
mov al, byte [edx + 0x50fc20]
mov byte [ecx], al
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
cmp eax, 0xfffffffc
je 0x41b51c
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b501
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov ecx, dword [esp + 0x20]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b51c
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b554
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b539
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov edx, dword [esp + 0x40]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b554
call fcn.004a5fa4
mov eax, dword [esp + 0x44]
mov byte [eax], 0x3d
jmp 0x41b6c8
mov ecx, dword [esi + 0x38]
sub ecx, dword [esi + 0x34]
cmp eax, ecx
jb 0x41b573
call fcn.004a5fa4
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x38]
mov ebp, dword [esi + 0x34]
sub edx, dword [esi + 0x34]
lea ebx, [eax + 1]
add ebp, eax
cmp ebx, edx
jb 0x41b58a
call fcn.004a5fa4
mov edi, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add edi, ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
cmp eax, 0xfffffffc
je 0x41b5d1
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b5b6
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov edx, dword [esp + 0x20]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b5d1
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b609
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b5ee
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov ecx, dword [esp + 0x40]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b609
call fcn.004a5fa4
movzx edx, byte [edi]
movzx eax, byte [ebp]
shr edx, 4
shl eax, 4
or edx, eax
and edx, 0x3f
mov cl, byte [edx + 0x50fc20]
mov edx, dword [esp + 0x44]
mov byte [edx], cl
mov eax, dword [esi + 0x38]
sub eax, dword [esi + 0x34]
cmp ebx, eax
jb 0x41b636
call fcn.004a5fa4
mov esi, dword [esi + 0x34]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add esi, ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
cmp eax, 0xfffffffc
je 0x41b67d
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b662
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov edx, dword [esp + 0x20]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b67d
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b6b5
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b69a
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov ecx, dword [esp + 0x40]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b6b5
call fcn.004a5fa4
movzx edx, byte [esi]
mov ecx, dword [esp + 0x44]
and edx, 0xf
mov al, byte [edx*4 + 0x50fc20]
mov byte [ecx], al
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
cmp eax, 0xfffffffc
je 0x41b70a
lea ecx, [esp + 0x20]
call fcn.00406590
test al, al
jne 0x41b6ef
call fcn.004a5fa4
mov ecx, dword [esp + 0x20]
call fcn.00401480
mov ecx, dword [esp + 0x20]
add eax, dword [ecx + 0x14]
cmp dword [esp + 0x24], eax
jb 0x41b70a
call fcn.004a5fa4
inc dword [esp + 0x24]
cmp dword [esp + 0x40], 0xfffffffc
je 0x41b742
lea ecx, [esp + 0x40]
call fcn.00406590
test al, al
jne 0x41b727
call fcn.004a5fa4
mov ecx, dword [esp + 0x40]
call fcn.00401480
mov edx, dword [esp + 0x40]
add eax, dword [edx + 0x14]
cmp dword [esp + 0x44], eax
jb 0x41b742
call fcn.004a5fa4
mov eax, dword [esp + 0x44]
mov byte [eax], 0x3d
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret