Function at 0x1005305a
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 0x24]
xor ebx, ebx
xor ecx, ecx
cmp dword [eax + 0x58], ebx
push edi
sete cl
or ebp, 0xffffffff
mov dword [esp + 0x40], ebx
mov dword [esp + 0x5c], ecx
test ecx, ecx
je 0x100b0bac
mov edi, ebp
mov dword [esp + 0x44], ebp
mov ecx, esi
call fcn.10052525
cmp edi, eax
jbe 0x1005309f
cmp edi, ebp
jne 0x1013cd0c
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
test eax, eax
js 0x100b0bc3
xor ecx, ecx
inc ecx
cmp eax, ecx
jle 0x10058eed
cmp eax, 4
jg 0x100b0bc3
lea eax, [esp + 0x74]
push eax
mov ecx, esi
call fcn.1015692e
mov dword [esp + 0x24], eax
test eax, eax
js 0x10053503
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x1013cd16
mov edi, dword [esi]
add edi, eax
mov edx, dword [esp + 0x78]
cmp dword [edx + 0xc], 2
lea ebp, [edi + 1]
je 0x1013cd1d
cmp dword [edx + 0xc], 3
mov al, byte [ebp]
jne 0x10062baf
and al, 0xfa
or al, 2
mov byte [ebp], al
mov eax, dword [edx]
mov dword [edi + 8], eax
lea ecx, [edi + 0x18]
mov edx, 0xbfff
and word [ecx], dx
mov edx, dword [esp + 0x78]
xor eax, eax
cmp dword [edx], ebx
mov dword [esp + 0x3c], 0x2000
setle al
shl ax, 0xd
xor ax, word [ecx]
and ax, word [esp + 0x3c]
xor word [ecx], ax
push dword [edx + 0x10]
mov ecx, edi
call fcn.1005253a
mov ecx, dword [esp + 0x78]
test byte [ecx + 0x10], 0xc
push 0
pop eax
setne al
mov edx, 0xfffe
or word [edi + 2], dx
test byte [ecx + 0x30], 1
mov dword [esp + 0x54], eax
jne 0x1013cd2d
mov ebp, ecx
test byte [ebp + 0x30], 0x80
jne 0x1013cd36
mov ax, word [ebp + 0x30]
shr ax, 0xf
shl al, 6
xor al, byte [edi + 0x3b]
and al, 0x40
xor byte [edi + 0x3b], al
mov al, byte [ebp + 0x14]
xor al, byte [edi + 0x3a]
and al, 7
xor byte [edi + 0x3a], al
movzx eax, word [ebp + 0x18]
mov dword [esp + 0x20], eax
cmp eax, 0x3c
ja 0x100b0bb9
movzx edx, word [ebp + 0x1a]
lea eax, [edx + 1]
mov dword [esp + 0x28], edx
cmp ax, 0x3d
ja 0x100b0bb9
or eax, 0xffffffff
cmp dx, ax
je 0x1013cd3f
mov al, byte [edi + 0x3c]
xor al, dl
and al, 0x3f
xor byte [edi + 0x3c], al
and byte [edi + 0x3d], 0xf9
cmp word [ebp + 0x24], 0x19
je 0x10058f43
push ebx
lea eax, [esp + 0x1c]
push eax
xor eax, eax
inc eax
push eax
lea eax, [esp + 0x20]
push eax
push ebx
lea eax, [ebp + 0x20]
push eax
mov ecx, esi
call fcn.10052fbb
mov ebp, eax
mov dword [esp + 0x24], ebp
test ebp, ebp
js 0x1013ce3f
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x1013cd4c
mov edi, dword [esi]
add edi, eax
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x78]
mov dword [edi + 0x2c], eax
cmp dword [esp + 0x18], ebx
setne al
shl al, 3
xor al, byte [edi + 0x3a]
and al, 8
xor byte [edi + 0x3a], al
cmp word [ebp + 0x24], 0x18
je 0x1005324c
mov al, byte [edi]
and al, 0xef
or al, 0x20
mov byte [edi], al
mov edx, dword [esp + 0x28]
or eax, 0xffffffff
mov dword [esp + 0x4c], eax
mov al, byte [edi + 0x3b]
xor al, byte [esp + 0x20]
and al, 0x3f
xor byte [edi + 0x3b], al
test dx, dx
jg 0x10058697
mov dword [esp + 0x30], 0x3f
xor ecx, ecx
mov eax, ebx
push 8
mov dword [esp + 0x20], eax
pop edx
cmp cx, word [esp + 0x20]
jge 0x10053422
cwde
mov ecx, eax
mov eax, dword [ebp + 8]
shl ecx, 4
movzx eax, word [eax + ecx + 0xc]
mov dword [esp + 0x34], eax
and eax, 0x20
mov dword [esp + 0x58], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x38], ecx
mov ecx, esi
push eax
jne 0x1005fd61
call fcn.1015692e
mov ebp, eax
test ebp, ebp
js 0x1013ce3f
mov eax, dword [esi + 4]
cmp dword [esp + 0x10], eax
ja 0x1013cd53
mov edi, dword [esi]
add edi, dword [esp + 0x10]
cmp dword [esp + 0x74], eax
ja 0x1013cd5a
mov eax, dword [esi]
add eax, dword [esp + 0x74]
lea ecx, [esp + 0x4c]
push ecx
add eax, 0x28
push eax
push dword [esp + 0x18]
mov ecx, esi
call fcn.100e1634
mov al, byte [edi + 1]
and al, 0xfb
or al, 3
mov byte [edi + 1], al
mov eax, dword [esp + 0x34]
push 8
pop ecx
and eax, ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x50], eax
push 0
pop eax
sete al
dec eax
push eax
lea eax, [esp + 0x1c]
push eax
xor eax, eax
inc eax
push eax
lea eax, [esp + 0x20]
push eax
mov eax, dword [ecx + 8]
add eax, dword [esp + 0x48]
push ebx
push eax
mov ecx, esi
call fcn.10052fbb
mov ebp, eax
mov dword [esp + 0x24], ebp
test ebp, ebp
js 0x1013ce3f
mov eax, dword [esp + 0x10]
cmp eax, dword [esi + 4]
ja 0x1013cd61
mov ebp, dword [esi]
add ebp, eax
mov dword [esp + 0x3c], ebp
cmp dword [esp + 0x18], ebx
mov ecx, ebp
setne al
shl al, 6
xor al, byte [ebp]
and al, 0x40
xor byte [ebp], al
push dword [esp + 0x14]
call fcn.100260fb
mov al, byte [ebp]
and al, 0xef
mov ecx, 0xfffe
or word [ebp + 2], cx
or al, 0x20
push ebx
mov byte [ebp], al
push dword [esp + 0x14]
mov ecx, esi
call fcn.100e147f
test byte [eax + 1], 7
jne 0x100533a4
or byte [ebp + 0x18], 4
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x1013cd6c
mov edi, dword [esi]
add edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x34]
test cl, 2
jne 0x10059300
test cl, 1
je 0x100533cf
lea eax, [ebp + 0x18]
or byte [eax], 0x80
cmp word [esp + 0x50], bx
jne 0x1005930b
test cl, 4
jne 0x100b0c73
mov edi, dword [esp + 0x1c]
cmp dword [esp + 0x54], ebx
jne 0x100c7ff8
mov edx, dword [esp + 0x28]
test dx, dx
jne 0x10057f21
test cl, 0x30
jne 0x1005fa38
mov ebp, dword [esp + 0x78]
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp ax, word [esp + 0x20]
jl 0x1005328a
push 8
pop edx
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x1013cd88
mov ecx, dword [esi]
add ecx, dword [esp + 0x74]
cmp dword [esp + 0x40], ebx
setne al
shl al, 4
xor al, byte [ecx + 0x3a]
and al, 0x10
xor byte [ecx + 0x3a], al
cmp dword [ebp + 0x10], edx
je 0x1013cda2
mov edi, dword [esp + 0x44]
or eax, 0xffffffff
cmp edi, eax
jne 0x1013cdd2
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x10053470
mov eax, dword [esp + 0x74]
mov dword [ecx], eax
cmp dword [esp + 0x5c], ebx
je 0x100534ff
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx]
lea edx, [esp + 0x78]
push edx
push 0x1001a230
push ecx
call dword [eax]
test eax, eax
js 0x100534ff
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
lea edx, [esp + 0x7c]
push edx
push dword [ebp + 0x10]
push dword [ebp]
push eax
call dword [ecx + 0x60]
test eax, eax
js 0x100534f5
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
lea edx, [esp + 0x60]
push edx
push 0x10053510
push dword [esp + 0x84]
push eax
call dword [ecx + 0x6c]
test eax, eax
js 0x100534f5
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x100534d6
mov ebx, dword [esi]
add ebx, eax
cmp word [esp + 0x60], 0
setne al
shl al, 4
xor al, byte [ebx + 0x3d]
and al, 0x10
xor byte [ebx + 0x3d], al
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret 0x10
cmp di, word [esp + 0x30]
jl 0x100533fe
dec edx
or byte [ebp + 0x19], 2
mov dword [esp + 0x28], edx
jmp 0x10053407
mov ecx, dword [esp + 0x20]
mov eax, ecx
sub eax, edx
movzx edi, ax
lea eax, [ecx - 1]
movzx ecx, ax
mov dword [esp + 0x30], edi
test cx, cx
js 0x10053274
mov edx, dword [ebp + 8]
movsx eax, cx
add eax, eax
test byte [edx + eax*8 + 0xc], 0xc
je 0x10053274
dec edi
dec ecx
mov dword [esp + 0x30], edi
test cx, cx
jns 0x100586b8
jmp 0x10053274
lea eax, [esp + 0x48]
push eax
mov ecx, esi
call fcn.1015692e
mov dword [esp + 0x24], eax
test eax, eax
js 0x10053503
mov eax, dword [esp + 0x48]
mov dword [esp + 0x74], eax
cmp eax, dword [esi + 4]
ja 0x1013cd26
mov edi, dword [esi]
add edi, eax
mov edx, dword [esp + 0x78]
lea ebp, [edi + 1]
mov al, byte [ebp]
and al, 0xf9
xor ecx, ecx
or al, 1
inc ecx
mov byte [ebp], al
cmp dword [edx + 0xc], ecx
jne 0x10058f36
or byte [edi], 0x40
mov ax, word [edx + 0x1c]
mov word [edi + 0x30], ax
jmp 0x10053110
xor eax, eax
inc eax
mov dword [esp + 0x40], eax
jmp 0x1005324c
lea eax, [ebp + 0x19]
or byte [eax], 1
jmp 0x100533c4
or byte [ebp + 0x18], 0x20
mov al, byte [edi]
or byte [edi + 0x3a], 0x20
and al, 0xef
or al, 0x20
mov byte [edi], al
cmp dword [esp + 0x18], ebx
je 0x10059eaf
push ebx
lea ecx, [esp + 0x18]
call fcn.100e1612
mov eax, dword [esp + 0x14]
mov dword [edi + 0x2c], eax
cmp dword [esp + 0x18], ebx
setne al
shl al, 3
xor al, byte [edi + 0x3a]
and al, 8
xor byte [edi + 0x3a], al
jmp 0x10053407
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 4]
ja 0x1013cd73
mov ecx, dword [esi]
add ecx, eax
call fcn.1007b84e
push eax
lea eax, [esp + 0x30]
push eax
mov ecx, esi
call fcn.100e1690
mov ebp, eax
test ebp, ebp
js 0x1013ce3f
push esi
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x34]
call fcn.10059d92
mov ebp, eax
mov dword [esp + 0x24], eax
test ebp, ebp
js 0x1013ce3f
mov eax, dword [esp + 0x74]
cmp eax, dword [esi + 4]
ja 0x1013cd7a
mov edi, dword [esi]
add edi, eax
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x2c], eax
mov eax, dword [esp + 0x2c]
cmp eax, dword [esi + 4]
ja 0x1013cd81
mov ecx, dword [esi]
add ecx, eax
push ebx
call fcn.100e1612
jmp 0x10059336
or byte [ebp + 0x19], 2
mov al, byte [ebp + 0x19]
cmp word [esp + 0x58], bx
je 0x10053407
mov ecx, dword [esp + 0x38]
or al, 4
mov byte [ebp + 0x19], al
mov ebp, dword [esp + 0x78]
mov eax, dword [ebp + 8]
mov edi, dword [ecx + eax + 8]
push 8
pop eax
add edi, eax
cmp edi, eax
je 0x1013cd8f
cmp word [edi], ax
je 0x100b0b97
push esi
push dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x48]
mov ecx, edi
call fcn.1005fb50
push dword [esp + 0x7c]
mov ecx, dword [esp + 0x20]
movsx eax, cx
push ebp
push eax
call fcn.1015692e
test eax, eax
je 0x1005340b
jmp 0x1013cd96
call fcn.1015692e
jmp 0x100532b9
and al, 0xfb
or al, 3
jmp 0x1005310d
lea ecx, [edi + 8]
cmp dword [ecx], ebx
je 0x1005fa74
call fcn.1015692e
jmp 0x1005fa74
mov edi, dword [esp + 0x74]
mov dword [esp + 0x44], edi
jmp 0x1005308c
mov ebp, 0x80028ca1
jmp 0x1013ce3f
mov eax, 0x80028027
jmp 0x10053503
or byte [ebp + 0x18], 0x10
or byte [edi + 0x3a], 0x40
jmp 0x10053407
mov eax, dword [esp + 0x20]
cwde
movsx edx, di
dec eax
cmp edx, eax
je 0x10053407
jmp 0x100533f1
mov eax, 0x8002802b
jmp 0x10053503
mov edi, ebx
jmp 0x100530eb
and byte [ebp], 0xf8
jmp 0x10053110
mov edi, ebx
jmp 0x10058f1a
or byte [ebp], 8
jmp 0x10053171
or byte [edi + 0x3c], 0x40
jmp 0x1005317d
or byte [edi + 0x3c], 0x3f
mov dword [esp + 0x28], ebx
jmp 0x100531d7
mov edi, ebx
jmp 0x10053220
mov edi, ebx
jmp 0x100532d6
mov eax, ebx
jmp 0x100532e6
mov ebp, ebx
mov dword [esp + 0x3c], ebx
jmp 0x1005335e
mov edi, ebx
jmp 0x100533b7
mov ecx, ebx
jmp 0x10059ec0
mov edi, ebx
jmp 0x10059f0b
mov ecx, ebx
jmp 0x10059f23
mov ecx, ebx
jmp 0x10053435
mov edi, ebx
jmp 0x1005fa6b
xor ecx, ecx
inc ecx
or word [edi + 0x1e], cx
jmp 0x1005340b
push ebx
push dword [esp + 0x14]
mov ecx, esi
call fcn.100e147f
mov cl, byte [eax]
and cl, 0x3f
cmp cl, 0xc
je 0x10053450
mov ecx, eax
call fcn.1004f496
test eax, eax
jne 0x10053450
mov ebp, 0x800a88d2
jmp 0x1013ce3f
mov ecx, esi
call fcn.10052525
cmp edi, eax
mov eax, dword [esp + 0x74]
jne 0x1013cde4
mov dword [esi + 0x4c], eax
test edi, edi
jne 0x1013ce04
cmp eax, dword [esi + 4]
jbe 0x1013cdf1
mov ecx, ebx
jmp 0x1013cdf5
mov ecx, dword [esi]
add ecx, eax
mov eax, dword [esi + 0x34]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x74]
mov dword [esi + 0x34], eax
jmp 0x1013ce36
mov edx, dword [esi + 0x34]
jmp 0x1013ce0c
mov edx, dword [ecx + 4]
cmp edx, dword [esi + 4]
jbe 0x1013ce15
mov ecx, ebx
jmp 0x1013ce19
mov ecx, dword [esi]
add ecx, edx
dec edi
jne 0x1013ce09
mov edi, dword [ecx + 4]
cmp eax, dword [esi + 4]
jbe 0x1013ce28
mov edx, ebx
jmp 0x1013ce2c
mov edx, dword [esi]
add edx, eax
mov dword [edx + 4], edi
mov eax, dword [esp + 0x74]
mov dword [ecx + 4], eax
inc word [esi + 0x20]
jmp 0x1005345f
push dword [esp + 0x74]
mov ecx, esi
call fcn.1007c1f3
mov eax, ebp
jmp 0x10053503