Function at 0x4c9940
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 0x4c9d28
cmp eax, 0x10
jb 0x4c9d28
lea edi, [eax - 0x10]
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x1c], edi
cmp dword [eax], edi
jb 0x4c9d28
xor esi, esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], esi
call fcn.0053ba10
test byte [eax + 5], 0x20
je 0x4c9afd
cmp dword [ebx + 0xc], 0x50
jb 0x4c9afd
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x140]
push eax
push 1
push dword [ebx + 0x18]
call fcn.004c9d40
add esp, 0x10
test al, al
je 0x4c9afd
cmp edi, 0x3f
jbe 0x4c9adf
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 0x4c9a63
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 0x4c9a40
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 0x4c9a00
jmp 0x4c9ae2
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 0x4c9af0
jmp 0x4c9b03
mov edi, dword [ebx + 0x1c]
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 0x1c]
cmp esi, eax
jae 0x4c9baa
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.005e9860
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 0x4c9b23
je 0x4c9bc8
push str.nDecrypted__cubEncryptedData___k_nSymmetricBlockSize
push 0x1b3
push str.c:_buildslave_steam_rel_client_hotfix_win32_build_srccommoncrypto_aescbc_openssl.cpp
call fcn.00534490
add esp, 0xc
test al, al
jne 0x4c9bc8
int3
push dword [ebx + 0x18]
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebx + 8]
add eax, esi
push eax
call fcn.005e9860
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 0x4c9c00
cmp byte [ebx + 0x20], 0
mov al, byte [ebp - 0x1d]
mov esi, dword [ebp - 0x14]
mov byte [ebp - 1], al
je 0x4c9cab
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 0x4c9c50
test dh, dh
jne 0x4c9d28
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 0x4c9d28
lea eax, [esi + 0x10]
cmp edx, eax
jb 0x4c9ced
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 0x4c9d10
mov edi, 0x10
sub edi, ecx
test edi, edi
jle 0x4c9d0d
mov eax, dword [ebx + 0x10]
lea ecx, [ebp - 0x2c]
push edi
add eax, esi
push ecx
push eax
call fcn.0054ca20
add esp, 0xc
add esi, edi
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x14]
cmp dword [eax], esi
jbe 0x4c9d1b
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