Function at 0x1c281c
Capabilities:
Encode data using base64

Disassembly:
push ebp
lea ebp, [esp - 0x3c]
sub esp, 0xbc
mov eax, dword [ebp + 0x44]
mov edx, dword [eax + 0x11c]
push ebx
mov ebx, dword [eax + 0x120]
mov eax, dword [ebp + 0x64]
xor ecx, ecx
test al, 1
push esi
lea esi, [eax + eax]
push edi
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x2c], ecx
mov dword [ebp + 0x24], ecx
mov dword [ebp + 0x38], ecx
mov dword [ebp + 8], esi
jne 0x1c285b
dec eax
cmp dword [ebp + 0x58], ecx
mov edi, dword [ebp + 0x54]
mov esi, dword [ebp + 0x50]
mov dword [ebp + 0x10], eax
jne 0x1c28ce
cmp dword [ebp + 0x5c], ecx
jne 0x1c2880
push 0x10
pop ecx
mov eax, 0x80808080
lea edi, [ebx - 0x1f]
rep stosd dword es:[edi], eax
jmp 0x1c29ab
mov eax, dword [ebp + 0x54]
mov esi, dword [ebp + 0x50]
sub esi, eax
mov edi, edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 0x50]
add eax, eax
sub esi, eax
lea edi, [edx + 0x10]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
xor esi, esi
xor eax, eax
movzx ecx, byte [eax + edx]
add esi, ecx
inc eax
cmp eax, 8
jl 0x1c28a0
lea eax, [esi + 4]
shr eax, 3
lea edi, [ebx - 0x1f]
mov bl, al
mov bh, bl
push 8
pop ecx
mov eax, ebx
shl eax, 0x10
mov ax, bx
rep stosd dword es:[edi], eax
mov ebx, dword [ebp + 0x1c]
jmp 0x1c29ab
cmp dword [ebp + 0x5c], ecx
jne 0x1c2914
xor eax, eax
lea edi, [ebx - 1]
dec esi
mov dword [ebp + 0x28], 8
mov cl, byte [esi - 1]
mov byte [edi - 8], cl
mov cl, byte [esi]
add esi, dword [ebp + 0x54]
mov byte [edi], cl
movzx ecx, cl
add eax, ecx
dec edi
dec dword [ebp + 0x28]
jne 0x1c28e0
add eax, 4
shr eax, 3
mov edi, ebx
mov bl, al
mov bh, bl
push 8
pop ecx
mov eax, ebx
shl eax, 0x10
mov ax, bx
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
jmp 0x1c28c6
mov eax, dword [ebp + 0x60]
dec eax
cmp dword [ebp + 0x58], eax
jne 0x1c296d
mov eax, esi
sub eax, edi
mov ecx, dword [eax]
mov dword [ebp + 0x20], eax
mov dword [edx], ecx
mov eax, dword [eax + 4]
mov dword [edx + 4], eax
lea eax, [edi + edi]
sub esi, eax
mov eax, dword [esi]
mov dword [edx + 0x10], eax
mov eax, dword [esi + 4]
mov dword [edx + 0x14], eax
movzx eax, byte [edx + 7]
mov cl, al
mov ch, cl
lea edi, [edx + 8]
mov eax, ecx
shl eax, 0x10
mov ax, cx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
movzx eax, byte [edx + 0x17]
mov cl, al
mov ch, cl
lea edi, [edx + 0x18]
mov eax, ecx
shl eax, 0x10
mov ax, cx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [ebp + 0x20]
jmp 0x1c298b
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x50]
sub eax, ecx
mov esi, eax
mov edi, edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 0x50]
add ecx, ecx
sub esi, ecx
lea edi, [edx + 0x10]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov al, byte [eax - 1]
mov esi, dword [ebp + 0x50]
push 8
mov byte [ebx], al
lea edi, [ebx - 1]
dec esi
pop eax
mov cl, byte [esi - 1]
mov byte [edi - 8], cl
mov cl, byte [esi]
add esi, dword [ebp + 0x54]
mov byte [edi], cl
dec edi
dec eax
jne 0x1c299a
movzx eax, byte [ebx]
mov dword [ebp + 0x30], eax
lea eax, [ebp + 0x30]
push eax
lea eax, [ebp + 0x34]
push eax
add ebx, 0xfffffff8
push ebx
push edx
call fcn.001c1a8a
cmp dword [ebp + 0x34], 3
mov eax, dword [ebp + 0x74]
jge 0x1c29f2
movzx ecx, byte [edx + 9]
add ecx, dword [ebp + 0x30]
movzx edx, byte [edx + 8]
lea ebx, [edx + ecx + 9]
imul ebx, ebx, 0x1af3
xor edi, edi
sar ebx, 0x11
mov dword [ebp + 0x18], 1
mov dword [ebp + 0x30], ebx
jmp 0x1c2a01
cmp dword [ebp + 0x34], eax
mov ebx, dword [ebp + 0x30]
jae 0x1c29fe
xor edi, edi
jmp 0x1c2a01
mov edi, dword [ebp + 0x6c]
mov esi, dword [ebp + 0x48]
shl edi, 2
xor ecx, ecx
cmp dword [ebp + 0x7c], ecx
mov dword [ebp + 0x6c], edi
jne 0x1c2b53
add eax, eax
cmp dword [ebp + 0x34], eax
jae 0x1c2b07
cmp dword [ebp + 0x58], ecx
je 0x1c2aff
cmp dword [ebp + 0x5c], ecx
je 0x1c2aff
cmp edi, 4
jne 0x1c2aea
mov dword [ebp + 0x6c], 0xb
xor eax, eax
cmp dword [ebp + 0x70], eax
setne al
add eax, 5
mov ecx, dword [ebp + 0x48]
mov edi, eax
shl edi, 2
lea esi, [edi + ecx]
cmp dword [esi], 0
jne 0x1c2a6a
push ecx
push dword [ebp + 0x64]
push eax
push dword [ebp + 0x44]
call fcn.001c1a4d
mov edx, dword [esi]
mov ecx, dword [ebp + 0x44]
call fcn.001bf55c
mov esi, eax
mov eax, dword [edi + 0x1e2b28]
movzx eax, byte [eax + esi]
test eax, eax
je 0x1c2a8d
push eax
push dword [ebp + 0x44]
call fcn.001bf4c5
xor ecx, ecx
cmp esi, 0x11
setge cl
mov edi, ecx
test edi, edi
je 0x1c2a9e
sub esi, 0x11
cmp esi, 5
jl 0x1c2ab0
movzx esi, byte [esi + 0x1c35f3]
mov ecx, eax
sar ecx, 1
add esi, ecx
xor edx, edx
inc edx
and eax, edx
neg eax
mov ecx, eax
xor ecx, esi
mov esi, dword [ebp + 0x4c]
sub ecx, eax
xor eax, eax
test edi, edi
sete al
xor edi, edi
mov dword [ebp + 4], ecx
cmp eax, edi
mov dword [ebp + 0x20], eax
je 0x1c2dae
cmp dword [ebp + 0x7c], edi
mov dword [ebp + 0x34], edx
je 0x1c2b5b
mov dword [ebp + 0x28], edx
mov dword [ebp + 0x14], edx
jmp 0x1c2b80
cmp edi, 8
jne 0x1c2a42
mov dword [ebp + 0x6c], 0xa
jmp 0x1c2a42
mov dword [ebp + 0x6c], ecx
jmp 0x1c2a42
cmp dword [esi + 0x10], ecx
jne 0x1c2b1a
push esi
push dword [ebp + 0x64]
push 4
push dword [ebp + 0x44]
call fcn.001c1a4d
mov edx, dword [esi + 0x10]
mov ecx, dword [ebp + 0x44]
call fcn.001bf55c
cmp edi, 8
mov dword [ebp + 0x2c], eax
jne 0x1c2b36
mov eax, dword [eax*4 + 0x1c3598]
jmp 0x1c2b42
cmp edi, 4
jne 0x1c2b4a
mov eax, dword [eax*4 + 0x1c35c8]
mov dword [ebp + 0x6c], eax
jmp 0x1c2a42
mov eax, dword [eax*4 + 0x1c3568]
jmp 0x1c2b42
push 7
pop eax
jmp 0x1c2a4d
cmp dword [ebp + 0x2c], 4
jle 0x1c2b69
mov dword [ebp + 0x14], edi
mov dword [ebp + 0x70], edi
jmp 0x1c2b70
mov dword [ebp + 0x14], 3
cmp dword [ebp + 0x2c], 3
mov dword [ebp + 0x28], 2
jge 0x1c2b80
mov dword [ebp + 0x68], edi
mov eax, dword [ebp + 0x6c]
mov eax, dword [eax*4 + 0x1e2b4c]
mov dword [ebp], eax
mov dword [ebp + 0x2c], edx
inc dword [ebp + 0x24]
mov eax, dword [ebp + 0x24]
cmp eax, dword [ebp + 0x70]
jb 0x1c2ba3
mov eax, dword [ebp + 0x14]
mov dword [ebp + 0x28], eax
jmp 0x1c2ba6
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x48]
mov edi, eax
shl edi, 2
lea ebx, [edi + ecx]
cmp dword [ebx], 0
jne 0x1c2bc3
push ecx
push dword [ebp + 0x64]
push eax
push dword [ebp + 0x44]
call fcn.001c1a4d
mov edx, dword [ebx]
mov ecx, dword [ebp + 0x44]
call fcn.001bf55c
mov ebx, eax
mov eax, dword [edi + 0x1e2b28]
movzx edi, byte [eax + ebx]
test edi, edi
mov dword [ebp + 0x78], ebx
je 0x1c2bf5
push edi
push dword [ebp + 0x44]
call fcn.001bf4c5
xor edx, edx
inc edx
mov ecx, edi
shl edx, cl
dec edx
and eax, edx
mov edi, eax
cmp ebx, 0x2e
jge 0x1c2c53
cmp ebx, 0x17
jge 0x1c2c05
and dword [ebp + 0x4c], 0
jmp 0x1c2c12
sub ebx, 0x17
mov dword [ebp + 0x4c], 1
mov dword [ebp + 0x78], ebx
cmp ebx, 0x10
jge 0x1c2c21
mov eax, dword [ebp + 0x78]
xor ebx, ebx
jmp 0x1c2d4e
cmp ebx, 0x14
jge 0x1c2c34
mov eax, dword [ebp + 0x78]
xor ebx, ebx
inc ebx
add eax, 0xfffffff0
jmp 0x1c2d4e
cmp ebx, 0x16
jge 0x1c2c47
mov eax, dword [ebp + 0x78]
push 2
pop ebx
add eax, 0xffffffec
jmp 0x1c2d4e
and dword [ebp + 0x38], 0
push 3
pop ebx
jmp 0x1c2d51
mov eax, dword [ebp + 0x78]
xor ebx, ebx
cmp eax, 0x3b
jge 0x1c2cad
cmp eax, 0x2f
mov dword [ebp + 0x4c], ebx
jg 0x1c2c6e
movzx eax, byte [eax + 0x1c35d6]
jmp 0x1c2ccb
cmp eax, 0x31
jg 0x1c2c78
xor ebx, ebx
inc ebx
jmp 0x1c2c65
cmp eax, 0x32
jne 0x1c2c82
add edi, 0x20
jmp 0x1c2c8d
cmp eax, 0x33
jne 0x1c2c95
xor ebx, ebx
inc ebx
add edi, 0x10
mov dword [ebp + 0x38], edi
jmp 0x1c2d51
cmp eax, 0x38
mov dword [ebp + 0x38], ebx
jle 0x1c2ca4
mov dword [ebp + 0x38], 1
movzx ebx, byte [eax + 0x1c35d6]
jmp 0x1c2cde
cmp eax, 0x49
jge 0x1c2ce7
xor ecx, ecx
inc ecx
cmp eax, 0x40
mov dword [ebp + 0x4c], ecx
jle 0x1c2cc4
cmp eax, 0x43
jg 0x1c2ccf
mov ebx, ecx
movzx eax, byte [eax + 0x1c35d9]
add eax, edi
jmp 0x1c2d4e
cmp eax, 0x46
jg 0x1c2ce2
mov dword [ebp + 0x38], ebx
movzx ebx, byte [eax + 0x1c35d9]
add ebx, edi
jmp 0x1c2d51
mov dword [ebp + 0x38], ecx
jmp 0x1c2cd7
cmp eax, 0x4b
jge 0x1c2d3a
mov ecx, edi
and ecx, 3
add eax, 0xffffffb7
sar edi, 2
sub ecx, ebx
mov dword [ebp + 0x4c], eax
je 0x1c2d2e
dec ecx
je 0x1c2d23
dec ecx
je 0x1c2d14
dec ecx
jne 0x1c2d51
mov eax, edi
and eax, 3
add eax, 5
sar edi, 2
jmp 0x1c2d1e
mov eax, edi
and eax, 1
add eax, 3
sar edi, 1
add edi, 3
jmp 0x1c2d4c
add edi, 3
push 2
mov dword [ebp + 0x38], edi
pop ebx
jmp 0x1c2d51
mov dword [ebp + 0x38], 2
lea ebx, [edi + 2]
jmp 0x1c2d51
mov eax, edi
and eax, 1
mov dword [ebp + 0x4c], eax
mov eax, edi
sar eax, 1
and eax, 0x3f
sar edi, 7
mov ebx, edi
mov dword [ebp + 0x38], eax
mov ecx, dword [ebp + 0x44]
call fcn.001bf478
mov ecx, dword [ebp + 0x2c]
add ecx, dword [ebp + 0x38]
neg eax
inc ebx
xor ebx, eax
sub ebx, eax
cmp ecx, 0x3f
jbe 0x1c2d6e
push 0x3f
pop ecx
mov eax, ebx
imul ebx, dword [ebp + 8]
sar eax, 0xf
mov edx, eax
xor edx, dword [ebp + 0x10]
add edx, ebx
sub edx, eax
mov eax, ecx
and eax, dword [ebp + 0x68]
movzx eax, word [eax*2 + 0x1c3628]
imul edx, eax
mov eax, dword [ebp]
movzx eax, byte [ecx + eax]
shr edx, 8
inc ecx
cmp dword [ebp + 0x4c], 0
mov word [esi + eax*2], dx
mov dword [ebp + 0x2c], ecx
je 0x1c2b90
jmp 0x1c2e17
cmp dword [ebp + 0x18], edi
je 0x1c2e0c
lea eax, [ecx + 1]
cmp eax, 3
jae 0x1c2e0c
mov eax, ebx
shl eax, 3
imul eax, dword [ebp + 0x78]
add eax, 0x8000
shr eax, 0x10
add eax, ecx
imul eax, dword [ebp + 0x74]
add eax, 4
shr eax, 3
jns 0x1c2dde
xor eax, eax
jmp 0x1c2de9
mov ecx, 0xff
cmp eax, ecx
jle 0x1c2de9
mov eax, ecx
mov ecx, dword [ebp + 0x50]
imul eax, eax, 0x1010101
push 8
pop edx
mov dword [ecx], eax
mov dword [ecx + 4], eax
add ecx, dword [ebp + 0x54]
dec edx
jne 0x1c2df5
mov dword [ebp + 0x34], 1
jmp 0x1c304d
cmp ecx, edi
mov dword [ebp + 0x34], ecx
je 0x1c300f
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0x58]
mov edx, eax
imul edx, dword [ebp + 0x74]
or ecx, dword [ebp + 0x5c]
mov word [esi], dx
je 0x1c2e3d
inc eax
cmp eax, 3
jb 0x1c2e3d
mov eax, dword [ebp + 0x6c]
movsx eax, byte [eax + 0x1c36a9]
jmp 0x1c2e40
or eax, 0xffffffff
test edx, edx
mov dword [ebp + 0x48], eax
je 0x1c2f93
test eax, eax
jl 0x1c2f93
jne 0x1c2f22
mov ecx, edx
imul ecx, ecx, 0xee3
mov eax, 0x8000
add ecx, eax
sar ecx, 0x10
sub word [esi + 2], cx
sub word [esi + 0x10], cx
mov ecx, edx
imul ecx, ecx, 0x1e7
add ecx, eax
sar ecx, 0x10
sub word [esi + 4], cx
sub word [esi + 0x20], cx
mov ecx, edx
imul ecx, ecx, 0x1fa
add ecx, eax
sar ecx, 0x10
sub word [esi + 6], cx
sub word [esi + 0x30], cx
mov ecx, edx
imul ecx, ecx, 0x87
add ecx, eax
sar ecx, 0x10
sub word [esi + 8], cx
sub word [esi + 0x40], cx
add word [esi + 0x14], cx
add word [esi + 0x16], cx
add word [esi + 0x22], cx
add word [esi + 0x32], cx
mov ecx, edx
imul ecx, ecx, 0xad
add ecx, eax
sar ecx, 0x10
sub word [esi + 0xa], cx
sub word [esi + 0x50], cx
mov ecx, edx
imul ecx, ecx, 0x3d
add ecx, eax
sar ecx, 0x10
sub word [esi + 0xc], cx
sub word [esi + 0x60], cx
add word [esi + 0x1a], cx
add word [esi + 0x52], cx
mov ecx, edx
imul ecx, ecx, 0x2a
add ecx, eax
sar ecx, 0x10
sub word [esi + 0xe], cx
sub word [esi + 0x70], cx
add word [esi + 0x18], cx
add word [esi + 0x48], cx
add word [esi + 0x42], cx
mov ecx, edx
imul ecx, ecx, 0x43c
add ecx, eax
sar ecx, 0x10
add word [esi + 0x12], cx
jmp 0x1c2f93
cmp eax, 2
je 0x1c2f2b
xor eax, eax
jmp 0x1c2f2e
push 3
pop eax
movsx ecx, ax
xor eax, eax
mov ebx, edx
imul ebx, ebx, 0x187d
inc eax
shl eax, cl
push 3
lea edi, [esi + eax*2]
mov eax, 0x8000
add ebx, eax
sar ebx, 0x10
sub word [edi], bx
mov ebx, edx
imul ebx, ebx, 0x2c4
pop edi
shl edi, cl
add ebx, eax
sar ebx, 0x10
push 5
lea edi, [esi + edi*2]
sub word [edi], bx
mov ebx, edx
imul ebx, ebx, 0xac
pop edi
shl edi, cl
add ebx, eax
sar ebx, 0x10
push 7
lea edi, [esi + edi*2]
sub word [edi], bx
pop edi
shl edi, cl
lea ecx, [esi + edi*2]
mov edi, edx
imul edi, edi, 0x49
add edi, eax
sar edi, 0x10
sub word [ecx], di
cmp dword [ebp + 0x20], 0
jne 0x1c2fc3
test edx, edx
je 0x1c2fa3
cmp dword [ebp + 0x48], 0
jge 0x1c2fc3
lea eax, [edx + 4]
sar eax, 3
and eax, 0xffff
mov dx, ax
push 0x20
pop ecx
lea edi, [ebp - 0x80]
shl edx, 0x10
mov dx, ax
mov eax, edx
rep stosd dword es:[edi], eax
jmp 0x1c2fd2
push 0xff
push esi
lea eax, [ebp - 0x80]
push eax
call fcn.001be8d5
mov edx, 0x80
mov ecx, esi
call fcn.001bbe79
cmp dword [ebp + 0x18], 0
lea eax, [ebp - 0x80]
je 0x1c2ff8
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push eax
push dword [ebp + 0x30]
call fcn.001c1b9f
jmp 0x1c304d
push dword [ebp + 0x1c]
push dword [ebp + 0xc]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push eax
push dword [ebp + 0x6c]
call fcn.001c1d24
jmp 0x1c304d
cmp dword [ebp + 0x18], 0
je 0x1c3039
mov esi, dword [ebp + 0x50]
movzx ecx, byte [ebp + 0x30]
push 8
pop edx
mov al, cl
mov bl, al
mov bh, bl
mov edi, esi
add esi, dword [ebp + 0x54]
mov eax, ebx
shl eax, 0x10
dec edx
mov ax, bx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
jne 0x1c301f
jmp 0x1c304d
push dword [ebp + 0x1c]
push dword [ebp + 0xc]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
push dword [ebp + 0x6c]
call fcn.001c16f8
mov esi, dword [ebp + 0x6c]
xor ecx, ecx
cmp dword [ebp + 0x7c], ecx
jne 0x1c307c
mov edx, dword [ebp + 0x5c]
mov al, byte [ebp + 0x24]
mov edi, dword [ebp + 0x44]
and edx, 1
imul edx, dword [ebp + 0x60]
shl al, 2
or al, byte [esi + 0x1e2c80]
add edx, dword [edi + 0x124]
mov edi, dword [ebp + 0x58]
mov byte [edx + edi], al
mov eax, dword [ebp + 0x44]
cmp byte [eax + 0xa1], 0
je 0x1c30cc
cmp dword [ebp + 0x5c], ecx
jbe 0x1c30ab
cmp dword [ebp + 0x34], ecx
jne 0x1c309b
cmp esi, ecx
je 0x1c30ab
cmp esi, 4
je 0x1c30ab
push dword [ebp + 0x64]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.001c22fd
xor ecx, ecx
cmp dword [ebp + 0x58], ecx
jbe 0x1c30cc
cmp dword [ebp + 0x34], ecx
jne 0x1c30be
cmp esi, ecx
je 0x1c30cc
cmp esi, 8
je 0x1c30cc
push dword [ebp + 0x64]
push dword [ebp + 0x54]
push dword [ebp + 0x50]
call fcn.001c25cf
pop edi
pop esi
pop ebx
add ebp, 0x3c
leave
ret 0x3c