Function at 0x40b340
Capabilities:
Authenticate hmac
Encode data using xor
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1f8
mov eax, dword [0x4d77ac]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, edx
mov dword [ebp - 0x1e0], eax
mov eax, dword [ebp + 0x10]
mov ebx, ecx
mov dword [ebp - 0x1e4], edx
mov dword [ebp - 0x1e8], ecx
mov dword [ebp - 0x1ec], eax
push edi
cmp esi, 0x40
jbe 0x40b40f
xorps xmm0, xmm0
mov dword [ebp - 0x1dc], 0x6a09e667
push esi
mov edx, ebx
mov dword [ebp - 0x1d8], 0xbb67ae85
lea ecx, [ebp - 0x1dc]
mov dword [ebp - 0x1d4], 0x3c6ef372
mov dword [ebp - 0x1d0], 0xa54ff53a
mov dword [ebp - 0x1cc], 0x510e527f
mov dword [ebp - 0x1c8], 0x9b05688c
mov dword [ebp - 0x1c4], 0x1f83d9ab
mov dword [ebp - 0x1c0], 0x5be0cd19
movlpd qword [ebp - 0x1bc], xmm0
call fcn.004177e0
add esp, 4
lea edx, [ebp - 0x6c]
lea ecx, [ebp - 0x1dc]
call fcn.00417b10
lea ebx, [ebp - 0x6c]
mov esi, 0x20
mov dword [ebp - 0x1e8], ebx
mov dword [ebp - 0x1e4], esi
xor edx, edx
test esi, esi
je 0x40b4b9
cmp esi, 0x20
jb 0x40b49d
lea eax, [ebx - 1]
add eax, esi
lea edi, [ebp - 0x4c]
lea ecx, [ebp + esi - 0x4d]
cmp edi, eax
ja 0x40b432
cmp ecx, ebx
jae 0x40b49d
movdqa xmm1, xmmword [0x4cbd40]
lea edi, [ebp - 0x4c]
mov eax, esi
mov ecx, esi
and eax, 0x1f
sub edi, ebx
sub ecx, eax
mov eax, ebx
mov dword [ebp - 0x1f0], ecx
lea ecx, [ebp - 0x3c]
sub ecx, ebx
mov dword [ebp - 0x1f4], ecx
mov ecx, dword [ebp - 0x1f0]
mov esi, dword [ebp - 0x1f4]
jmp 0x40b470
movdqu xmm0, xmmword [eax]
add edx, 0x20
lea eax, [eax + 0x20]
pxor xmm0, xmm1
movdqu xmmword [edi + eax - 0x20], xmm0
movdqu xmm0, xmmword [eax - 0x10]
pxor xmm0, xmm1
movdqu xmmword [esi + eax - 0x20], xmm0
cmp edx, ecx
jb 0x40b470
mov esi, dword [ebp - 0x1e4]
cmp edx, esi
jae 0x40b4b9
mov edi, ebx
lea eax, [ebp - 0x4c]
sub edi, eax
lea ecx, [ebp - 0x4c]
add ecx, edx
inc edx
mov al, byte [edi + ecx]
xor al, 0x36
mov byte [ecx], al
cmp edx, esi
jb 0x40b4a8
cmp esi, 0x40
jae 0x40b4dd
mov ecx, 0x40
lea edi, [ebp - 0x4c]
sub ecx, esi
add edi, esi
mov edx, ecx
mov eax, 0x36363636
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
xorps xmm0, xmm0
mov dword [ebp - 0xfc], 0x6a09e667
push 0x40
lea edx, [ebp - 0x4c]
mov dword [ebp - 0xf8], 0xbb67ae85
lea ecx, [ebp - 0xfc]
mov dword [ebp - 0xf4], 0x3c6ef372
mov dword [ebp - 0xf0], 0xa54ff53a
mov dword [ebp - 0xec], 0x510e527f
mov dword [ebp - 0xe8], 0x9b05688c
mov dword [ebp - 0xe4], 0x1f83d9ab
mov dword [ebp - 0xe0], 0x5be0cd19
movlpd qword [ebp - 0xdc], xmm0
call fcn.004177e0
mov edx, dword [ebp - 0x1e0]
lea ecx, [ebp - 0xfc]
add esp, 4
push dword [ebp + 0xc]
call fcn.004177e0
add esp, 4
lea edx, [ebp - 0x8c]
lea ecx, [ebp - 0xfc]
call fcn.00417b10
xorps xmm0, xmm0
mov dword [ebp - 0x16c], 0x6a09e667
xor edx, edx
mov dword [ebp - 0x168], 0xbb67ae85
mov dword [ebp - 0x164], 0x3c6ef372
mov dword [ebp - 0x160], 0xa54ff53a
mov dword [ebp - 0x15c], 0x510e527f
mov dword [ebp - 0x158], 0x9b05688c
mov dword [ebp - 0x154], 0x1f83d9ab
mov dword [ebp - 0x150], 0x5be0cd19
movlpd qword [ebp - 0x14c], xmm0
test esi, esi
je 0x40b667
cmp esi, 0x20
jb 0x40b64d
lea eax, [ebx - 1]
add eax, esi
lea edi, [ebp - 0x4c]
lea ecx, [ebp + esi - 0x4d]
cmp edi, eax
ja 0x40b5f1
cmp ecx, ebx
jae 0x40b64d
movdqa xmm1, xmmword [0x4cbd70]
lea edi, [ebp - 0x4c]
mov eax, esi
mov ecx, esi
and eax, 0x1f
lea esi, [ebp - 0x3c]
sub ecx, eax
sub edi, ebx
sub esi, ebx
mov eax, ebx
mov dword [ebp - 0x1e0], esi
mov esi, dword [ebp - 0x1e4]
mov ebx, dword [ebp - 0x1e0]
movdqu xmm0, xmmword [eax]
add edx, 0x20
lea eax, [eax + 0x20]
pxor xmm0, xmm1
movdqu xmmword [eax + edi - 0x20], xmm0
movdqu xmm0, xmmword [eax - 0x10]
pxor xmm0, xmm1
movdqu xmmword [eax + ebx - 0x20], xmm0
cmp edx, ecx
jb 0x40b620
mov ebx, dword [ebp - 0x1e8]
cmp edx, esi
jae 0x40b667
lea eax, [ebp - 0x4c]
sub ebx, eax
lea ecx, [ebp - 0x4c]
add ecx, edx
inc edx
mov al, byte [ebx + ecx]
xor al, 0x5c
mov byte [ecx], al
cmp edx, esi
jb 0x40b656
cmp esi, 0x40
jae 0x40b68b
mov ecx, 0x40
lea edi, [ebp - 0x4c]
sub ecx, esi
add edi, esi
mov edx, ecx
mov eax, 0x5c5c5c5c
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
push 0x40
lea edx, [ebp - 0x4c]
lea ecx, [ebp - 0x16c]
call fcn.004177e0
add esp, 4
lea edx, [ebp - 0x8c]
lea ecx, [ebp - 0x16c]
push 0x20
call fcn.004177e0
mov edx, dword [ebp - 0x1ec]
lea ecx, [ebp - 0x16c]
add esp, 4
call fcn.00417b10
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00493864
mov esp, ebp
pop ebp
ret