Function at 0x43c781
Capabilities:
Authenticate hmac
Check os version
Encode data using base64

Disassembly:
push esi
jmp 0x442e71
jmp 0x415240
xor al, 0x40
jmp dword [esi]
lea ecx, [ebp - 0xc]
push 6
ja 0x42745e
mov bp, bp
jbe 0x41db3a
mov bh, 0xe5
add byte [edx], dh
jbe 0x42745e
add eax, 0x24648d64
add al, 0x66
mov edi, edi
add dword [edi], ebx
js 0x41b49b
jns 0x41db57
pop es
nop
mov ss, word [ebx - 0x26c176f1]
invalid
jns 0x41b49b
push eax
lea edx, [ebp - 0x18]
push ecx
jno 0x441861
jo 0x41db6d
or dl, 0xf
sub dh, 0x3c
add al, byte [eax]
jo 0x441861
invalid
push esi
pop esi
ja 0x422bed
jbe 0x42143a
jbe 0x422bed
mov eax, dword [esi + 4]
push ecx
lea edx, [ebp - 0xc]
push 6
push edx
push 0x9c402450
push eax
mov word [ebp - 0xc], 0
mov word [ebp - 0xa], 0
call dword [0x534828]
test eax, eax
jb 0x43aebd
jne 0x4274aa
je 0x427491
and byte [ebx + 0xd66540e], al
invalid
or ax, 0xffff
jb 0x44dda0
mov esp, ebp
shl dx, 0x20
pop ebp
ret
cmp si, si
cmp word [ebp - 0xa], 0xfafa
je 0x4274d9
xchg cx, bp
xchg bp, cx
jne 0x4274c3
cmc
les esp, [esi + 0xd]
invalid
or ax, 0xffff
jb 0x432ea5
mov esp, ebp
pop ebp
xchg dx, bx
xchg bx, dx
ret
mov di, di
mov ax, word [ebp - 8]
mov esp, ebp
mov ax, ax
pop ebp
ret
lea esp, [esp + 4]
mov ebx, dword [esi + 4]
lea esi, [esi + 8]
jno 0x444710
jo 0x4292f9
xchg ecx, eax
or eax, 0xb411800f
add dword [eax], eax
jo 0x444710
xor al, 0xda
jne 0x429335
je 0x42930d
mov cs, word [eax + 0x65e8711d]
ja 0x429311
call fcn.00430a77
test eax, eax
jb 0x42aea0
add byte [ebp - 0x797df040], al
sbb eax, dword [eax]
add byte [edi], cl
test dword [0x74000000], edx
add edx, dword [ebx - 0x12]
jne 0x429335
je 0x429325
push ebx
out dx, al
invalid
clc
xor ax, ax
jb 0x42aeb7
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 4]
push 0
shl dl, 0x20
push eax
mov eax, dword [ebp + 8]
js 0x41db26
jns 0x42934c
clc
hlt
jns 0x41db26
add eax, 0x2e2819e
add byte [eax], al
add byte [edi], cl
add byte [ecx - 4], 0xfe
call [ebx + 0x4a]
push edx
invalid
add esp, 4
test ebx, ebx
jb 0x441b91
jne 0x44f084
je 0x42ade2
lodsb al, byte [esi]
lodsb al, byte [esi]
jge 0x42adb7
push ebx
push ebx
push 3
push ebx
push 3
push 0xc0000000
push 0x534853
call dword [sym.imp.KERNEL32.dll_CreateFileA]
stc
cmp eax, 0xffffffff
shr di, 0x40
mov dword [0x534129], eax
ja 0x423ea5
jbe 0x42ae12
scasb al, byte es:[edi]
cmp cl, byte [edi]
xchg byte [ebp - 0x38000070], cl
je 0x42ae83
jbe 0x423ea5
invalid
mov ebx, 0xeb005349
inc eax
push esp
stosd dword es:[edi], eax
shr eax, 0x40
jne 0x43aeb7
je 0x42aeb1
nop
cpuid
ret
je 0x43aeb7
xor eax, 0x4810f7c
jle 0x42aec0
add byte [eax + 2], dh
push ecx
mov dl, 0xf
cmp dl, 0x7d
add al, byte [eax]
add dl, byte [ecx - 0x4e]
jo 0x452cc3
and eax, 0x4206cdf1
add byte [eax + eax], al
add byte [edx + ecx*2], ah
inc edx
add byte [ebp + 0x421483c3], cl
add byte [edx + eax*8], dl
inc esp
add byte [ebp + 0x1e], ch
inc ebx
add ah, ch
scasb al, byte es:[edi]
inc edx
add byte [esi], cl
out 0x4d, al
insd dword es:[edi], dx
push ds
inc ebx
add byte [edx + eax*8], dl
inc esp
add bh, al
ret
jne 0x438ed0
je 0x42c310
jmp 0x42c364
fnstcw word [edi]
inc ebx
add byte [edx], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [edx], bh
salc
inc ecx
add byte [ecx], bh
add byte [eax], al
add byte [ecx], bh
add byte [eax], al
add byte [esi + 0x4b], dh
inc edx
add dh, dl
les eax, [edx]
jp 0x42c405
inc ebx
add byte [eax - 0x6fffbd3d], dl
cpuid
ret
mov ecx, 0x80043
add byte [eax], al
xor al, 0
add byte [eax], al
cmp dword [ebx + eax*2 + 0xff00], 0
xor al, 0
add byte [eax], al
mov ah, 0x59
inc edx
add byte [ebx], cl
adc al, byte [eax + eax + 0xf]
lahf
inc edx
add byte [eax + eax], al
add ch, cl
push es
inc edx
add byte [eax + eax], al
add byte [ecx + edi*4 + 0x160041], al
add byte [eax], al
xor byte [eax], al
add byte [eax], al
mov ebp, dword [esi + 0x61000043]
add byte [eax + 0x38], al
add dword [ecx], esp
xor byte [eax + eax], 0
add byte [eax], al
and dword [eax], eax
add byte [esi], cl
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
lodsd eax, dword [esi]
xor al, 0x43
add byte [ecx + ebx*2 - 0x3996ffbe], dh
inc esp
add byte [ecx + edi*4 + 0x1480041], al
add byte [eax], al
xor byte [eax], al
add byte [eax], al
pop ss
outsd dx, dword [esi]
inc edx
add bh, al
nop
inc ecx
add byte [0x3d000000], bh
add byte [eax], al
add byte [ebx - 0xffbc44], al
inc dword [eax]
add byte [eax], dh
add byte [eax], al
add byte [ecx + ebx*2 + 0x56c20042], dh
inc edx
add bh, dl
or al, 0x42
add byte [eax], ah
add byte [eax], al
add byte [eax], cl
add byte [eax], al
int 6
inc edx
add byte [eax + eax], al
add byte [edx + ecx*2], ah
inc edx
add byte [edi + edi*8 + 0x55], al
push ecx
inc esp
add byte [eax + eax], al
add byte [eax], cl
add byte [eax], al
push ebp
push ecx
inc esp
add byte [eax], cl
add byte [eax], al
inc esp
add byte [eax], al
add al, bh
insd dword es:[edi], dx
inc ebx
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ebx], ch
bound eax, qword [ecx]
xor byte [eax], al
add byte [eax], al
xor byte [eax], al
add byte [eax], al
mov ah, 0x59
inc edx
add dl, cl
push esi
inc edx
add byte [ecx + edi*4 - 0x5004ffbd], dl
inc ebx
add byte [edx + ebx*2], dh
mov ebp, dword [esi + 0x41000043]
add byte [eax + 0x40], al
add byte [ecx], al
add byte [eax], al
add al, 0
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [eax], al
pop edi
imul eax, dword [edx], 0x13
pop ecx
inc esp
add dh, dl
enter 0x43, 0x40
add byte [eax], al
add byte [eax + eax], al
add byte [ebp + 0x51], dl
inc esp
add byte [eax], bh
add byte [eax], al
add byte [eax + eax], cl
add byte [ebp + 0x51], dl
inc esp
add byte [eax + eax], cl
add byte [eax], bh
add byte [eax], al
add byte [ebp - 0x47], al
inc ebx
add byte [eax], cl
add byte [eax], al
add byte [eax], bh
add byte [eax], al
add byte [edi], cl
lahf
inc edx
add byte [eax], cl
add byte [eax], al
mov ah, 0x88
inc esp
add byte [eax], dh
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ebx + 0x43ae], cl
popal
add byte [eax + 0x38], al
add byte [ecx], ah
add byte [eax], al
mov edx, 0
adc al, byte [eax]
add byte [eax], al
inc edx
add byte [eax], al
xor byte [eax], al
add byte [eax], al
movsb byte es:[edi], byte [esi]
rol byte [ecx], 0xd9
aas
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ebx + ecx*2 + 0x42], dh
add byte [ebx + 0x7a004331], dl
jg 0x42c5ea
add byte [eax + 0x780042c5], dh
je 0x42c565
daa
jp 0x42c631
inc ebx
add byte [ebx + 0x35004331], dl
fucomp st(3)
push eax
push esi
call fcn.0043dde4
mov cx, word [edi + 0x28]
jmp 0x42c5c8
push ecx
jmp 0x42c5cb
push esi
call fcn.004172fe
mov edx, dword [edi + 0x40]
push edx
push esi
call fcn.0044d7b3
mov eax, dword [edi + 0x3c]
add esp, 0x28
test al, 7
jb 0x441a03
adc eax, 0xf000154
test dword [eax], ebp
add byte [eax], al
add byte [esp + eax + 0x29], dh
push ds
jne 0x42c61c
je 0x42c5fa
sub dword [esi], edi
push ds
mov bl, 0x89
shl byte [esi - 0x3f], cl
jmp 0x42c640
mov edx, edx
shr bx, 0x40
shr eax, 3
push eax
jmp 0x42c606
push esi
call fcn.00423f83
push 0
push esi
call fcn.00451fa8
jmp 0x41da63
shr eax, 3
inc eax
push eax
jmp 0x42c622
push esi
call fcn.00423f83
mov al, byte [edi + 0x3c]
jmp 0x431f61
adc eax, 0x95880fe9
invalid
invalid
push esi
call fcn.00422d2b
sub dh, 0
add esp, 4
cmp eax, 4
jbe 0x43ca86
ja 0x42ede8
xchg ebx, eax
and ebp, dword [eax - 0x51]
dec ecx
push ebx
add byte [esi - 0x18], dl
cmp byte [edi], bh
invalid
push str..alf
push esi
call fcn.00422d2b
test di, 0xe236
add esp, 4
lea eax, [eax + esi - 4]
push eax
call fcn.004318b9
add esp, 8
stc
test eax, eax
jb 0x42426c
jne 0x43ca86
mov ecx, ecx
je 0x42ee26
nop
cpuid
ret 0x4d8b
mov ecx, dword [ebp + 0xc]
shr ebx, 0x40
push ecx
ja 0x4295c1
jbe 0x42ee3a
nop
cpuid
ret
jbe 0x4295c1
invalid
add edi, edi
mov ebx, dword cs:[esi + 4]
mov ebx, dword [ebp + ebx]
lea esi, [esi + 8]
inc word [ebx]
jmp dword [esi]
xchg edi, eax
jge 0x432e68
out dx, al
inc eax
mov eax, dword [esi + 4]
xchg cx, bp
xchg bp, cx
mov ebx, dword [esi + 8]
mov ebx, dword [ebp + ebx]
lea esi, [esi + 0xc]
add dword [ebx], eax
jmp dword [esi]
mov cl, byte [eax + 0xbc]
mov dl, byte [eax + edi + 0x24]
sub cl, 2
xor dl, cl
jb 0x4369b6
add dl, 0x80
mov byte [ebp + edi - 0x24], dl
js 0x43e3be
jns 0x433171
cpuid
xor bl, al
jns 0x43e3be
invalid
sbb byte [ecx + 0x66], 0x85
add ecx, dword [edi]
add byte [edi], 0xdb
add byte [eax], al
jmp dword [esi]
mov esi, dword [esi]
push esi
pop esi
jmp dword [esi]
shr ch, 0x40
call dword [0x534828]
push edi
shl ebp, 0x20
shr si, 0x40
mov ebx, eax
call fcn.0042a6e4
js 0x42adc8
jns 0x4374df
in al, dx
jns 0x42adc8
jns 0x42adc8
xor eax, 0xe9850f63
xchg esp, eax
invalid
lea eax, [ebp - 4]
shl ebp, 0x20
push eax
call fcn.0042a897
add esp, 4
pop edi
pop esi
xor eax, eax
jb 0x4263cd
pop ebx
push 0x422333
ret
mov ecx, 0x2020202
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], ecx
test cl, cl
leave
jb 0x422077
ja 0x42c306
jbe 0x439117
jnp 0x439104
mov word [0x31e9860f], gs
invalid
jbe 0x42c306
fcmovu st(0), st(7)
mov ebp, dword [esi + 0x61000043]
add byte [eax + 0x34], al
add byte [ecx], ah
add byte [eax], al
or al, byte [eax]
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], cl
das
inc esp
add ch, cl
push es
inc edx
add byte [eax + eax], al
add byte [edx + ecx*2], ah
inc edx
add byte [edi + 0x43d26e0c], al
add byte [eax], dh
add byte [eax], al
add byte [eax + eax], bh
add byte [eax], al
outsb dx, byte [esi]
rol byte [ebx], cl
cmp al, 0
add byte [eax], al
xor byte [eax], al
add byte [eax], al
xlatb
or al, 0x42
add byte [eax], ah
add byte [eax], al
add byte [eax + eax], al
add byte [ebx], bh
pop es
inc edx
add byte [eax], al
add byte [eax], al
cmp eax, 0x9f000000
out dx, eax
inc esp
add byte [esi + 0xf00419e], dh
js 0x4391cf
add byte [0x35880f51], al
sar ebp, cl
invalid
jo 0x437426
and eax, 0x24648dbb
add al, 0xf
xchg edi, ecx
mov esp, 0xe488ffff
jbe 0x4391e7
in eax, 0x3f
jne 0x449ff3
shr cx, 0x40
je 0x4391f6
sbb byte [esi + ebp], 0xf
test bh, dh
or eax, 0x89d80001
and al, 0x4a
inc edx
add byte [ebp + 0x24648d56], dh
lea esp, [esp - 0x68]
je 0x449ff3
fmul dword [ecx + 0x424a24]
mov ch, 0x56
pop ebp
ret
jne 0x440795
je 0x439ee8
and al, bh
je 0x440795
invalid
push 0x44dd88
ret
xor eax, 0xa0850f7a
inc eax
invalid
and eax, 0x4287141e
add byte [ebx], cl
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [edx + edi], cl
inc edx
add byte [0x34000000], al
add byte [eax], al
add byte [ebp + 0x3400435d], ch
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [ecx + ebx*2 - 0x40b2ffbe], dh
inc ebx
add byte [edx + 0x480042e6], bl
add byte [eax], al
add byte [eax], cl
add byte [eax], al
inc ebp
mov dword [0xb0043], eax
add byte [eax], al
xor byte [eax], al
add byte [eax], al
adc dword [edx + eax*2], 0
xchg edi, eax
jge 0x43c7b0
add byte [ebp + 0x1e], ch
inc ebx
add byte [edi - 0x39], dh
inc ebx
add byte [ebp - 0x27], bh
insd dword es:[edi], dx
push ds
inc ebx
add byte [edi + 0x500447d], dl
test byte [ebp + 0x66042464], 0x8b
lea esp, [esp + 4]
mov dx, word [ebp + 0x10]
invalid
invalid
invalid
add dh, byte [esi - 0x2576f01a]
push esp
invalid
lea ecx, [ebp - 4]
xchg cl, dh
xchg dh, cl
lea edx, [ebp - 0x214]
jmp 0x43ca94
push ecx
push edx
xchg ebp, edi
xchg edi, ebp
call fcn.0043b59e
call 0x440813
fimul dword [eax - 0x75]
inc ebp
xor byte [eax + 0x19], ch
cmp eax, 0xc7c30044
stc
js 0x44e0f7
jns 0x43cabe
dec ebx
adc ecx, dword [ecx - 0x3e]
jns 0x44e0f7
fchs
ficomp dword [eax]
inc edi
cmp edi, 8
jl 0x433149
jge 0x43e3d1
test eax, 0xe9ca5051
add eax, 0xd1ffffab
int1
jmp 0x438edb
clc
cmp cl, 2
jne 0x439103
je 0x43e3e8
pop ebx
bound edx, qword [esi + 0xe0de958]
invalid
jmp 0x41f1fa
push 8
lea ecx, [ebp - 0x10]
push 0x5340f4
push ecx
call fcn.00422c34
add esp, 0xc
test al, al
jb 0x423a08
jne 0x44defa
je 0x4407c0
mov dl, byte [ecx - 0x13]
ret 0x86a
push 8
lea edx, [ebp - 8]
push 0
push edx
call fcn.0041e3ef
mov eax, dword [esi]
push 0x100
js 0x44cab8
shr edi, 0x40
jns 0x4407e3
pop esi
xchg eax, edi
dec ecx
jns 0x44cab8
fiadd dword [ebx - 0x77f4ba76]
fcmovnb st(0), st(0)
loope 0x440813
jmp 0x4407f4
push esi
mov ah, ah
mov bh, bh
mov byte [esi + 0xba], bl
jno 0x4196f8
jo 0x44080b
pop esi
sti
sbb al, 0xf
and bh, 0x8e
std
inc dword [edx + 0x24448f4d]
cld
jo 0x4196f8
or byte [ebp - 0x71], 0x44
and al, 0xfc
pop dword [esp - 4]
mov esi, eax
add si, 0x6742
sub si, 0x6742
add esp, 8
test esi, esi
jb 0x419fe7
mov ah, ah
je 0x437521
jne 0x44083f
cmp esi, edi
movsd dword es:[edi], dword [esi]
sahf
jmp 0x42edc9
mov cx, word [edi + 2]
lea eax, [ebp - 0x14]
push edx
mov dx, word [edi]
jmp 0x44186e
push eax
push ecx
jmp 0x441873
push edx
jmp 0x441876
push esi
call 0x4196a5
mov ebx, eax
add esp, 0x1c
test bx, bx
jb 0x41791d
mov ecx, ecx
je 0x4456fa
jne 0x44189a
mov al, 0x5a
push edi
call fcn.00435b32
cmp dx, dx
add esp, 4
jne 0x4505e4
je 0x4418b5
mov cl, byte [ebp + 0x4d]
test byte [edi], 0x84
sub ebp, ebp
add byte [eax], al
je 0x4505e4
fadd dword [edx - 0xc001a77]
mov dh, 0xd2
xchg bh, dl
xchg dl, bh
mov eax, dword [esi + 4]
xchg dh, ah
xchg ah, dh
push 0x424dfd
ret
fiadd dword [ebx + 0xf]
xchg edx, eax
dec edx
invalid
push 0x421a7f
ret
dec byte [ebp + ebx]
jmp dword [esi]
shr byte [edx], cl
jne 0x42142d
je 0x445e46
je 0x42142d
and byte [esi - 0x73], 0x64
and al, 4
lea esi, [esi + 8]
cmp bx, bx
mul byte [ebp + ebx]
push eax
pop eax
mov dword [ebp + 0x30], eax
call fcn.0042058a
xor al, 0x86
xor ecx, ecx
jb 0x41a50d
mov cl, byte [eax + 0x4271ff]
jmp dword [ecx*4 + 0x4271a5]
invalid
invalid