Function at 0x5b89c4
Capabilities:
Check os version
Encode data using base64
Encrypt data using aes mixcolumns step

Disassembly:
mov cx, cx
mov eax, dword [esi + 4]
mov eax, dword [ebp + eax]
mov ebx, dword [esi + 8]
mov al, byte [eax]
lea esi, [esi + 0xc]
clc
add byte [ebp + ebx], al
jmp dword [esi]
xor eax, 0x8436
jb 0x5d5dc3
add eax, 0
and ch, ch
sub eax, 0xe
stc
cmc
sub bp, 0
add cx, 0xf3e0
sub cx, 0xf3e0
xor eax, 0x5131
jb 0x5c4098
js 0x5e6435
shr al, 0x40
jns 0x5b2fc7
pushal
retf 0xc6cd
jns 0x5e6435
pop dword [esp - 4]
inc esp
and al, 0xfc
mov al, byte [ebp + 0xb]
add esp, 0x30
add eax, 0
cmp bl, 1
shr di, 0x40
mov cl, cl
mov byte [esi + 0xba], bl
js 0x5de8f0
jns 0x5b89f1
cpuid
pop edi
ret
jns 0x5de8f0
fnstenv [ebx - 0x4d97ea01]
outsb dx, byte [esi]
add byte [ebp - 0x7b7df040], al
cmp eax, dword [eax]
add byte [esi + 0xffa86d7], al
mov byte [ebp + 0x7900017a], cl
add al, 0xf
dec esi
jno 0x5b89c5
fstp dword [eax + 0xf]
xor dword [ecx + ecx*2 + 0x4700000], 0xc2a20f90
js 0x5b8a3c
jns 0x5bfdce
mov ch, 0xf
dec eax
loopne 0x5bfdde
jns 0x5b8a3c
mov dword [eax - 0x74], ebp
invalid
xor byte [ebp - 0x15], 0xff
cmc
stc
jb 0x5c408e
jmp dword [esi]
push cs
cmp esi, 0x1c
jle 0x5db5e3
shr dx, 0x40
jg 0x5c75c6
and eax, 0x50c3a20f
push eax
pop eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebx]
push ecx
jmp 0x5c75d0
push edx
call fcn.005cdd65
sub edi, 0
add esp, 8
pop edi
shr ax, 0x40
jne 0x5e72e7
je 0x5c75f2
je 0x5c761d
je 0x5e72e7
xor al, 0xb7
lds ecx, [eax - 0x57ca0001]
mov bp, bp
mov word [esi + 0xbc], dx
shl di, 0x20
call fcn.005e00af
jne 0x5cafec
je 0x5c7641
stosb byte es:[edi], al
xchg edx, eax
pop es
je 0x5cafec
and eax, 0x40edc039
mov bp, bp
js 0x5ed303
jns 0x5c765b
mov cl, bh
jns 0x5c766b
jns 0x5ed303
mov dword [edx - 0x26fffda4], esp
cmpsd dword [esi], dword es:[edi]
fldenv [edi + 0xffe5850]
mov bp, bp
mov esi, esi
dec word [edi]
mov dh, dh
jmp dword [esi]
dec esp
add ecx, dword [edi]
test dword [esi], esi
xor al, 1
add byte [esp + eax + 0xf], dh
mov byte [0x840fc3c5], al
sub dh, byte [ecx + eax]
add byte [ebx*4 - 0xb38277], dh
inc ecx
add esp, 4
lea ebp, [ebp]
mov dword [edi], 0
add ch, 0
js 0x5c4087
jns 0x5d1710
stc
pop ss
or dword [edi], 0xff297189
invalid
jns 0x5c4087
fmul dword [ecx]
shr ebp, 0x40
push eax
push esi
push ebx
pop ebx
xchg cl, ah
shr bl, 0x40
xchg ah, cl
mov byte [esi + 0xba], cl
mov byte [esi + 0xbb], 0
shl bh, 0x20
mov word [esi + 0xbc], dx
push edi
xchg di, di
pop edi
xchg ebp, ebx
xchg ebx, ebp
call fcn.005db81b
js 0x5d3e63
jns 0x5d17a6
loopne 0x5d181b
out 0xd3, al
jns 0x5d3e63
xor eax, 0x8768d00
shl si, 0x20
mov dword [ebp + 0x40], esp
jmp dword [esi]
inc eax
jbe 0x5d1822
sub ecx, dword [ecx]
add byte [edi + 0xf], bh
xchg byte [esi - 0x78], ah
invalid
jbe 0x5ba08e
xor al, 0xa0
dec byte [ecx + 0x5c]
add byte [eax], al
popal
add byte [eax + 0x40], al
add byte [ecx], ah
add byte [eax], al
cld
invalid
xor esi, esi
jb 0x5c81e4
jmp 0x5bfdc2
invalid
sub ebp, dword [ecx - 0x40]
out dx, eax
inc eax
mov al, al
sbb dword [edi], ebx
jne 0x5c4096
je 0x5d5dbd
mov al, 0x88
dec ebp
je 0x5c4096
and byte [ebx + 0x42], 0x66
cmp eax, 0xf688ffff
inc edx
cmp ax, 0xffff
mov dh, dh
jne 0x5e3ac0
je 0x5d5dd8
pop ds
mov eax, 0xedc1660d
inc eax
shr bp, 0x40
jmp fcn.005cf0a6
mov edi, dword [edx*8 + 0x77c835]
sub esi, 0
test edi, edi
jb 0x5aeb45
jne 0x5e23ef
je 0x5d5e05
out dx, eax
stc
call fcn.005cf0a2
add eax, 0x57c8d9b
add al, ch
call 0xda5d5e59
push esp
jmp 0x5d5e18
push eax
call fcn.005e4496
jmp 0x5da02a
sub eax, 0xa6
test edi, 0x180275d3
cmp bl, 2
mov ax, ax
shr bp, 0x40
jne 0x5d1702
je 0x5d994e
nop
cpuid
ret 0x8966
mov ax, di
mov al, al
mov bh, bh
shr di, 0x40
shr dx, 0x40
mov ecx, edi
xchg esi, ebx
shl dl, 0x20
shl ah, 0x20
xchg dx, ax
shl bh, 0x20
shl ch, 0x20
mov dl, dl
xchg dx, ax
mov di, di
xchg ebx, esi
lea edi, [edi]
shr ax, 0xc
mov edi, edi
mov dx, dx
mov dh, dh
shl ecx, 4
or eax, ecx
jb 0x5d5da9
xor ax, word [esi + 6]
jb 0x5d5dba
stc
mov cx, cx
jb 0x5d99a3
cmpsd dword [esi], dword es:[edi]
mov ch, 0xe9
jb 0x5b2f85
fiadd dword [edi]
jmp fcn.005d07fb
push esi
shl si, 0x20
push ebx
call fcn.005de761
add esp, 0x2c
test ax, ax
jb 0x5bf4fa
shl al, 0x20
je 0x5dfd08
jne 0x5da053
dec edi
jl 0x5da052
pop ss
call fcn.005ea00c
and eax, 0xeac16656
inc eax
mov ebx, dword [esi + 4]
push 0x5b8015
ret
xlatb
sti
cmp edx, edx
neg dword [edi]
xchg si, bx
xchg bx, si
jmp dword [esi]
xor esi, esi
jb 0x5eba24
mov eax, dword [ebp + esi - 0x5c]
test dh, 0xd1
test eax, eax
jb 0x5d67e0
je 0x5e177e
jne 0x5db5fc
and edx, dword [ecx]
mov eax, dword [ebp + esi - 0x94]
push eax
xchg bl, bh
xchg bh, bl
js 0x5e1773
jns 0x5db614
nop
cpuid
ret 0x890f
jns 0x5e1773
shl dx, 0x20
jb 0x5e2224
lea edx, [edx]
jae 0x5db62c
nop
cpuid
ret
jmp dword [esi]
jmp 0x5de7c0
push edx
push eax
xchg ebp, ebx
shl ch, 0x20
mov ecx, ecx
xchg ebx, ebp
mov si, si
call fcn.005e4496
mov al, byte [ebp + 0xc]
jne 0x5b7b49
je 0x5de7e3
or bh, bl
into
adc dword [edi], ecx
test byte [eax - 0x6d], ah
std
inc dword [0xeec1660c]
je 0x5b7b49
add eax, 0xeec1660c
inc eax
mov dl, dl
shr cl, 0x40
jno 0x5b68a1
mov si, si
jo 0x5de802
sub cl, byte es:[ecx]
jo 0x5b68a1
fldln2
lea esp, [esp + 4]
shr edx, 0x40
mov byte [eax + 2], 0
mov word [eax], 0
mov bp, bp
mov edi, dword [ecx]
add ecx, 4
mov dword [eax - 8], edi
sub ah, 0
add eax, 0xc
dec edx
jne 0x5dff13
je 0x5de83b
mov ecx, 0xd2840f7e
push ss
add byte [eax], al
je 0x5dff13
fst dword [edx + 0x660c768d]
add ecx, 0x816690ac
jmp 0x3e378fe
mov byte [esi + 0xbb], al
xchg si, ax
xchg si, ax
push ecx
mov cx, 0xed91
pop ecx
mov word [esi + 0xbc], di
xchg bh, cl
xchg bl, ch
xchg ch, bl
xchg cl, bh
jne 0x5d9932
je 0x5de91b
lodsd eax, dword [esi]
dec edx
sub al, 0x68
mov ah, ah
xchg dx, di
shl ebx, 0x20
xchg di, dx
mov cx, di
shl ax, 0x20
mov edx, edi
mov si, si
shr cx, 0xa
mov ecx, ecx
shl edx, 6
jmp fcn.005d63e3
lea edx, [ebp - 0x110]
push 0
jmp 0x5dfd11
push edx
shr esi, 0x40
call fcn.005d5a32
lea eax, [ebp - 0x110]
push 0x80
jmp 0x5dfd27
push eax
call fcn.005bd913
js 0x5dab11
jns 0x5dfd3a
mov edi, 0xf331e6d
mov ecx, edx
lodsd eax, dword [esi]
invalid
jns 0x5dab11
xor eax, 0x4c26ffa9
push ebx
push str.ProductSuite
jmp 0x5dfd56
push eax
call dword [0x77c4a9]
test eax, eax
jb 0x5da9db
js 0x5bad0b
jns 0x5dfd72
invalid
jns 0x5bad0b
xor al, 0x5a
js 0x5adf2c
jns 0x5dfd86
cpuid
nop
ret
jns 0x5adf2c
fisubr dword [ebx + ecx*4]
dec ebp
fmul qword [edi]
and dword [esi + eax], 0x86027000
inc ebp
jo 0x5e03fb
sbb byte [edx + 0x5d481b], 0
popal
add byte [eax + 0x38], al
add byte [ecx], ah
add byte [eax], al
mov esp, 0
adc byte [eax], al
add byte [eax], al
inc eax
add byte [eax], al
xor al, 0
add byte [eax], al
cwde
enter 0x5d, 0xffffffffffffffe5
ljmp 0
jne 0x5de80e
je 0x5dff1f
cpuid
nop
ret
js 0x5e4b42
jns 0x5dff2b
xor eax, 0xff5a4f2
mov dword [ecx], edx
dec esp
add byte [eax], al
jns 0x5e4b42
fsubr dword [edi + 0x69]
fstp dword [eax + eax + 2]
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [esi], al
in eax, 0x5b
add byte [edi - 0x13], bh
pop ebx
add byte [edx], cl
sbb dword [ebp], ebx
push ebx
call [ebp]
sub al, 9
iretd
and eax, 0xf6ffebdd
jmp fcn.005cab6d
fidiv dword [edx - 0xd002d78]
mov dl, dl
push edx
push 0
push eax
mov eax, dword [ebp - 0x10]
mov bh, bh
mov dh, dh
push eax
push ecx
push esi
push 6
mov dword [edi], 1
call fcn.005aea3c
add ecx, 0x638e0b88
sub ecx, 0x638e0b88
add esp, 0x24
cmp ax, 0x1a
shl bl, 0x20
jne 0x5e7288
je 0x5e0440
cpuid
nop
ret
je 0x5e7288
and eax, 0xd8d0f2f
add byte [eax], al
add byte [esp + eax - 0x3b], bh
cpuid
ret
call fcn.005d53fe
add esp, 4
add esi, 4
test esp, ecx
jae 0x5e178c
nop
cpuid
ret
jae 0x5c75b0
add eax, 0xe5c16687
and cl, al
loop 0x5e17a0
and esi, esi
clc
ja 0x5d4553
scasd eax, dword es:[edi]
sub eax, 0x276ffff
jbe 0x5e17a8
insb byte es:[edi], dx
adc eax, 0x2da5860f
invalid
jbe 0x5d4553
fnstenv [eax + eax*4]
ljmp 0xa982
mov ebx, dword [ebp - 4]
test dx, 0xf22f
test ebx, ebx
jb 0x5e03f9
jne 0x5b1aec
je 0x5e240b
cdq
adc dh, byte ss:[eax]
xchg ebp, ecx
xchg ecx, ebp
push esi
call fcn.005d6915
add esp, 4
test al, al
jb 0x5c4806
jne 0x5b1aec
je 0x5e242f
mov edx, dword [0x66f6ffc5]
mov ecx, ecx
push esi
mov cx, cx
call fcn.005cb300
add esp, 4
test al, 1
jb 0x5cd543
jne 0x5b1aec
lahf
idiv ah
push dword [esp + eax - 0x2c]
pop edx
je 0x5e2453
aam 0x5a
mov ecx, ecx
mov eax, dword [ebp - 0x44]
ja 0x5ba9a3
jbe 0x5e2462
xchg dword [edi], ecx
mov byte [0x3b860fc3], al
test ebp, edi
invalid
jbe 0x5ba9a3
fnstenv [ebx + 0x66]
mov edx, dword [ebp + 0x10]
js 0x5d1766
jns 0x5e247a
cpuid
ret
jns 0x5d1766
or byte [eax + 6], 0xe5
pop ebx
add byte [ecx], bl
xor eax, 0x190a005c
pop ebp
add byte [esi + 0x43005e24], dl
jns 0x5e2449
invalid
cmp ax, word [ebp + 8]
je 0x5d5de6
jne 0x5e3ad0
inc esi
sar dword [edi + 0x418b668b], cl
or byte [ecx + 0x8c1], al
add byte [edi], cl
xchg ebp, esp
and bh, bh
push dword [esi + 4]
mov ax, word [ecx + 8]
add ecx, 8
ja 0x5d5dc5
jbe 0x5e3ae6
jno 0x5e3af8
dec esp
mov byte [0x22d9860f], al
invalid
jbe 0x5d5dc5
fnstenv [ebx]
mov ebx, dword [ebp + 0x44]
mov edx, dword [esi + 8]
shr bh, 0x40
mov eax, dword [esi + 4]
lea esi, [esi + 0xc]
inc esi
add al, 0x8d
jbe 0x5e3b09
mov byte [ebx + edx], al
jmp dword [esi]
invalid
add byte [ecx], al
add byte [eax], bh
add byte [eax], al
add byte [eax], al
add dword [eax], eax
add byte [eax], al
popal
add byte [eax + 0x34], al
add byte [ecx], ah
add byte [eax], al
inc esi
add byte [eax], al
add bh, ch
add al, 0x5c
add byte [ebx - 0x27ffa175], cl
xchg esp, eax
pop esi
add byte [edx], cl
push eax
pop esi
add byte [eax], cl
pop esi
add byte [edi], al
cmp ecx, dword [edx]
push eax
pop esi
add al, bl
xchg esp, eax
pop esi
add al, bl
pop ecx
js 0x5d7c51
jns 0x5e6440
fsubr st(4), st(0)
imul ecx, dword [edi], 0xff180b89
inc edi
jecxz 0x5e63d6
jns 0x5d7c51
invalid
invalid
mov dword [ebp - 0xc], eax
xchg dh, ch
xchg ch, dh
je 0x5e72ca
jne 0x5e729a
loope 0x5e72be
out 0x66, al
cmp eax, 0x840f0017
add byte es:[eax], al
add byte [ecx - 0x7cfd8a01], cl
inc edi
cmp ax, 0x17
je 0x5e72ca
mov edi, edi
jne 0x5e72aa
add dword [edi + 0x66], 0xffffff85
ror byte [edi], 0x82
ror esi, 1
invalid
test ax, ax
jb 0x5d4184
jne 0x5db5db
je 0x5e72bf
cpuid
ret
sub eax, 0x20e1c166
shl cx, 0x20
jmp fcn.005ceb53
mov edx, dword [ebp - 0x10]
jmp 0x5e72ce
push edx
call fcn.005d53fe
jno 0x5ceb44
jo 0x5e72df
sbb ecx, dword es:[edi]
sbb byte [edi + 0x78], 0xfe
push dword [0xc9885ea7]
jo 0x5ceb44
xor eax, 0xc9885ea7
pop esi
mov cl, cl
pop ebx
mov esp, ebp
pop ebp
ret
fsubr dword [eax + ebp*8 + 7]
popal
invalid
mov edx, dword [ebx]
jmp 0x5ebbd2
push ebx
push 0
lea ecx, [ebp - 0x28]
mov eax, dword [edx + 0x76]
mov edx, dword [ebp - 0x24]
jmp 0x5ebbe0
push eax
push 0
push 4
push ecx
push edx
jmp 0x5ebbe9
push esi
push 4
call fcn.005aea3c
add esp, 0x24
cmp ax, 0x1a
mov esi, esi
mov dword [ebp - 0xc], eax
je fcn.005ceb53
jne 0x5ebc0d
and al, 0xb7
out 0xae, eax
cmp ax, 0x17
je fcn.005ceb53
jne 0x5ebc1d
xchg dword [ebp + 0x4d8bad10], ebp
in al, dx
mov ecx, dword [ebp - 0x14]
clc
test ecx, ecx
jb 0x5e0395
jne 0x5ebc43
je 0x5ebc33
inc ecx
out dx, eax
cmp ax, 0x1f
je fcn.005ceb53
jne 0x5ebc43
mov ch, 0x40
push ebx
mov fs, word [esi - 0x7b]
ror byte [edi], 0x82
sbb byte [0x850ffffe], bl
out 0x5e, al
invalid
test ax, ax
jb 0x5cd964
jne 0x5d1b38
mov ch, ch
je 0x5ebc59
add ch, byte [edx]
test eax, 0x85d8458b
ror byte [edi], 0x82
or bl, byte [0x840ffffe]
jmp 0x765eba99
mov eax, dword [ebp - 0x28]
test eax, eax
jb 0x5cd96e
je fcn.005ceb53
jne 0x5ebc6f
inc ebp
in eax, 0x7e
push eax
call fcn.005d53e7
mov ecx, dword [ebp - 8]
add esp, 4
call fcn.005b33b5
fsub dword [edi - 0x40]
out dx, eax
inc eax
shl si, 0x20
mov eax, dword [esi + 4]
shl dx, 0x20
mov eax, dword [ebp + eax]
mov ebx, dword [esi + 8]
jno 0x5b6e63
jo 0x5ebca5
mov ch, 0xc3
jo 0x5b6e63
xor eax, 0x1b85ecf
add byte [eax], al
add byte [ebx + 0x5d], bl
ret
mov dx, dx