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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
push ebx
push esi
mov esi, dword [ebp + 0xc]
xor ebx, ebx
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov eax, dword [esi]
dec eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x5c], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x14], 1
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], 1
mov eax, dword [eax + 4]
mov dword [ebp - 4], ecx
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x48], 0
cmp word [eax + 8], 0x33
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 1
mov dword [ebp - 8], ebx
mov dword [ebp - 0x60], 3
jne 0x441f26
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
mov dword [ebp + 0xc], 2
cmp dword [0x4c8280], ebx
je 0x409176
mov eax, dword [0x4c8284]
cmp byte [0x4c8289], bl
jne 0x40918d
push eax
push ecx
mov dword [ebp + 8], eax
call fcn.00403c30
test al, al
je 0x409154
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test eax, eax
je 0x409154
mov ebx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
and ebx, 0xff00
mov dword [ebp + 8], eax
mov dword [ebp - 8], eax
test eax, eax
je 0x409121
test ebx, 0x100
jne 0x441b5e
mov ebx, eax
mov eax, dword [edi + 4]
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax + 8]
cmp word [eax + 8], 0x4e
je 0x441b76
mov eax, dword [edi + 4]
mov dword [ebp - 0x54], ebx
mov eax, dword [eax + ecx*4]
cmp word [eax + 8], 0
je 0x441bd6
push 0xffffffffffffffff
lea eax, [ebp - 0x20]
inc ecx
push eax
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp - 4]
push eax
push edi
call fcn.004053b0
test eax, eax
js 0x4090f8
lea eax, [ebp - 0x20]
cmp ebx, eax
je 0x408ee3
cmp dword [ebx + 0xc], 4
je 0x409167
mov ecx, ebx
call fcn.00404dc0
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
call fcn.00404e60
mov eax, dword [edi + 4]
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax + ecx*4]
cmp word [eax + 8], 0
jne 0x4091a6
cmp dword [eax], 0xf
jne 0x4091a6
mov ebx, dword [ebp - 4]
lea eax, [ebp - 0x20]
push 0xffffffffffffffff
push eax
inc ecx
lea eax, [ebp + 0xc]
push eax
mov dword [ebp + 0xc], ecx
mov ecx, ebx
push edi
call fcn.004053b0
test eax, eax
js 0x4090f8
lea ecx, [ebp - 0x50]
call fcn.00404dc0
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x50]
call fcn.00404e60
mov ecx, dword [edi + 4]
mov eax, dword [ebp + 0xc]
mov eax, dword [ecx + eax*4]
cmp word [eax + 8], 0
je 0x441d55
lea ecx, [ebp - 0x40]
call fcn.00404dc0
mov ebx, 1
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x40], ebx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jne 0x441d8f
mov eax, dword [ebp - 0x44]
cmp eax, 1
je 0x408f98
cmp eax, 3
je 0x408f98
cmp eax, 2
je 0x408f98
lea ecx, [ebp - 0x50]
call fcn.004049aa
lea ecx, [ebp - 0x50]
test al, al
jne 0x409195
call fcn.004048a0
mov ebx, dword [ebp - 0x34]
cmp ebx, 1
jne 0x441dc3
mov ecx, dword [edi + 4]
mov eax, dword [ebp + 0xc]
mov eax, dword [ecx + eax*4]
cmp word [eax + 8], 0x7f
jne 0x441df8
xor edi, edi
xor dl, dl
lea esp, [esp]
mov eax, dword [esi]
lea ecx, [eax + 1]
mov dword [esi], ecx
cmp eax, dword [0x4c82a0]
jg 0x40900e
test eax, eax
jle 0x40900e
shl eax, 4
add eax, dword [0x4c82dc]
je 0x40900e
test dl, dl
jne 0x40900e
mov eax, dword [eax + 4]
mov eax, dword [eax]
cmp word [eax + 8], 0
jne 0x408fc0
mov eax, dword [eax]
sub eax, 0xd
je 0x409161
dec eax
jne 0x408fc0
test edi, edi
jne 0x40915b
lea ebx, [ecx - 1]
mov dl, 1
mov dword [ebp - 0x58], ebx
jmp 0x408fc0
lea ecx, [ebp - 0x30]
call fcn.0040502b
mov ebx, dword [ebp + 8]
cmp eax, 1
je 0x441e9f
cmp dword [ebx + 0xc], 8
je 0x441e07
mov eax, dword [ebp - 0x44]
cmp eax, 5
je 0x441ef5
cmp eax, 0xf
je 0x441ef5
lea ecx, [ebp - 0x20]
call fcn.00404dc0
fldz
lea edx, [ebp - 0x20]
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x14], 3
fstp qword [ebp - 0x20]
call fcn.00404060
test al, al
jne 0x441ee5
mov edx, ebx
lea ecx, [ebp - 0x50]
call fcn.00404060
test al, al
jne 0x441e9f
mov eax, dword [ebp - 4]
mov ebx, dword [ebp - 0x5c]
cmp byte [eax + 0x165], 0
jne 0x441ec7
push 0x38
call fcn.00420fe6
mov edi, eax
add esp, 4
test edi, edi
je 0x40919f
mov ecx, dword [ebp - 0x60]
lea eax, [ebp - 0x50]
mov dword [edi], ecx
mov ecx, dword [ebp - 0x58]
mov dword [edi + 8], ecx
mov ecx, dword [ebp - 0x54]
mov dword [edi + 0xc], ecx
lea ecx, [edi + 0x10]
mov dword [edi + 4], ebx
push eax
mov dword [ecx + 8], 0
call fcn.00404e60
lea eax, [ebp - 0x40]
mov dword [edi + 0x28], 0
lea ecx, [edi + 0x20]
push eax
call fcn.00404e60
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x160]
mov dword [edi + 0x30], eax
mov dword [ecx + 0x160], edi
inc dword [ecx + 0x15c]
lea eax, [ebx + 1]
mov dword [esi], eax
lea ecx, [ebp - 0x30]
call fcn.00404dc0
lea ecx, [ebp - 0x20]
call fcn.00404dc0
lea ecx, [ebp - 0x40]
call fcn.00404dc0
lea ecx, [ebp - 0x50]
call fcn.00404dc0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
lea ecx, [ebp - 0x20]
call fcn.00404dc0
push 1
push 0
lea eax, [ebp - 0x20]
mov dword [ebp - 0x14], 1
push eax
push dword [ebp - 0xc]
mov dword [ebp - 0x20], 0
call fcn.004039be
mov ebx, eax
mov dword [ebp + 8], ebx
mov dword [ebp - 8], ebx
jmp 0x408e79
xor eax, eax
jmp 0x408e5d
dec edi
jmp 0x408fc0
inc edi
jmp 0x408fc0
cmp dword [ebp - 0x14], 4
jne 0x408ed1
jmp 0x441d45
lea eax, [ebp - 8]
push eax
push ecx
mov ecx, 0x4c8270
call fcn.00403f42
mov ebx, dword [ebp - 8]
jmp 0x408e5d
mov eax, dword [eax + 8]
jmp 0x408e32
call fcn.00404937
jmp 0x408f95
xor edi, edi
jmp 0x4090db
mov ecx, dword [ebp - 4]
jmp 0x441f26
call 0x11c4e443
ja 0x40d518
add byte [ebx - 0x7af0f018], al
mov al, byte [0x8b000376]
inc esp
or al, 0x44
invalid
adc byte [ebx - 0x72e3dbb4], cl
adc al, 0x41
pop esi
pop ebp
ret 8
je 0x40d671
dec eax
jne 0x444ffc
fld qword [ecx]
push esi
push ecx
push ecx
fstp qword [esp]
call fcn.00426720
mov esi, dword [ebp + 0xc]
add esp, 8
mov ecx, esi
fstp qword [ebp - 8]
call fcn.00404dc0
fld qword [ebp - 8]
xor eax, eax
fstp qword [esi]
mov dword [esi + 0xc], 3
pop esi
mov esp, ebp
pop ebp
ret 8
fild qword [ecx]
jmp 0x40d641
add byte [eax], al
mov esi, dword [esp + 0x10]
xor al, al
mov byte [esp + 0xf], al
mov ecx, edi
test esi, esi
je 0x4451c6
call fcn.0041389f
and dword [esp + 0x10], 0
test esi, esi
jle 0x40d877
lea eax, [esp + 0x18]
mov ecx, edi
push eax
call fcn.00413a67
test al, al
je 0x4451a0
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, esi
jl 0x40d84e
mov al, byte [esp + 0xf]
test al, al
jne 0x40d884
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x18]
push eax
call fcn.00404f3c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov eax, dword [eax]
cmp dword [eax + 0xc], 4
jne 0x40d8a5
mov ecx, edi
call fcn.004142cf
test edi, edi
je 0x40d8a5
push ecx
mov ecx, edi
call fcn.00413f0b
lea ecx, [esp + 0x18]
call fcn.00411cb6
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8
test al, al
je 0x445f2a
or byte [edi], 0xb7
inc eax
or byte [esi + 0x3b], ah
ror dword [edi], 0x84
pop ss
add dword [eax], eax
add bh, al
mov dword [ebp - 0x14], 0x40
mov byte [ebp - 5], 0
test ax, ax
invalid
invalid
jl 0x40f42c
add eax, dword [eax]
dec eax
sbb dword [ecx], eax
add byte [eax], al
movzx eax, word [esi + 2]
add ebx, eax
movzx eax, word [esi + 4]
push 0x10
pop ecx
mov dword [ebp - 4], ebx
cmp ax, cx
je 0x441b60
push 0xf
pop ecx
cmp ax, cx
je 0x441b60
xor eax, eax
jmp 0x441b63
push 2
pop eax
lea esi, [esi + eax*2]
jmp 0x441b71
add esi, 6
jmp 0x40d50e
mov ecx, 0x7d83fffc
lock add byte [edi], cl
test dword [eax - 0x16000346], edi
jg 0x441b3f
cld
dec dword [edi]
mov bh, 0x46
add al, 0x6a
adc byte [edi + 0x66], bl
cmp eax, edi
je 0x40d636
push 0xf
pop edi
cmp ax, di
jmp 0x40d61d
dec edi
mov edi, 0x7fffffff
jmp 0x441c64
movzx eax, word [ecx]
dec edx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0x10]
push eax
call fcn.0047e725
mov edx, eax
pop ecx
mov ecx, edx
test edx, edx
je 0x441dce
push 0x77
pop ebx
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
cmp word [ecx], bx
je 0x441c04
mov ebx, dword [ebp - 4]
cmp esi, edx
jbe 0x441c1b
cmp esi, ecx
jb 0x441c71
mov ecx, dword [ebp + 0x10]
mov eax, ecx
test ecx, ecx
je 0x441c33
cmp dword [eax + 4], edx
je 0x441c2f
mov eax, dword [eax]
test eax, eax
jne 0x441c24
test eax, eax
jne 0x441c71
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0xc]
push eax
push dword [ebp + 0xc]
mov dword [ebp - 0x20], edx
push dword [ebp + 8]
call fcn.0040d4b8
add esp, 0xc
cmp eax, edi
jge 0x441c54
mov edi, eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c]
movzx eax, word [eax + 0x24]
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x18], ecx
test edx, edx
jg 0x441be1
jmp 0x441c7a
mov dword [ebp - 8], 1
xor edi, edi
add esi, 6
jmp 0x441ccd
movzx eax, word [esi]
add eax, 0xffffff9e
cmp eax, 0xb
ja case.default.0x441cdf
movzx eax, byte [eax + 0x4519e5]
jmp dword [eax*4 + 0x4519d9]
xor eax, eax
inc eax
imul eax, edi
add ebx, eax
jmp 0x40d587
ja 0x441da2
lea ecx, [edi + eax*2]
mov edx, ecx
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
cmp word [ecx], bx
je 0x441d4c
sbb dword [esp + esi*8 - 0x75], esi
pop ebp
cld
mov ebx, dword [ebp - 4]
cmp esi, edx
jbe 0x441d63
cmp esi, ecx
jb 0x441d7b
mov ecx, dword [ebp + 0x10]
mov eax, ecx
test ecx, ecx
je 0x441d87
cmp dword [eax + 4], edx
je 0x441d77
mov eax, dword [eax]
test eax, eax
jne 0x441d6c
test eax, eax
je 0x441d87
mov dword [ebp - 8], 1
jmp 0x40d5a8
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0xc]
push eax
push dword [ebp + 0xc]
mov dword [ebp - 0x20], edx
push edi
call fcn.0040d4b8
add esp, 0xc
add ebx, eax
hlt
mov dword [ebp - 4], ebx
jmp 0x40d5a8
add byte [ebx], al
enter 0x348d, 0x4e
jmp 0x40d50e
push 0xfffffffffffffffe
pop eax
jmp 0x40d568
xor byte [edx + 0x458bfffc], bh
cld
test dword [edi + 0x50], eax
jne 0x40d82c
invalid
cmp dword [ebp + 0xc], edx
jg 0x40d82c
cmp dword [edi + 0x70], edx
jmp 0x40d82a
cmp cl, cl
dec ebx
add byte [ebx - 0x2afa1731], cl
cld
call [ecx - 0x7b]
sal byte [ebp + 0xe], 0x83
mov byte [esi], 0x81
retf
in al, 0xd4
cld
call [ecx - 0x7b]
sal byte [ebp + 0xe], 0x83
invalid
retf
add esi, edx
push 0x29
pop eax
mov dword [ebp - 4], esi
cmp word [esi], ax
jne 0x442adc
movzx eax, word [esi + 2]
push 0x2a
pop edx
cmp ax, dx
je 0x442adc
push 0x2b
pop edx
cmp ax, dx
je 0x442adc
push 0x3f
pop edx
cmp ax, dx
je 0x442adc
push 0x7b
pop edx
cmp ax, dx
jne 0x442a9d
lea ecx, [esi + 4]
call fcn.0047f233
test eax, eax
jne 0x442adc
xor ecx, ecx
mov edx, dword [ebp - 8]
mov eax, 0x9d
push 2
pop ebx
mov word [edx], ax
add edx, ebx
mov ebx, ecx
jmp 0x442ad4
mov dword [ebp - 0x10], ebx
jmp 0x40f10f
mov edx, dword [ebp + 0x28]
push 0x7e
pop ebx
inc dword [edx + 0x5c]
jmp 0x443fc5
push 0x52
pop edi
mov edx, dword [ebp - 8]
jmp 0x40e982
add byte [eax], al
add bl, ch
or dword [ebx + 0xc70c45], ecx
xor al, 0
add byte [eax], al
mov word [edx], ax
add edx, 2
call fcn.0047fafe
lea edx, [edx + eax*2]
jmp 0x44517c
mov dword [ebx], edx
jmp 0x40f3a1
jge 0x445144
cld
inc dword [ebx - 0x78f09801]
into
add al, byte [eax]
add byte [edi], cl
test byte [ecx + 1], bl
add byte [eax], al
push 0x30
pop ecx
cmp edi, ecx
je 0x44529c
jbe 0x445516
push 0x39
pop ecx
cmp edi, ecx
jbe 0x44522a
cmp edi, 0x4c
je 0x4457fa
cmp edi, 0x55
je 0x44521e
cmp edi, 0x63
jne 0x445516
push 2
pop ecx
add esi, ecx
movzx edi, word [esi]
test edi, edi
jne 0x4451f8
mov eax, dword [ebp + 8]
mov dword [eax], ecx
jmp fcn.0040f435
cmp edi, 0x7f
jbe 0x44520b
mov eax, dword [ebp + 8]
mov dword [eax], 0x44
jmp fcn.0040f435
lea eax, [edi - 0x61]
test dword [ebp + 0x10], 0x2000000
jmp 0x44581f
cmp dword [ebp + 0x14], ebx
jne 0x44528d
lea eax, [esi + 2]
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], eax
movzx eax, word [eax]
cmp ax, word [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
jb 0x44527c
mov eax, dword [ebp - 0x14]
cmp ax, cx
ja 0x445279
push 0x30
cmp edx, 0xccccccb
jg 0x4452d5
mov esi, dword [ebp - 0xc]
imul ecx, edx, 0xa
movzx edx, word [esi]
lea eax, [esi + 2]
add edx, 0xffffffd0
mov dword [ebp - 0xc], eax
movzx eax, word [eax]
add edx, ecx
pop ecx
push 0x39
cmp ax, cx
pop ecx
jae 0x44524a
mov eax, dword [ebp - 8]
cmp edx, 8
jl 0x445305
cmp edx, dword [ebp + 0xc]
jle 0x445305
mov esi, dword [ebp - 0x10]
movzx edi, word [esi]
cmp edi, 0x38
jae fcn.0040f435
push 0x30
mov ebx, edx
jmp 0x40f47b
test byte [ebp + 0x10], 0x40
je fcn.0040f435
mov eax, dword [ebp + 8]
mov dword [eax], 3
mov eax, dword [ebp + 8]
mov dword [eax], 0x25
jmp 0x40f47d
jne fcn.0040f435
mov eax, dword [ebp + 8]
mov dword [eax], 0x25
jmp fcn.0040f435
test byte [ebx - 0x16000363], dh
call 0x83445f36
stc
sbb byte [edi], cl
test bh, bl
add dword [eax], eax
add byte [ebx], bh
into