Function at 0x439a86
Capabilities:
Check os version
Encode data using base64

Disassembly:
stosb byte es:[edi], al
jne 0x44637a
je 0x417e77
outsb dx, byte [esi]
daa
sub ecx, dword [edi]
test ch, bh
in al, 2
add byte [eax + eax*2], dh
je 0x44637a
cmp eax, ebx
mov word [ebp - 0x28], dx
mov word [esi + 0x53], bx
mov edi, edi
mov dword [ebp - 0x10], ebx
shr bl, 0x40
jle 0x425b4d
jg 0x4237d9
nop
cpuid
ret 0x7d8d
lea edi, [ebp - 0x50]
js 0x44314f
jns 0x4237e6
fdiv st(6), st(0)
jns 0x44314f
fiadd dword [ecx - 0x74df1c3f]
pop esi
or byte [eax + 0x74], ch
sahf
inc edx
add bl, al
mov ax, word [ebp - 0x20]
mov cx, word [ebp - 0x24]
mov dx, word [ebp - 0x28]
push ebp
pop ebp
jne 0x43a1c4
je 0x425b67
cpuid
ret
je 0x43a1c4
invalid
mov byte [esi + 0xbb], 0
mov word [esi + 0xbc], dx
call fcn.0041a44c
mov esi, esi
push 0x4431c0
ret
sbb dh, 0x60
add byte [eax], al
je 0x43613b
jne 0x436124
dec edx
xchg ebx, eax
aas
mov eax, dword [esi]
mov ch, ch
push 0x32
xchg al, ch
xchg ch, al
push eax
call fcn.0042c7ad
add esp, 8
push 8
push 0x46b028
push 0x433d05
ret
mov word [ebp - 0x24], cx
and ebp, ebp
jno 0x436154
jmp 0x436114
jno 0x4237bb
and byte [edx - 0x2d], 0xe0
lea esp, [esp + 4]
lea esi, [esi + 4]
push 0xd30569ff
mov dword [esp], ebx
pushfd
mov ebx, 0xf597a04e
sub ebx, 0x800edc60
popfd
push eax
pop eax
call fcn.0042b4da
xor eax, 0xee850f71
mov al, 0xfd
push dword [edx + eax - 0x68]
xchg edx, eax
or word [esi + 0x50], di
jb 0x417e6a
lea eax, [ebp - 0xc]
xchg edi, edx
xchg edx, edi
lea ecx, [ebp - 0x50]
push eax
push ecx
jmp 0x439ace
push esi
mov dl, dl
call fcn.0043686d
add esp, 0xc
mov dword [ebp + 8], eax
jmp 0x439af3
mov ax, word [esi + 0x1e]
mov cx, word [esi + 0x1c]
shl edx, 0x20
mov dx, word [esi + 0x42]
mov word [ebp - 0x20], ax
mov eax, dword [ebp + 8]
js 0x43614a
jns 0x439b14
pop ecx
invalid
jns 0x43614a
add eax, 0xc08446e9
jb 0x41aecc
mov byte [ebp + 8], al
jne 0x441e54
je 0x439b34
invalid
mov word [esi + 0x1e], ax
mov eax, dword [ebp - 0x14]
push 0x42e684
ret
inc esp
add byte [esi + ecx*4], dl
inc esp
add byte [eax + eax], al
add byte [eax + eax], al
add byte [0x4400420c], ch
add byte [eax], al
add byte [edi + ecx*2 - 0xd81ffbe], al
cmp dword [ebp + 0x43], eax
add byte [edx], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add dh, dl
push eax
inc edx
add byte [esi + 0x55], dh
inc ebx
add dl, bl
test byte [ebx], al
xor dword [ecx], esi
inc esp
add byte [ecx + 0x381d8f0], al
inc ebx
add byte [eax + 0x12004267], cl
ret 0x44
mov eax, dword [ebp - 0xc]
mov edi, edi
lea ecx, [ebp - 0x1c]
ja 0x41e0bd
jbe 0x443161
call 0x56ca40bd
scasd eax, dword es:[edi]
std
invalid
jbe 0x41e0bd
fidivr dword [esi - 1]
jg 0x4430f6
xchg bh, al
xchg al, bh
mov al, al
jns 0x4228c6
shl ch, 0x20
js 0x443182
cpuid
nop
ret
lea esi, [esi + 8]
mov ax, ax
jmp dword [esi]
xchg si, ax
xchg si, ax
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
mov ax, word [ebp + eax]
lea esi, [esi + 0xc]
mov bx, bx
sbb word [ebp + ebx], ax
shr bh, 0x40
jmp dword [esi]
lea ebp, [ebp]
mov cl, byte [ebp + 0xc]
shr cx, 0x40
mov dx, word [ebp + 0x10]
jmp 0x448a85
push eax
push esi
shl bp, 0x20
mov ax, ax
mov byte [esi + 0xba], cl
js 0x42d3c2
jns 0x448aa1
scasd eax, dword es:[edi]
idiv dword [ecx]
jns 0x42d3c2
xor eax, 0xfc0857c
and byte [ebx], 0x42
std
dec dword [edi]
test byte [ecx], bl
add byte [eax], al
add byte [ebp + 4], dh
mov bp, bp
xchg cl, dl
xchg dl, cl
mov cl, byte [ebp + 0xc]
xchg edx, eax
xchg edx, eax
mov dx, word [ebp + 0x10]
shr bx, 0x40
shr cx, 0x40
mov byte [esi + 0xba], cl
jmp fcn.00428fc9