Function at 0x1003dda0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10063dd5
mov eax, dword fs:[0]
push eax
sub esp, 0xe0
mov eax, dword [0x10077604]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edx, ecx
mov dword [ebp - 0xb0], edx
mov eax, dword [edx + 0x15c]
cmp eax, dword [edx + 0x160]
je 0x1003e463
mov eax, dword [edx + 0x148]
shl eax, 2
mov dword [ebp - 0xd4], eax
lea ebx, [eax - 4]
mov dword [ebp - 0xac], ebx
cmp ebx, eax
jge 0x1003e463
imul esi, ebx, 0x68
lea edi, [edx + 0x10]
mov dword [ebp - 0xa8], esi
mov ecx, dword [edx + 0x160]
mov eax, 0x4ec4ec4f
sub ecx, dword [edx + 0x15c]
add edi, 0x18
imul ecx
mov dword [ebp - 0xd0], edi
sar edx, 5
mov eax, edx
shr eax, 0x1f
dec eax
add eax, edx
cmp ebx, eax
jg 0x1003e463
mov ebx, dword [ebp - 0xb0]
mov eax, dword [ebx + 0x15c]
mov cl, byte [esi + eax + 0x60]
cmp cl, 2
jne 0x1003e546
cmp dword [esi + eax + 0x1c], 0
jle 0x1003e47f
lea eax, [ebp - 0x2f]
mov word [ebp - 0x30], 0x58
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x2f], 0
call fcn.100017e0
mov eax, dword [ebx + 0x15c]
sub esp, 8
mov dword [ebp - 4], 0
mov edi, dword [esi + eax + 0x1c]
mov eax, 0xc22e4507
imul edi
add edx, edi
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x60], xmm0
fld qword [ebp - 0x60]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
fstp qword [ebp - 0x60]
movsd xmm0, qword [ebp - 0x60]
call fcn.1005f8e1
mov esi, eax
mov edx, edi
imul ecx, esi, 0x15180
mov eax, 0x91a2b3c5
sub esp, 8
mov dword [ebp - 0xb4], esi
sub edx, ecx
mov ecx, 0x18
mul edx
shr edx, 0xb
mov eax, edx
xor edx, edx
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x100669d0]
movsd qword [ebp - 0x60], xmm0
fld qword [ebp - 0x60]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
fstp qword [ebp - 0x60]
movsd xmm0, qword [ebp - 0x60]
call fcn.1005f8e1
mov ebx, eax
lea ecx, [esi + esi*2]
mov edx, edi
mov dword [ebp - 0x5c], ebx
mov eax, 0x88888889
sub esp, 8
lea esi, [ebx + ecx*8]
imul ecx, esi, 0xe10
sub edx, ecx
mov ecx, 0x3c
mul edx
shr edx, 5
mov eax, edx
xor edx, edx
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x100669d0]
movsd qword [ebp - 0xa4], xmm0
fld qword [ebp - 0xa4]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
fstp qword [ebp - 0xa4]
movsd xmm0, qword [ebp - 0xa4]
call fcn.1005f8e1
mov dword [ebp - 0xa0], eax
mov ecx, esi
sub esp, 8
shl ecx, 4
sub ecx, esi
mov esi, eax
lea ecx, [esi + ecx*4]
mov edx, ecx
shl edx, 4
sub edx, ecx
mov ecx, 0x3c
shl edx, 2
sub edi, edx
xor edx, edx
mov eax, edi
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x100669d0]
movsd qword [ebp - 0xa4], xmm0
fld qword [ebp - 0xa4]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
fstp qword [ebp - 0xa4]
movsd xmm0, qword [ebp - 0xa4]
call fcn.1005f8e1
mov ecx, dword [ebp - 0xb4]
mov edi, eax
test ecx, ecx
je 0x1003e0cb
cmp ecx, 0xa
jae 0x1003e031
mov dl, 0x3b
mov byte [ebp - 0x4a], 0
mov al, 0xb
mov byte [ebp - 0x4c], dl
xor al, dl
mov byte [ebp - 0x4a], 0
mov byte [ebp - 0x4b], al
lea eax, [ebp - 0x4b]
jmp 0x1003e03e
mov word [ebp - 0x34], 0x44
lea eax, [ebp - 0x33]
mov byte [ebp - 0x33], 0
push ecx
push eax
mov ch, 0x2e
mov byte [ebp - 0x86], 0
mov al, 0xb
mov byte [ebp - 0x8c], ch
mov dl, al
mov byte [ebp - 0x86], 0
mov ah, 0x14
xor al, ch
xor ah, ch
mov byte [ebp - 0x8b], al
mov cl, 0x5d
mov byte [ebp - 0x87], ah
sub esp, 0x18
lea eax, [ebp - 0x8b]
xor cl, ch
mov bl, 0x5b
xor dl, ch
mov byte [ebp - 0x8a], cl
xor bl, ch
mov byte [ebp - 0x89], dl
mov ecx, esp
mov byte [ebp - 0x88], bl
push eax
call fcn.100017e0
lea eax, [ebp - 0xcc]
push eax
call fcn.100322e0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.1000a5f0
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 0
call fcn.10001840
mov ebx, dword [ebp - 0x5c]
test ebx, ebx
je 0x1003e18a
cmp ebx, 0xa
jae 0x1003e0f1
mov cl, 0x12
mov byte [ebp - 0x4e], 0
mov al, 0x22
mov byte [ebp - 0x50], cl
xor al, cl
mov byte [ebp - 0x4e], 0
mov byte [ebp - 0x4f], al
lea eax, [ebp - 0x4f]
jmp 0x1003e0fe
mov word [ebp - 0x38], 0x63
lea eax, [ebp - 0x37]
mov byte [ebp - 0x37], 0
push ebx
push eax
mov ch, 0x19
mov byte [ebp - 0x8e], 0
mov al, 0x3c
mov byte [ebp - 0x94], ch
mov dl, al
mov byte [ebp - 0x8e], 0
mov ah, 0x23
xor al, ch
xor ah, ch
mov byte [ebp - 0x93], al
mov cl, 0x6a
mov byte [ebp - 0x8f], ah
sub esp, 0x18
lea eax, [ebp - 0x93]
xor cl, ch
mov bl, 0x6c
xor dl, ch
mov byte [ebp - 0x92], cl
xor bl, ch
mov byte [ebp - 0x91], dl
mov ecx, esp
mov byte [ebp - 0x90], bl
push eax
call fcn.100017e0
lea eax, [ebp - 0xcc]
push eax
call fcn.100322e0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.1000a5f0
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 0
call fcn.10001840
jmp 0x1003e1d6
mov bl, 0x55
mov byte [ebp - 0x64], 0
mov dl, 0x65
mov byte [ebp - 0x68], bl
mov al, dl
mov byte [ebp - 0x64], 0
mov cl, 0x6f
xor dl, bl
xor al, bl
mov byte [ebp - 0x67], dl
xor cl, bl
mov byte [ebp - 0x66], al
mov byte [ebp - 0x65], cl
test dl, dl
jne 0x1003e1b4
xor ecx, ecx
jmp 0x1003e1c9
lea ecx, [ebp - 0x67]
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003e1c0
sub ecx, edx
push ecx
lea eax, [ebp - 0x67]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000a6e0
test esi, esi
je 0x1003e295
cmp esi, 0xa
jae 0x1003e1fc
mov cl, 0x6a
mov byte [ebp - 0x52], 0
mov al, 0x5a
mov byte [ebp - 0x54], cl
xor al, cl
mov byte [ebp - 0x52], 0
mov byte [ebp - 0x53], al
lea eax, [ebp - 0x53]
jmp 0x1003e209
mov word [ebp - 0x3c], 0x69
lea eax, [ebp - 0x3b]
mov byte [ebp - 0x3b], 0
push esi
push eax
mov ch, 0x7e
mov byte [ebp - 0x96], 0
mov al, 0x5b
mov byte [ebp - 0x9c], ch
mov dl, al
mov byte [ebp - 0x96], 0
mov ah, 0x44
xor al, ch
xor ah, ch
mov byte [ebp - 0x9b], al
mov cl, 0xd
mov byte [ebp - 0x97], ah
sub esp, 0x18
lea eax, [ebp - 0x9b]
xor cl, ch
mov bl, 0xb
xor dl, ch
mov byte [ebp - 0x9a], cl
xor bl, ch
mov byte [ebp - 0x99], dl
mov ecx, esp
mov byte [ebp - 0x98], bl
push eax
call fcn.100017e0
lea eax, [ebp - 0xcc]
push eax
call fcn.100322e0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 3
call fcn.1000a5f0
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 0
call fcn.10001840
jmp 0x1003e2db
mov bl, 0x22
mov byte [ebp - 0x6c], 0
mov dl, 0x12
mov byte [ebp - 0x70], bl
mov al, dl
mov byte [ebp - 0x6c], 0
mov cl, 0x18
xor dl, bl
xor al, bl
mov byte [ebp - 0x6f], dl
xor cl, bl
mov byte [ebp - 0x6e], al
mov byte [ebp - 0x6d], cl
test dl, dl
jne 0x1003e2bf
xor ecx, ecx
jmp 0x1003e2ce
lea ecx, [ebp - 0x6f]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003e2c5
sub ecx, edx
push ecx
lea eax, [ebp - 0x6f]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000a6e0
test edi, edi
je 0x1003e387
cmp edi, 0xa
jae 0x1003e301
mov cl, 0x61
mov byte [ebp - 0x56], 0
mov al, 0x51
mov byte [ebp - 0x58], cl
xor al, cl
mov byte [ebp - 0x56], 0
mov byte [ebp - 0x57], al
lea eax, [ebp - 0x57]
jmp 0x1003e30e
mov word [ebp - 0x40], 0x36
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x3f], 0
push edi
push eax
mov ah, 0x5c
mov byte [ebp - 0x7f], 0
mov al, 0x79
mov byte [ebp - 0x84], ah
mov dl, al
mov byte [ebp - 0x7f], 0
mov cl, 0x2f
xor al, ah
xor cl, ah
mov byte [ebp - 0x83], al
sub esp, 0x18
mov byte [ebp - 0x82], cl
mov bl, 0x29
xor dl, ah
xor bl, ah
mov byte [ebp - 0x81], dl
lea eax, [ebp - 0x83]
mov byte [ebp - 0x80], bl
mov ecx, esp
push eax
call fcn.100017e0
lea eax, [ebp - 0xcc]
push eax
call fcn.100322e0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 4
call fcn.1000a5f0
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 0
call fcn.10001840
jmp 0x1003e3c6
mov dl, 0x29
mov byte [ebp - 0x45], 0
mov cl, 0x19
mov byte [ebp - 0x48], dl
mov al, cl
mov byte [ebp - 0x45], 0
xor cl, dl
xor al, dl
mov byte [ebp - 0x47], cl
mov byte [ebp - 0x46], al
test cl, cl
jne 0x1003e3aa
xor ecx, ecx
jmp 0x1003e3b9
lea ecx, [ebp - 0x47]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003e3b0
sub ecx, edx
push ecx
lea eax, [ebp - 0x47]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000a6e0
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0xcc]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.100017e0
mov edi, dword [ebp - 0xd0]
lea eax, [ebp - 0xcc]
push eax
mov byte [ebp - 4], 5
push dword [edi]
call fcn.100136d0
mov eax, dword [ebp - 0xb8]
add esp, 8
cmp eax, 0x10
jb 0x1003e415
inc eax
push 1
push eax
push dword [ebp - 0xcc]
call fcn.10002610
add esp, 0xc
mov eax, dword [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
cmp eax, 0x10
jb 0x1003e433
push 1
inc eax
push eax
push dword [ebp - 0x28]
call fcn.10002610
add esp, 0xc
mov esi, dword [ebp - 0xa8]
mov eax, dword [ebp - 0xac]
add esi, 0x68
mov edx, dword [ebp - 0xb0]
inc eax
mov ebx, eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], esi
cmp eax, dword [ebp - 0xd4]
jl 0x1003de14
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1005f6be
mov esp, ebp
pop ebp
ret
cmp cl, 2
jne 0x1003e546
cmp dword [esi + eax + 0x1c], 0
jg 0x1003e546
mov byte [ebp - 0x7c], 4
mov al, 0x53
xor al, byte [ebp - 0x7c]
mov cl, 0x65
xor cl, byte [ebp - 0x7c]
mov bh, 0x2a
mov byte [ebp - 0x7b], al
mov dl, 0x6d
mov byte [ebp - 0x7a], cl
mov ah, dl
mov cl, byte [ebp - 0x7c]
mov ch, 0x6a
mov byte [ebp - 0x29], bh
xor ah, cl
mov al, byte [ebp - 0x29]
xor ch, cl
xor al, cl
mov byte [ebp - 0x2a], bh
mov byte [ebp - 0x73], al
mov dh, 0x63
mov al, byte [ebp - 0x2a]
mov bl, 0x70
xor al, cl
mov byte [ebp - 0x77], ah
mov byte [ebp - 0x72], al
xor dl, cl
xor bl, cl
mov byte [ebp - 0x76], ch
xor dh, cl
mov byte [ebp - 0x71], 0
xor bh, cl
mov byte [ebp - 0x79], dl
lea eax, [ebp - 0x7b]
mov byte [ebp - 0x78], bl
push eax
lea ecx, [ebp - 0xcc]
mov byte [ebp - 0x75], dh
mov byte [ebp - 0x74], bh
mov byte [ebp - 0x71], 0
call fcn.100017e0
lea eax, [ebp - 0xcc]
mov dword [ebp - 4], 6
push eax
push dword [edi]
call fcn.100136d0
mov eax, dword [ebp - 0xb8]
add esp, 8
mov dword [ebp - 4], 0xffffffff
cmp eax, 0x10
jb 0x1003e439
push 1
inc eax
push eax
push dword [ebp - 0xcc]
call fcn.10002610
add esp, 0xc
jmp 0x1003e439
mov cl, 0x3b
mov byte [ebp - 0x42], 0
mov al, 0x16
mov byte [ebp - 0x44], cl
xor al, cl
mov byte [ebp - 0x42], 0
mov byte [ebp - 0x43], al
mov dword [ebp - 0xd8], 0xf
mov dword [ebp - 0xdc], 0
mov byte [ebp - 0xec], 0
jne 0x1003e57b
xor ecx, ecx
jmp 0x1003e58a
lea ecx, [ebp - 0x43]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003e581
sub ecx, edx
push ecx
lea eax, [ebp - 0x43]
push eax
lea ecx, [ebp - 0xec]
call fcn.10002800
lea eax, [ebp - 0xec]
mov dword [ebp - 4], 7
push eax
push dword [edi]
call fcn.100136d0
mov eax, dword [ebp - 0xd8]
add esp, 8
mov dword [ebp - 4], 0xffffffff
cmp eax, 0x10
jb 0x1003e5d6
push 1
inc eax
push eax
push dword [ebp - 0xec]
call fcn.10002610
add esp, 0xc
mov dword [ebp - 0xd8], 0xf
mov dword [ebp - 0xdc], 0
mov byte [ebp - 0xec], 0
jmp 0x1003e439