Function at 0x412870
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42b191
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x480
push ebx
push esi
push edi
push 1
lea eax, [ebp - 0x1b8]
xor ebx, ebx
push 0x43045c
mov esi, ecx
push eax
mov byte [ebp - 0x320], bl
mov dword [ebp - 0x324], 0x42c250
call fcn.00421320
add esp, 0xc
mov byte [ebp - 0x1b7], bl
mov esi, dword [esi + 0x10]
mov dword [ebp - 4], ebx
mov ecx, esi
mov dword [ebp - 0x18], esi
call fcn.0041bdf0
mov edi, eax
cmp edi, ebx
je 0x412a22
lea ecx, [edi*4]
push ecx
call fcn.0041d1a0
add esp, 4
cmp eax, ebx
mov dword [ebp - 0x14], eax
jne 0x412907
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4
lea eax, [edi + edi*4]
lea edx, [eax + eax*8]
shl edx, 3
push edx
call fcn.0041d1a0
add esp, 4
cmp eax, ebx
mov dword [ebp - 0x10], eax
jne 0x412935
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4
cmp edi, ebx
jle 0x41294b
mov ecx, dword [ebp - 0x14]
mov edx, edi
mov dword [ecx], eax
add eax, 0x168
add ecx, 4
dec edx
jne 0x41293e
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x44]
push eax
push ecx
mov ecx, esi
call fcn.0041bb30
cmp edi, ebx
jle 0x412a0d
mov esi, dword [ebp - 0x14]
mov eax, dword [esi]
cmp eax, ebx
je 0x41299f
push 0x167
lea edx, [ebp - 0x320]
push eax
push edx
call fcn.00421320
push 1
lea eax, [ebp - 0x1b8]
push 0x43045c
push eax
mov byte [ebp - 0x1b9], bl
call fcn.00421320
add esp, 0x18
mov byte [ebp - 0x1b7], bl
mov eax, dword [esi]
push 0x167
lea ecx, [ebp - 0x1b0]
push eax
push ecx
mov dword [ebp - 0x1b4], 0x42c268
call fcn.00421320
push 1
lea edx, [ebp - 0x48]
push 0x43045c
push edx
mov byte [ebp - 0x49], bl
mov dword [ebp - 0x1b4], 0x42c250
call fcn.00421320
add esp, 0x18
mov byte [ebp - 0x47], bl
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x1b4]
push eax
mov byte [ebp - 4], 1
call fcn.00410340
add esi, 4
dec edi
mov byte [ebp - 4], bl
mov dword [ebp - 0x1b4], 0x42c240
jne 0x412965
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.0041d1c0
mov edx, dword [ebp - 0x14]
push edx
call fcn.0041d1c0
add esp, 8
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
push 0x31
mov byte [ebp - 0x48c], bl
call fcn.0041bad0
test eax, eax
je 0x412a75
mov ecx, dword [ebp - 0x20]
push ecx
call fcn.00422d40
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x40]
push ecx
call fcn.00422d40
mov esi, dword [ebp - 0x18]
add esp, 8
jmp 0x412a78
mov byte [ebp - 0x40], bl
push ebx
push 0x32
mov ecx, esi
call fcn.0041bad0
test eax, eax
jne 0x412aa6
push ebx
push 0x33
mov ecx, esi
call fcn.0041bad0
test eax, eax
jne 0x412aa6
push ebx
push 0x74
mov ecx, esi
call fcn.0041bad0
test eax, eax
je 0x412b55
mov dword [ebp - 0x10], 1
lea edx, [ebp - 0x1a]
push edx
push 0x2c
push 0x52
call fcn.0041fe70
mov eax, dword [ebp - 0x10]
push eax
call fcn.0041fce0
lea ecx, [ebp - 0x12]
mov si, ax
push ecx
push 0x3f
push 0x52
and esi, 0xffff
call fcn.0041fe70
mov edi, dword [ebp - 0x18]
add esp, 0x1c
mov ecx, edi
push ebx
push 0x32
call fcn.0041bad0
test eax, eax
je 0x412b8e
cmp esi, 1
je 0x412b1c
cmp esi, 2
je 0x412b1c
cmp esi, 1
jne 0x412b42
push ebx
push 0x33
mov ecx, edi
call fcn.0041bad0
test eax, eax
jne 0x412b1c
push ebx
push 0x74
mov ecx, edi
call fcn.0041bad0
test eax, eax
jne 0x412b42
lea edi, [ebp - 0x40]
or ecx, 0xffffffff
xor eax, eax
mov dl, byte [ebp - 0x10]
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [ebp - 0x40]
add dl, 0x40
mov byte [ebp + ecx - 0x3f], bl
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [ebp + ecx - 0x40], dl
mov eax, dword [ebp - 0x10]
inc eax
cmp eax, 0x1a
mov dword [ebp - 0x10], eax
jle 0x412aad
mov esi, dword [ebp - 0x18]
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
push 0x3d
call fcn.0041bad0
test eax, eax
je 0x412bab
mov edi, dword [ebp - 0x20]
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x48c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x412bb1
cmp esi, 2
jne 0x412afb
push ebx
push 0x74
mov ecx, edi
call fcn.0041bad0
test eax, eax
jne 0x412b1c
jmp 0x412b42
mov byte [ebp - 0x48c], bl
mov al, byte [ebp - 0x40]
xor esi, esi
cmp al, bl
je 0x412c39
cmp esi, 0x1b
jge 0x412c39
push 1
lea ecx, [ebp - 0x48]
push 0x43045c
push ecx
mov byte [ebp - 0x1b0], bl
mov dword [ebp - 0x1b4], 0x42c250
call fcn.00421320
add esp, 0xc
mov byte [ebp - 0x47], bl
mov al, byte [ebp + esi - 0x40]
mov byte [ebp - 4], 2
cmp al, 0x41
jl 0x412c23
cmp al, 0x5a
jg 0x412c23
movsx eax, al
lea edx, [ebp - 0x48c]
lea ecx, [ebp - 0x1b0]
push edx
push eax
push str._c:_s
push ecx
call fcn.00421fda
mov ecx, dword [ebp + 8]
add esp, 0x10
lea edx, [ebp - 0x1b4]
push edx
call fcn.00410340
mov al, byte [ebp + esi - 0x3f]
inc esi
cmp al, bl
mov byte [ebp - 4], bl
mov dword [ebp - 0x1b4], 0x42c240
jne 0x412bba
mov ecx, dword [ebp + 8]
xor eax, eax
pop edi
pop esi
mov edx, dword [ecx + 8]
mov ecx, dword [ebp - 0xc]
cmp edx, ebx
pop ebx
setne al
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4