Function at 0x4c2a20
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xe8
mov eax, dword [0x4dc00c]
xor eax, esp
mov dword [esp + 0xe4], eax
push esi
push edi
lea ecx, [esp + 0x68]
call fcn.004c27b0
movaps xmm0, xmmword [0x4d8d20]
xor ecx, ecx
movups xmmword [esp + 0x28], xmm0
movaps xmm0, xmmword [0x4d7d90]
movups xmmword [esp + 0x38], xmm0
movaps xmm0, xmmword [0x4d7950]
movups xmmword [esp + 0x48], xmm0
movaps xmm0, xmmword [str.CBMLO_______]
movups xmmword [esp + 0x58], xmm0
mov al, byte [esp + 0x28]
xor byte [esp + ecx + 0x29], al
inc ecx
cmp ecx, 0x3e
jb 0x4c2a77
xorps xmm0, xmm0
mov byte [esp + 0x67], 0
lea ecx, [esp + 0x29]
movaps xmmword [esp + 0xc0], xmm0
mov dword [esp + 0xd0], 0
lea edx, [ecx + 1]
mov dword [esp + 0xd4], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c2ab2
sub ecx, edx
lea eax, [esp + 0x29]
push ecx
push eax
lea ecx, [esp + 0xc8]
call fcn.004b8860
mov byte [esp + 0x18], 0x5c
mov cl, 0x69
xor cl, byte [esp + 0x18]
mov al, 0x14
xor al, byte [esp + 0x18]
mov ch, 0x2b
mov byte [esp + 0x19], al
mov dl, 0x15
mov byte [esp + 0x1a], cl
mov dh, 5
mov cl, byte [esp + 0x18]
mov ah, 0x3b
mov byte [esp + 0x27], 0x28
xor dl, cl
mov al, byte [esp + 0x27]
xor ch, cl
xor al, cl
mov byte [esp + 0x26], 0x38
mov byte [esp + 0x1f], al
xor dh, cl
mov al, byte [esp + 0x26]
xor ah, cl
xor al, cl
mov byte [esp + 0x16], 6
mov byte [esp + 0x20], al
xorps xmm0, xmm0
mov al, byte [esp + 0x16]
xor al, cl
mov byte [esp + 0x1d], ch
lea ecx, [esp + 0x19]
mov byte [esp + 0x22], 0
mov byte [esp + 0x1b], dl
mov byte [esp + 0x1e], dh
lea edx, [ecx + 1]
mov byte [esp + 0x1c], ah
mov byte [esp + 0x21], al
mov byte [esp + 0x22], 0
movaps xmmword [esp + 0x80], xmm0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c2b70
sub ecx, edx
lea eax, [esp + 0x19]
push ecx
push eax
lea ecx, [esp + 0x88]
call fcn.004b8860
mov byte [esp + 0x18], 0x7a
mov cl, 0x3b
xor cl, byte [esp + 0x18]
mov al, 0xe
xor al, byte [esp + 0x18]
mov dh, 0x35
mov byte [esp + 0x19], al
mov ch, 0x37
mov byte [esp + 0x1a], cl
mov dl, 0xd
mov cl, byte [esp + 0x18]
xor ah, ah
mov byte [esp + 0x16], 0x36
xor dl, cl
mov al, byte [esp + 0x16]
xor ch, cl
xor al, cl
mov byte [esp + 0x26], dh
xor dh, cl
mov byte [esp + 0x1f], al
mov al, byte [esp + 0x26]
xor ah, cl
xor al, cl
mov byte [esp + 0x1d], ch
xorps xmm0, xmm0
mov byte [esp + 0x1b], dl
lea ecx, [esp + 0x19]
mov byte [esp + 0x1e], dh
mov byte [esp + 0x1c], ah
lea edx, [ecx + 1]
mov byte [esp + 0x20], al
mov byte [esp + 0x21], 0
movaps xmmword [esp + 0xa0], xmm0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c2c12
sub ecx, edx
lea eax, [esp + 0x19]
push ecx
push eax
lea ecx, [esp + 0xa8]
call fcn.004b8860
mov byte [esp + 0x18], 0x10
mov al, 0x61
xor al, byte [esp + 0x18]
mov cl, 0x76
xor cl, byte [esp + 0x18]
mov ah, 0x42
mov byte [esp + 0x19], al
mov ch, 0x26
mov byte [esp + 0x1a], cl
mov dl, 0x43
mov cl, byte [esp + 0x18]
mov dh, 0x21
mov byte [esp + 0x16], 0x5e
xor ah, cl
mov al, byte [esp + 0x16]
xor ch, cl
xor al, cl
mov byte [esp + 0x26], 0x75
mov byte [esp + 0x1f], al
xor dl, cl
mov al, byte [esp + 0x26]
xor dh, cl
xor al, cl
mov byte [esp + 0x27], 0x40
mov byte [esp + 0x20], al
mov al, byte [esp + 0x27]
xor al, cl
mov byte [esp + 0x17], 0x46
mov byte [esp + 0x21], al
mov al, byte [esp + 0x17]
xor al, cl
mov byte [esp + 0x1c], ah
mov byte [esp + 0x22], al
lea eax, [esp + 0x19]
mov byte [esp + 0x1d], ch
lea ecx, [esp + 0xa0]
mov byte [esp + 0x23], 0
push eax
mov byte [esp + 0x1f], dl
mov byte [esp + 0x22], dh
mov byte [esp + 0x27], 0
call fcn.004b7600
mov al, 0x1d
mov byte [esp + 0x18], 0x77
mov ch, al
mov byte [esp + 0x17], 0x3b
xor al, byte [esp + 0x18]
mov cl, 0x12
mov byte [esp + 0x19], al
mov dl, 0x32
mov al, byte [esp + 0x18]
mov dh, 0x1a
xor cl, al
mov byte [esp + 0x20], 0
xor dl, al
mov byte [esp + 0x1a], cl
xor ch, al
mov byte [esp + 0x1b], dl
xor dh, al
mov byte [esp + 0x1d], ch
mov ah, 0x1b
mov byte [esp + 0x1e], dh
xor ah, al
mov byte [esp + 0x20], 0
mov al, byte [esp + 0x17]
lea edx, [esp + 0x19]
xor al, byte [esp + 0x18]
lea ecx, [edx + 1]
mov byte [esp + 0x1c], ah
mov byte [esp + 0x1f], al
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x4c2d20
mov edi, dword [esp + 0xb4]
lea eax, [esp + 0x19]
mov esi, dword [esp + 0xa0]
sub edx, ecx
push edx
mov edx, dword [esp + 0xb4]
lea ecx, [esp + 0xa4]
cmp edi, 0x10
push eax
cmovae ecx, esi
call fcn.004b8ef0
add esp, 8
test al, al
je 0x4c2de5
mov byte [esp + 0x18], 0xb
mov al, 0x5c
xor al, byte [esp + 0x18]
mov cl, 0x5d
xor cl, byte [esp + 0x18]
mov ah, 0x45
mov byte [esp + 0x19], al
mov ch, 0x4f
mov byte [esp + 0x1a], cl
mov dl, 0x51
mov cl, byte [esp + 0x18]
mov dh, 0x5f
mov byte [esp + 0x17], 0x4d
xor ah, cl
mov al, byte [esp + 0x17]
xor ch, cl
xor al, cl
mov byte [esp + 0x16], 0x6f
mov byte [esp + 0x1f], al
xor dl, cl
mov al, byte [esp + 0x16]
xor dh, cl
xor al, cl
mov byte [esp + 0x1c], ah
mov byte [esp + 0x20], al
lea eax, [esp + 0x19]
mov byte [esp + 0x1d], ch
lea ecx, [esp + 0x80]
mov byte [esp + 0x21], 0
push eax
mov byte [esp + 0x1f], dl
mov byte [esp + 0x22], dh
mov byte [esp + 0x25], 0
call fcn.004b7600
mov edi, dword [esp + 0xb4]
mov esi, dword [esp + 0xa0]
cmp edi, 0x10
jb 0x4c2e11
lea ecx, [edi + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x4c2e07
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c2e5d
push ecx
push esi
call fcn.004cc05d
add esp, 8
mov ecx, dword [esp + 0x94]
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0xf
mov byte [esp + 0xa0], 0
cmp ecx, 0x10
jb 0x4c2e6d
mov edx, dword [esp + 0x80]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c2e63
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4c2e63
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.004cc05d
add esp, 8
mov ecx, dword [esp + 0x78]
xor edi, edi
test ecx, ecx
je 0x4c2efb
mov eax, dword [esp + 0xd0]
xor esi, esi
test eax, eax
je 0x4c2ed9
mov byte [esp + 0x18], 0
nop dword [eax]
cmp dword [esp + 0xd4], 0x10
lea edx, [esp + 0xc0]
push edi
cmovae edx, dword [esp + 0xc4]
lea ecx, [esp + 0x6c]
call fcn.004b75a0
mov ecx, dword [esp + 0x18]
movzx ecx, cl
mov al, byte [eax]
cmp al, byte [edx + esi]
mov eax, 1
cmove ecx, eax
mov eax, dword [esp + 0xd0]
inc esi
mov dword [esp + 0x18], ecx
cmp esi, eax
jb 0x4c2e90
test cl, cl
jne 0x4c2ef2
cmp dword [esp + 0x7c], 0x10
lea eax, [esp + 0x68]
cmovae eax, dword [esp + 0x68]
mov byte [eax + edi], 0x20
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0x78]
inc edi
cmp edi, ecx
jb 0x4c2e82
mov edi, dword [esp + 0x7c]
lea eax, [esp + 0x68]
mov edx, dword [esp + 0x68]
lea esi, [esp + 0x68]
cmp edi, 0x10
push 0x20
cmovae eax, edx
add eax, ecx
cmp edi, 0x10
mov dword [esp + 0x1c], eax
cmovae esi, edx
add esi, ecx
cmp edi, 0x10
lea ecx, [esp + 0x6c]
cmovae ecx, edx
mov edx, esi
call fcn.004c8600
add esp, 4
mov edi, eax
cmp eax, esi
je 0x4c2f4f
inc eax
cmp eax, esi
je 0x4c2f4f
mov cl, byte [eax]
cmp cl, 0x20
je 0x4c2f4a
mov byte [edi], cl
inc edi
inc eax
cmp eax, esi
jne 0x4c2f40
cmp dword [esp + 0x7c], 0x10
lea eax, [esp + 0x68]
mov esi, edi
lea ecx, [esp + 0x68]
cmovae eax, dword [esp + 0x68]
sub dword [esp + 0x18], edi
sub esi, eax
mov edi, dword [esp + 0x78]
mov eax, edi
mov edx, dword [esp + 0x18]
sub eax, esi
cmp eax, edx
cmovb edx, eax
cmp dword [esp + 0x7c], 0x10
mov dword [esp + 0x18], edx
cmovae ecx, dword [esp + 0x68]
sub edi, edx
add ecx, esi
mov eax, edi
sub eax, esi
inc eax
push eax
lea eax, [ecx + edx]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [0x4dc7d0]
add esp, 0xc
mov dword [esp + 0x78], edi
cmp eax, 1
jne 0x4c3358
cmp dword [0x4dc0a8], 0x10
jae 0x4c3402
mov byte [esp + 0x18], 0x10
mov al, 0x26
xor al, byte [esp + 0x18]
mov cl, 0x54
mov byte [esp + 0x19], al
mov dl, 0x7c
mov al, byte [esp + 0x18]
mov ch, 0x53
mov dh, 0x47
mov byte [esp + 0x17], 0x71
xor cl, al
mov byte [esp + 0x20], 0
xor dl, al
mov byte [esp + 0x1a], cl
xor ch, al
mov byte [esp + 0x1b], dl
xor dh, al
mov byte [esp + 0x1d], ch
mov ah, 0x67
mov byte [esp + 0x1e], dh
xor ah, al
mov byte [esp + 0x20], 0
mov al, byte [esp + 0x17]
lea ecx, [esp + 0x19]
xor al, byte [esp + 0x18]
lea edx, [ecx + 1]
xorps xmm0, xmm0
mov byte [esp + 0x1c], ah
mov byte [esp + 0x1f], al
movaps xmmword [esp + 0x80], xmm0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c3040
sub ecx, edx
lea eax, [esp + 0x19]
push ecx
push eax
lea ecx, [esp + 0x88]
call fcn.004b8860
mov byte [esp + 0x18], 0x50
mov cl, 0x1d
xor cl, byte [esp + 0x18]
mov al, 0x61
xor al, byte [esp + 0x18]
mov ch, 0x20
mov byte [esp + 0x19], al
mov dl, 0x25
mov byte [esp + 0x1a], cl
mov dh, 0x18
mov cl, byte [esp + 0x18]
mov ah, 0x16
mov byte [esp + 0x17], 7
xor dl, cl
mov al, byte [esp + 0x17]
xor ch, cl
xor al, cl
mov byte [esp + 0x16], 0x63
xor dh, cl
mov byte [esp + 0x1f], al
mov al, byte [esp + 0x16]
xor ah, cl
xor al, cl
mov byte [esp + 0x1d], ch
xorps xmm0, xmm0
mov byte [esp + 0x21], 0
lea ecx, [esp + 0x19]
mov byte [esp + 0x1b], dl
mov byte [esp + 0x1e], dh
lea edx, [ecx + 1]
mov byte [esp + 0x1c], ah
mov byte [esp + 0x20], al
mov byte [esp + 0x21], 0
movaps xmmword [esp + 0xa0], xmm0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c30e8
sub ecx, edx
lea eax, [esp + 0x19]
push ecx
push eax
lea ecx, [esp + 0xa8]
call fcn.004b8860
mov byte [esp + 0x18], 0x5d
mov al, 5
xor al, byte [esp + 0x18]
mov cl, 0xc
xor cl, byte [esp + 0x18]
mov dl, 0xd
mov byte [esp + 0x19], al
mov ah, 0xe
mov byte [esp + 0x1a], cl
mov ch, dl
mov cl, byte [esp + 0x18]
mov dh, 0x28
mov byte [esp + 0x17], 0x3e
xor ah, cl
mov al, byte [esp + 0x17]
xor ch, cl
xor al, cl
mov byte [esp + 0x16], 0x39
mov byte [esp + 0x1f], al
xor dl, cl
mov al, byte [esp + 0x16]
xor dh, cl
xor al, cl
mov byte [esp + 0x26], 0x24
mov byte [esp + 0x20], al
mov al, byte [esp + 0x26]
xor al, cl
mov byte [esp + 0x1c], ah
mov byte [esp + 0x21], al
lea eax, [esp + 0x19]
mov byte [esp + 0x1d], ch
lea ecx, [esp + 0xa0]
mov byte [esp + 0x22], 0
push eax
mov byte [esp + 0x1f], dl
mov byte [esp + 0x22], dh
mov byte [esp + 0x26], 0
call fcn.004b7600
mov byte [esp + 0x18], 0x10
mov al, 0x55
xor al, byte [esp + 0x18]
mov cl, 0x40
mov byte [esp + 0x19], al
mov dl, 0x21
mov al, byte [esp + 0x18]
mov ch, 0x67
mov dh, 0x61
mov byte [esp + 0x1f], 0
xor cl, al
mov byte [esp + 0x1f], 0
xor dl, al
mov byte [esp + 0x1a], cl
xor ch, al
mov byte [esp + 0x1b], dl
xor dh, al
mov byte [esp + 0x1d], ch
mov ah, 0x46
mov byte [esp + 0x1e], dh
xor ah, al
lea edx, [esp + 0xa0]
lea ecx, [esp + 0x19]
mov byte [esp + 0x1c], ah
call fcn.004b8560
test al, al
je 0x4c326c
mov byte [esp + 0x18], 0x64
mov cl, 0x31
xor cl, byte [esp + 0x18]
mov al, 0x35
xor al, byte [esp + 0x18]
mov ah, 0xd
mov byte [esp + 0x19], al
mov ch, 0x22
mov byte [esp + 0x1a], cl
mov dh, ah
mov cl, byte [esp + 0x18]
mov dl, 0x3c
mov byte [esp + 0x17], 0x1e
xor dl, cl
mov al, byte [esp + 0x17]
xor ch, cl
xor al, cl
mov byte [esp + 0x16], 0x2f
xor dh, cl
mov byte [esp + 0x1f], al
mov al, byte [esp + 0x16]
xor ah, cl
xor al, cl
mov byte [esp + 0x1d], ch
lea ecx, [esp + 0x19]
mov byte [esp + 0x21], 0
mov byte [esp + 0x1b], dl
mov byte [esp + 0x1e], dh
lea edx, [ecx + 1]
mov byte [esp + 0x1c], ah
mov byte [esp + 0x20], al
mov byte [esp + 0x21], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c3251
sub ecx, edx
lea eax, [esp + 0x19]
push ecx
push eax
lea ecx, [esp + 0x88]
call fcn.004b7e00
mov ecx, dword [esp + 0xb4]
cmp ecx, 0x10
jb 0x4c32a4
mov edx, dword [esp + 0xa0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c329a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c32f0
push ecx
push edx
call fcn.004cc05d
add esp, 8
mov ecx, dword [esp + 0x94]
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0xf
mov byte [esp + 0xa0], 0
cmp ecx, 0x10
jb 0x4c3300
mov edx, dword [esp + 0x80]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c32f6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4c32f6
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.004cc05d
add esp, 8
mov ecx, 0x10
mov dword [esp + 0x90], 0
sub ecx, dword [0x4dc0a8]
lea eax, [esp + 0x68]
cmp dword [esp + 0x78], ecx
xorps xmm0, xmm0
movaps xmmword [esp + 0x80], xmm0
cmovb ecx, dword [esp + 0x78]
cmp dword [esp + 0x7c], 0x10
push ecx
cmovae eax, dword [esp + 0x6c]
lea ecx, [esp + 0x84]
push eax
mov dword [esp + 0x9c], 0
call fcn.004b8860
mov ecx, 0x4dc098
jmp 0x4c33bd
cmp eax, 2
jne 0x4c3402
mov eax, dword [0x4dc0d8]
cmp eax, 0x10
jae 0x4c3402
mov ecx, 0x10
mov dword [esp + 0x90], 0
sub ecx, eax
mov dword [esp + 0x94], 0
cmp edi, ecx
lea eax, [esp + 0x68]
xorps xmm0, xmm0
cmovb ecx, edi
movaps xmmword [esp + 0x80], xmm0
cmp dword [esp + 0x7c], 0x10
push ecx
cmovae eax, dword [esp + 0x6c]
lea ecx, [esp + 0x84]
push eax
call fcn.004b8860
mov ecx, 0x4dc0c8
lea eax, [esp + 0x80]
push eax
call fcn.004b7670
mov ecx, dword [esp + 0x94]
cmp ecx, 0x10
jb 0x4c3402
mov edx, dword [esp + 0x80]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c33f8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c346c
push ecx
push edx
call fcn.004cc05d
add esp, 8
mov eax, dword [esp + 0xd4]
cmp eax, 0x10
jb 0x4c3444
lea ecx, [eax + 1]
mov eax, dword [esp + 0xc0]
mov edx, eax
cmp ecx, 0x1000
jb 0x4c343a
mov eax, dword [edx - 4]
add ecx, 0x23
sub edx, eax
mov dword [esp + 0x18], eax
lea eax, [edx - 4]
cmp eax, 0x1f
ja 0x4c346c
mov eax, dword [esp + 0x18]
push ecx
push eax
call fcn.004cc05d
add esp, 8
mov ecx, dword [esp + 0x7c]
cmp ecx, 0x10
jb 0x4c347c
mov edx, dword [esp + 0x68]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c3472
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4c3472
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.004cc05d
add esp, 8
mov ecx, dword [esp + 0xec]
pop edi
pop esi
xor ecx, esp
call fcn.004cbdc9
mov esp, ebp
pop ebp
ret