Function at 0x44ad91
Capabilities:
Authenticate hmac
Check os version
Encrypt data using aes mixcolumns step

Disassembly:
lea eax, [ebp - 0x3c]
push eax
jmp 0x41a5f6
push ecx
mov ebx, ebx
push 0x557010
push 0
jmp 0x41a602
push edi
call dword [ebp - 0x1c]
test eax, eax
jb 0x442cd1
je 0x449550
jne 0x41a61a
or eax, 0x3966840f
rol byte [ebp - 0x4b7df00a], cl
xchg byte [edx], al
add byte [edi], cl
test byte [eax + eax], dl
add byte [eax], al
cmp dx, dx
test esi, esi
jb 0x442cd9
je 0x41a63f
jne 0x41a631
loop 0x41a636
call 0xffc9fc7b
push esi
mov bh, bh
call fcn.004341fe
wait
add dword [eax], eax
add esp, 4
lea edx, [ebp - 4]
shl bx, 0x20
push 0
jno 0x448684
jo 0x41a652
sbb dword [bx], ecx
sub byte [eax], 2
add byte [ebp - 0x77fbdb9c], cl
lea esp, [esp + 4]
mov byte [esi + eax + 0x24], dl
ja 0x446372
jbe 0x41a66a
jo 0x448684
xor dl, cl
jb 0x434ea6
stc
add ebx, 0
cmc
add dl, 0x80
xchg edi, eax
mov ch, ch
mov cx, cx
xchg edi, eax
mov byte [ebp + eax - 0x10], dl
jne 0x4109b4
shr cl, 0x40
je 0x420047
xor byte [edi], ah
je 0x4109b4
pop es
adc dword [eax + eax + 2], eax
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ebx], dl
inc esp
inc ebx
add bh, bh
add byte [eax], al
add byte [eax], bh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [ebx + 0x130042ff], bh
inc esp
inc ebx
add bh, bh
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [0x5c0040cc], cl
rol dword [eax], 1
cmp dword [eax], eax
add byte [eax], al
cmp dword [eax], eax
add byte [eax], al
cmp eax, 0x300042e5
add byte [eax], al
add byte [eax], bh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [ecx], ah
int3
ret
jmp 0x429083
push edi
call dword [ebp - 0x10]
test esi, esi
jb 0x423383
je 0x4290a8
jne 0x42909b
invalid
push esi
call fcn.004341fe
add esp, 4
out dx, al
jmp 0xc1a9a1d2
test cl, 0x53
add esp, 4
inc edi
sbb ecx, dword [eax + 0x4468be4]
shr ebp, 0x40
mov ebx, dword [esi + 8]
mov ebx, dword [ebp + ebx]
lea esi, [esi + 0xc]
sbb word [ebx], ax
jmp 0x44b1d9
add eax, 0x4c481b1
add byte [eax], al
add byte [ecx], dh
ror byte [edi], 0x82
mov ch, 0xc1
invalid
jmp 0x43e218
push edi
call dword [ebp - 0x10]
push esi
call fcn.004341fe
mov ecx, dword [ebp - 0xc]
stc
add esp, 4
jmp 0x43e22e
push ecx
ja 0x4498f4
jbe 0x43e23a
pushfd
xor al, 0xf
xchg byte [esi + esi*4 - 0x4bfb0000], dh
jbe 0x4498f4
add eax, 0x24448fb4
cld
pop edx
sub byte [esi + 0x13], 0x44
inc ebx
add bh, bh
inc dword [eax]
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [edx - 4], ah
inc ebx
add byte [ebp - 0x72], bl
inc ecx
add byte [eax + eax], al
add byte [ecx + edx*8 - 0x3229ffbf], dh
mov ebx, 0x300040e9
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [edx], bh
xor byte [eax + eax + 0x44], al
adc byte [eax + eax + 0x34], al
add byte [eax], al
add byte [eax + eax], dh
add byte [eax], al
push es
rol dword [ecx], cl
adc dword [bp + di], eax
push ax
inc ebx
add byte [eax + eax], al
add byte [eax + eax], al
add byte [edx], cl
pop es
inc ebx
add byte [0xf00442d], bh
mov byte [0xadebc390], al
inc ebx
add byte [eax], dh
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [edx + 0x30], al
inc esp
add byte [eax + edx + 0x44], al
add byte [eax + eax], dh
add byte [eax], al
xor al, 0
add byte [eax], al
sbb esi, dword [esi]
inc ebx
add byte [eax], al
popal
add byte [eax + 0x34], al
add byte [ecx], ah
add byte [eax], al
inc edx
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
inc eax
add byte [eax], al
xor byte [eax], al
add byte [eax], al
cwde
mov dh, 0x43
add byte [ebp - 0x72], bl
inc ecx
add byte [eax + eax], al
add byte [esi], bh
xchg ecx, eax
inc esp
add byte [ecx + 0x11], ah
inc ebx
add dl, bl
pop eax
mov eax, dword [eax + 8]
test eax, eax
jb 0x43aaab
je 0x442db4
jne 0x442daa
cpuid
ret
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [ecx], eax
lea ebp, [ebp]
xor eax, eax
jb 0x435f7d
pop ebp
ret
call fcn.0041b4bb
push 0x417339
ret
jmp 0x448685
push edx
push 0
lea eax, [ebp - 0x3c]
push 0
jmp 0x44868f
push eax
push edi
xchg ebx, edx
xchg edx, ebx
call dword [ebp - 0x14]
mov eax, dword [ebp - 4]
push eax
mov ebx, eax
call fcn.004341e7
mov esi, eax
add esp, 4
test esi, esi
jb 0x42ab43
je 0x44990c
jne 0x4486c0
xchg cl, al
lea ecx, [ebp - 4]
shr dx, 0x40
push 0
shl edx, 0x20
push ecx
push ebx
mov eax, eax
lea edx, [ebp - 0x3c]
push esi
shl ebx, 0x20
push edx
shl si, 0x20
push edi
mov dword [esi], 5
mov dl, dl
call dword [ebp - 0x14]
test eax, eax
jb 0x42ab5d
ja 0x44958c
jbe 0x4486fd
xor byte [eax], 0xd7
jbe 0x44958c
xor eax, 0x24648d31
add al, 0x8d
add al, 0xb
call dword [sym.imp.KERNEL32.dll_GetLastError]
test edx, 0xc80a1c5a
cmp eax, 0x103
je 0x429082
jne 0x44956d
cpuid
ret
jmp 0x44956e
push esi
mov dx, dx
call fcn.004341fe
ja 0x42c187
jbe 0x449584
cpuid
nop
ret
jbe 0x42c187
or byte [ecx + 0xf], 0x84
test dword [edi + edi*8 - 1], ecx
je 0x43e217
jne 0x449598
cpuid
nop
ret
mov eax, dword [ebp - 0x18]
xchg dl, cl
xchg cl, dl
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x20], eax
mov dh, dh
lea ebx, [esi + 4]
inc ecx
add eax, 0x100
push ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x18], eax
ja 0x4483ea
jbe 0x4495c3
nop
cpuid
ret
jbe 0x4483ea
xor al, 0
adc eax, dword [ebx + eax*2]
invalid
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xchg bp, ax
xchg bp, ax
pop edi
mov ah, ah
pop esi
pop ebx
mov bx, bx
mov esp, ebp
pop ebp
ret
push edi
call dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
xchg ch, dl
xchg dl, ch
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ja 0x42907f
jbe 0x449931
je 0x4499a8
xchg byte [edi + ecx - 0x208b77a], al
inc dword [edx + 0xc60e8de]
std
jbe 0x42907f
sbb dh, 0xe8
pushal
or al, 0xfd
inc edi
sahf
shl ebx, 0x20
mov ecx, dword [esi]
cmp ax, ax
add esi, 8
or eax, eax
jae 0x449956
cpuid
fcmovnb st(0), st(3)
jae 0x42933c
loopne 0x4499ca
and byte [esp + eax + 0xf], bh
mov byte [0x768dc390], al
or byte [edi], cl
and dword [0x51fffc33], 0x3027059
push cs
lea esp, [esp + 4]
mov ecx, dword [ebp - 8]
jne 0x41a5f0
je 0x44ab5b
jmp 0x44abd8
je 0x41a5f0
mov ebx, 0x300040e9
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [edi], cl
xlatb
inc eax
add byte [esi], al
rol dword [ecx], cl
dec ebp
pop eax
inc ecx
add byte [edx], cl
pop es
inc ebx
add byte [edi - 0x36ffbb55], al
invalid
mov ah, 0xd1
inc ecx
add bl, ch
jle 0x44ac49
mov dword [edx], 2
xor byte [eax], al
add byte [eax], al
push es
rol dword [ecx], cl
leave
lodsb al, byte [esi]
inc esp
add byte [edx], cl
pop es
inc ebx
add bh, bh
stosd dword es:[edi], eax
inc esp
add ch, bl
push 0x361b643f
inc ebx
add byte [eax], al
popal
add byte [eax + 0x34], 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 byte [eax], al
add byte [eax], al
cwde
mov dh, 0x43
add al, dh
xor byte [ecx], al
dec eax
lcall 0, 0x3c0000
sbb esi, dword [esi]
inc ebx
add byte [eax], al
popal
add byte [eax + 0x34], al
add byte [ecx], ah
add byte [eax], al
dec edx
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
inc eax
add byte [eax], al
xor byte [eax], al
add byte [eax], al
cmp eax, 0x440042bc
loope 0x44ac97
add byte [esi + ecx*4 + 0x63c40041], cl
inc ecx
add byte [eax], al
add byte [eax], al
add byte [eax], cl
add byte [eax], al
mov al, byte [0x50041e3]
test byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [edx + edi*8], cl
inc eax
add ch, dl
sub al, byte [ebx]
xor eax, 0x3000007f
add byte [eax], al
add byte [ebx], dl
inc esp
inc ebx
add bh, bh
inc dword [eax]
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [ecx + 0x77], al
inc esp
inc ecx
ja 0x44acde
add byte [eax + 0x310041e3], ah
push ecx
add byte [eax], al
xor byte [eax], al
add byte [eax], al
inc esp
loope 0x44aceb
add byte [esi + 0x77], cl
inc esp
add dl, cl
pop ebp
inc ecx
add byte [ecx], dh
add byte [eax], al
add byte [ecx], dh
add byte [eax], al
add byte [ebp - 0x72], bl
inc ecx
add byte [eax + eax], al
add byte [ecx + edx*8 + 0x1e350041], dh
mov ebx, 0x300040e9
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [ebx], dl
sahf
inc ebx
add byte [esi], al
rol dword [ecx], cl
jae 0x44ac90
inc esp
add byte [eax + edx + 0x44], al
add byte [eax + eax], dh
add byte [eax], al
xor al, 0
add byte [eax], al
or al, byte [edi]
inc ebx
add ch, bh
lodsb al, byte [esi]
inc esp
add byte [edx - 0x14a81e4a], dl
lodsd eax, dword [esi]
inc ebx
add byte [eax], dh
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + 0x41], al
add byte [ebx + ebp*2 + 0x42], al
add byte [ebx], bl
inc ebx
add byte [eax], al
popal
add byte [eax + 0x34], al
add byte [ecx], ah
add byte [eax], al
dec edx
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
inc eax
add byte [eax], al
xor byte [eax], al
add byte [eax], al
cwde
mov dh, 0x43
add byte [ebp - 0x72], bl
inc ecx
add byte [eax + eax], al
add ch, ah
fadd dword [ebx]
inc esp
add byte [eax], al
add byte [eax + eax], bh
add byte [eax], al
in eax, 0xd8
inc ebx
add byte [eax + eax], bh
add byte [eax], al
inc esp
add byte [eax], al
add byte [ecx + edx*8 + 0x3f70041], dh
in eax, 0xd8
inc ebx
add byte [eax], dh
add byte [eax], al
add byte [eax + eax], bh
add byte [eax], al
in eax, 0xd8
inc ebx
add byte [eax + eax], bh
add byte [eax], al
xor byte [eax], al
add byte [eax], al
jno 0x44ad6f
inc ecx
add byte [ecx], cl
add eax, dword [eax]
add byte [eax], dh
add byte [eax], al
add byte [ebp - 0x72], bl
inc ecx
add byte [eax + eax], al
add byte [ecx + eax*2], ah
inc ebx
add byte [edi + 0x50044a2], ch
xchg esp, eax
lea esp, [esp + 4]
mov dh, dh
mov bx, bx
shr al, 0x40
mov bx, bx
mov dl, byte [esi + eax + 0x24]
stc
jb 0x44adaa
and dword [esi + 0x2f], ebp
jb 0x42001c
invalid
jmp dword [esi]