Function at 0x403360
Capabilities:
Encode data using base64

Disassembly:
push 0xffffffffffffffff
push 0x443f40
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4571dc]
xor eax, esp
push eax
lea eax, [esp + 0x20]
mov dword fs:[0], eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x30]
xor ebx, ebx
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0x18], ebx
call fcn.004018a0
mov edi, dword [esp + 0x34]
mov dword [esp + 0x28], ebx
cmp edi, ebx
je 0x4033ad
mov byte [edi], bl
mov eax, dword [esp + 0x30]
mov ecx, dword [eax - 0xc]
cmp ecx, ebx
mov ebp, 7
jle 0x40357a
test ebx, ebx
jl 0x4034fa
cmp ebx, dword [eax - 0xc]
jg 0x4034fa
movzx eax, word [eax + ebx*2]
push 1
push eax
lea ecx, [esp + 0x3c]
call fcn.004021e0
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx - 0xc]
mov byte [esp + 0x28], 1
cmp eax, 1
jne 0x40344e
test eax, eax
jl 0x4034fa
movzx edx, word [ecx]
cmp dx, 0x3d
je 0x403555
cmp eax, eax
jne 0x40344e
test eax, eax
jl 0x4034fa
movzx edx, word [ecx]
test dx, dx
je 0x403555
cmp eax, eax
jne 0x40344e
test eax, eax
jl 0x4034fa
movzx edx, word [ecx]
cmp dx, 0xd
je 0x4034c6
cmp eax, eax
jne 0x40344e
test eax, eax
jl 0x4034fa
movzx eax, word [ecx]
cmp ax, 0xa
je 0x4034c6
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.00403030
cmp eax, 0x3f
jg 0x403504
mov dword [esp + 0x1c], 0x20
mov dx, word [esp + 0x1c]
movsx esi, al
movzx ecx, dx
and ecx, esi
neg ecx
sbb ecx, ecx
neg ecx
movzx eax, cx
xor ecx, ecx
cmp cx, ax
jae 0x403490
test edi, edi
je 0x403490
mov ecx, ebp
shl al, cl
or byte [edi], al
sub ebp, 1
jns 0x4034a6
test edi, edi
je 0x40349d
inc edi
mov byte [edi], 0
inc dword [esp + 0x14]
mov ebp, 7
shr dx, 1
jne 0x403471
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x28], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x4034db
lea eax, [ecx - 0x10]
mov byte [esp + 0x28], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4034e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x30]
inc ebx
cmp ebx, dword [eax - 0xc]
jl 0x4033c1
jmp 0x40357a
push 0x80070057
call fcn.00401090
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x28], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403529
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov dword [esp + 0x28], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403551
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x4035a2
lea eax, [ecx - 0x10]
mov byte [esp + 0x28], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403576
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov dword [esp + 0x28], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40359e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 8