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

Disassembly:
sub esp, 0x104
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x100], eax
push ebx
push ebp
mov ebp, dword [esp + 0x118]
push esi
mov esi, dword [esp + 0x114]
call sym.inicrypto_v5.4.1.dll_ISC_Crypto_Initialize
mov ebx, eax
test ebx, ebx
jne 0x1004211f
test esi, esi
jne 0x10041f42
mov ebx, 0xf010049
jmp 0x1004211f
test ebp, ebp
jne 0x10041f50
mov ebx, 0xf010049
jmp 0x1004211f
push edi
push esi
call sym.inicrypto_v5.4.1.dll_ISC_Clean_HMAC_Unit
mov edi, dword [esp + 0x120]
movzx ecx, byte [esi + 0x120]
mov eax, edi
or eax, 0x10000000
push ecx
mov dword [esi + 0x11c], 0xffffffff
mov dword [esi], eax
call fcn.10021ae0
push edi
push eax
mov dword [esi + 4], eax
mov dword [esi + 0x118], 1
call sym.inicrypto_v5.4.1.dll_ISC_Init_DIGEST
add esp, 0x10
test eax, eax
je 0x10041fa7
movzx ebx, ax
xor ebx, 0xf010000
jmp 0x1004211e
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x10]
push eax
call fcn.10087e65
mov dword [esi + 8], eax
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x10]
push eax
call fcn.10087e65
mov dword [esi + 0xc], eax
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x10]
mov dword [esi + 0x10], ecx
mov ebx, dword [eax + 4]
add esp, 8
cmp ebx, 0x100
jg 0x10042119
mov ecx, dword [esp + 0x124]
cmp ebx, ecx
jge 0x10042029
push ecx
push ebp
push eax
call sym.inicrypto_v5.4.1.dll_ISC_Update_DIGEST
add esp, 0xc
test eax, eax
je 0x10042004
mov ebx, 0xf01005b
jmp 0x1004211e
mov edx, dword [esi + 4]
lea ebp, [esi + 0x114]
push ebp
lea edi, [esi + 0x14]
push edi
push edx
call sym.inicrypto_v5.4.1.dll_ISC_Final_DIGEST
add esp, 0xc
test eax, eax
je 0x10042053
mov ebx, 0xf010018
jmp 0x1004211e
cmp ecx, 0x100
ja 0x10042119
push ecx
lea edi, [esi + 0x14]
push ebp
push edi
call fcn.1008d020
mov eax, dword [esp + 0x130]
lea ebp, [esi + 0x114]
add esp, 0xc
mov dword [ebp], eax
mov ebp, dword [ebp]
cmp ebp, ebx
jge 0x1004206c
sub ebx, ebp
push ebx
lea ecx, [esi + ebp + 0x14]
push 0
push ecx
call fcn.1008e320
add esp, 0xc
xor eax, eax
mov edi, edi
mov dl, byte [edi + eax]
xor dl, 0x5c
mov byte [esp + eax + 0x10], dl
inc eax
cmp eax, 0x100
jl 0x10042070
mov eax, dword [esi + 4]
mov ecx, dword [eax + 4]
push ecx
lea edx, [esp + 0x14]
push edx
push eax
call sym.inicrypto_v5.4.1.dll_ISC_Update_DIGEST
add esp, 0xc
test eax, eax
je 0x100420a2
mov ebx, 0xf01005b
jmp 0x1004211e
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0xc]
mov eax, dword [esi + 0xc]
push ecx
push edx
push eax
call fcn.1008d020
add esp, 0xc
xor eax, eax
jmp 0x100420c0
mov cl, byte [edi + eax]
xor cl, 0x36
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x100
jl 0x100420c0
mov eax, dword [esi + 4]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 0x14]
push edx
call eax
mov eax, dword [esi + 4]
mov ecx, dword [eax + 4]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
call sym.inicrypto_v5.4.1.dll_ISC_Update_DIGEST
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x10042100
mov ebx, 0xf01005b
jmp 0x1004211e
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0xc]
mov eax, dword [esi + 8]
push ecx
push edx
push eax
call fcn.1008d020
add esp, 0xc
jmp 0x1004211e
mov ebx, 0xf010059
pop edi
mov ecx, dword [0x10101304]
cmp ecx, 0x200
je 0x1004214d
test ebx, ebx
jne 0x10042167
mov dl, byte [0x100fd914]
dec dl
movzx eax, dl
neg eax
sbb eax, eax
and eax, 0x100
add eax, 3
mov dword [0x10101304], eax
pop esi
pop ebp
mov eax, ebx
pop ebx
mov ecx, dword [esp + 0x100]
xor ecx, esp
call fcn.10087a66
add esp, 0x104
ret
mov eax, ebx
cmp bl, 0x67
jne 0x10042190
pop esi
pop ebp
mov dword [0x10101304], 0x200
pop ebx
mov ecx, dword [esp + 0x100]
xor ecx, esp
call fcn.10087a66
add esp, 0x104
ret
mov cl, byte [0x100fd914]
dec cl
movzx edx, cl
neg edx
sbb edx, edx
and edx, 0x100
pop esi
add edx, 2
pop ebp
mov dword [0x10101304], edx
mov ecx, dword [esp + 0x104]
pop ebx
xor ecx, esp
call fcn.10087a66
add esp, 0x104
ret