Function at 0xba9660
Capabilities:
Decrypt data using aes via x86 extensions
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, dword [ebx + 0xc]
sub esp, 0x148
push esi
push edi
test al, 0xf
jne 0xba9a48
cmp eax, 0x10
jb 0xba9a48
lea edi, [eax - 0x10]
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x1c], edi
cmp dword [eax], edi
jb 0xba9a48
xor esi, esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], esi
call fcn.00c1b550
test byte [eax + 5], 0x20
je 0xba981d
cmp dword [ebx + 0xc], 0x50
jb 0xba981d
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x140]
push eax
push 1
push dword [ebx + 0x18]
call fcn.00ba9a60
add esp, 0x10
test al, al
je 0xba981d
cmp edi, 0x3f
jbe 0xba97ff
mov edi, dword [ebx + 0x10]
mov edx, dword [ebx + 8]
mov ecx, dword [ebp - 0x10]
movups xmm5, xmmword [ebp - 0x140]
lea eax, [edi + 0x30]
add ecx, ecx
sub edi, edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x30], edi
lea eax, [edx + 0x20]
mov edi, 0x1f
mov dword [ebp - 8], eax
sub edi, edx
mov dword [ebp - 0x18], edi
mov edi, dword [ebx + 0x1c]
lea ecx, [ecx]
cmp dword [ebp - 0x10], 1
movups xmm0, xmmword [eax]
movups xmm6, xmmword [eax - 0x20]
movups xmm7, xmmword [eax - 0x10]
movups xmm4, xmmword [eax + 0x10]
movaps xmm1, xmm6
movaps xmmword [ebp - 0x50], xmm0
movaps xmm2, xmm7
movaps xmm3, xmm0
pxor xmm1, xmm5
pxor xmm2, xmm5
pxor xmm3, xmm5
pxor xmm4, xmm5
jle 0xba9783
mov edx, dword [ebp - 0x10]
lea eax, [ebp - 0x130]
dec edx
lea esp, [esp]
lea eax, [eax + 0x10]
movups xmm0, xmmword [eax - 0x10]
aesdec xmm1, xmm0
aesdec xmm2, xmm0
aesdec xmm3, xmm0
aesdec xmm4, xmm0
sub edx, 1
jne 0xba9760
mov eax, dword [ebp - 8]
movups xmm0, xmmword [ebp + ecx*8 - 0x140]
mov esi, dword [ebp - 0x30]
aesdeclast xmm1, xmm0
movups xmm0, xmmword [edi]
mov edi, dword [ebp - 0xc]
add dword [ebp - 0xc], 0x40
pxor xmm1, xmm0
movups xmmword [edi - 0x30], xmm1
movups xmm1, xmmword [ebp + ecx*8 - 0x140]
aesdeclast xmm2, xmm1
pxor xmm2, xmm6
movups xmmword [edi - 0x20], xmm2
aesdeclast xmm3, xmm1
movups xmm0, xmmword [eax + 0x10]
aesdeclast xmm4, xmm1
pxor xmm4, xmmword [ebp - 0x50]
pxor xmm3, xmm7
movups xmmword [esi + eax], xmm3
mov esi, dword [ebp - 0x14]
add eax, 0x40
mov dword [ebp - 8], eax
add esi, 0x40
add eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
movups xmmword [edi], xmm4
lea edi, [ebp - 0x40]
mov dword [ebp - 0x14], esi
movups xmmword [ebp - 0x40], xmm0
jb 0xba9720
jmp 0xba9802
mov edi, dword [ebx + 0x1c]
mov dword [ebp - 0xc], edi
lea eax, [ebp - 0x140]
mov ecx, 0xf0
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0xba9810
jmp 0xba9823
mov edi, dword [ebx + 0x1c]
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 0x1c]
cmp esi, eax
jae 0xba98ca
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 8]
lea eax, [edx + 8]
add eax, esi
mov dword [ebp - 8], eax
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x18], eax
push dword [ebx + 0x18]
lea eax, [ebp - 0x2c]
add esi, ecx
push eax
push esi
call fcn.00cc93d0
mov eax, dword [ebp - 0x2c]
add esp, 0xc
xor eax, dword [edi]
mov edx, dword [ebp - 0xc]
mov ecx, dword [esi + 4]
mov dword [ebp - 0x30], eax
mov eax, dword [edi + 4]
xor eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x24]
xor edi, dword [edx + 8]
mov edx, dword [edx + 0xc]
xor edx, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov eax, dword [esi]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x40], eax
mov eax, dword [esi + ecx]
mov ecx, dword [esi + ecx + 4]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x34], ecx
add esi, 0x10
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x14], esi
mov dword [ecx - 8], eax
mov eax, dword [ebp - 0x10]
mov dword [ecx - 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [ecx], edi
lea edi, [ebp - 0x40]
mov dword [ecx + 4], edx
add ecx, 0x10
mov dword [ebp - 8], ecx
mov ecx, dword [ebx + 8]
mov dword [ebp - 0xc], edi
cmp esi, eax
jb 0xba9843
je 0xba98e8
push str.nDecrypted__cubEncryptedData___k_nSymmetricBlockSize
push 0x1b3
push str.c:_buildslave_steam_rel_client_hotfix_win32_build_srccommoncrypto_aescbc_openssl.cpp
call fcn.00c13fe0
add esp, 0xc
test al, al
jne 0xba98e8
int3
push dword [ebx + 0x18]
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebx + 8]
add eax, esi
push eax
call fcn.00cc93d0
lea eax, [ebp - 0x2c]
add esp, 0xc
sub eax, edi
lea edx, [ebp - 0x2b]
mov dword [ebp - 8], eax
lea ecx, [edi + 2]
mov esi, dword [ebp - 8]
mov eax, edx
sub eax, edi
mov edi, 4
mov dword [ebp - 0x18], eax
lea ebx, [ebx]
mov al, byte [ecx - 2]
lea ecx, [ecx + 4]
xor byte [edx - 1], al
mov al, byte [ecx - 5]
xor byte [edx], al
add edx, 4
mov al, byte [ecx - 4]
xor byte [esi + ecx - 4], al
mov esi, dword [ebp - 0x18]
mov al, byte [ecx - 3]
xor byte [esi + ecx - 4], al
mov esi, dword [ebp - 8]
sub edi, 1
jne 0xba9920
cmp byte [ebx + 0x20], 0
mov al, byte [ebp - 0x1d]
mov esi, dword [ebp - 0x14]
mov byte [ebp - 1], al
je 0xba99cb
movzx ecx, al
mov dh, al
dec ecx
dec dh
and ecx, 0xf
mov eax, 0x1fffe
and dh, 0xf0
shl eax, cl
xor edi, edi
mov dl, byte [ebp + edi - 0x2c]
mov ecx, eax
xor dl, byte [ebp - 1]
add eax, eax
sar ecx, 0x1f
and dl, cl
mov ecx, eax
or dh, dl
sar ecx, 0x1f
mov dl, byte [ebp + edi - 0x2b]
add eax, eax
xor dl, byte [ebp - 1]
and dl, cl
mov ecx, eax
or dh, dl
sar ecx, 0x1f
mov dl, byte [ebp + edi - 0x2a]
add eax, eax
xor dl, byte [ebp - 1]
and dl, cl
mov ecx, eax
or dh, dl
sar ecx, 0x1f
mov dl, byte [ebp + edi - 0x29]
add eax, eax
xor dl, byte [ebp - 1]
add edi, 4
and dl, cl
or dh, dl
cmp edi, 0x10
jl 0xba9970
test dh, dh
jne 0xba9a48
mov al, byte [ebp - 1]
dec al
mov edi, esi
and al, 0xf
inc al
movzx ecx, al
mov eax, dword [ebx + 0x14]
sub edi, ecx
add edi, 0x10
mov edx, dword [eax]
cmp edx, edi
jb 0xba9a48
lea eax, [esi + 0x10]
cmp edx, eax
jb 0xba9a0d
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [esi + ecx], eax
mov eax, dword [ebp - 0x28]
mov dword [esi + ecx + 4], eax
mov eax, dword [ebp - 0x24]
mov dword [esi + ecx + 8], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + ecx + 0xc], eax
mov esi, edi
jmp 0xba9a30
mov edi, 0x10
sub edi, ecx
test edi, edi
jle 0xba9a2d
mov eax, dword [ebx + 0x10]
lea ecx, [ebp - 0x2c]
push edi
add eax, esi
push ecx
push eax
call fcn.00c2c570
add esp, 0xc
add esi, edi
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x14]
cmp dword [eax], esi
jbe 0xba9a3b
mov byte [esi + ecx], 0
mov dword [eax], esi
mov al, 1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
pop edi
xor al, al
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret