Function at 0x1001809
Capabilities:
Authenticate hmac

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x5c
mov eax, dword [0x100c010]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
movzx esi, word [ebp + 0xc]
cmp esi, 0x40
push edi
mov dword [ebp - 0xc], eax
jg 0x1001c23
je 0x100442e
xor edi, edi
cmp esi, 0x15
jg 0x1001ce1
je 0x1004f54
cmp esi, 5
jle 0x1003b51
sub esi, 6
je 0x1004280
dec esi
je 0x100446f
sub esi, 8
jne 0x1004e8c
xor eax, eax
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.01001564
leave
ret 0xc
cmp esi, 0x41
je 0x1001cb6
cmp esi, 0x2ff
jle 0x1004438
xor edi, edi
cmp esi, 0x301
jle 0x1001c8a
cmp esi, 0x302
jne 0x10050fc
call dword [0x1001260]
mov ecx, dword [0x100c028]
cmp eax, ecx
jne 0x1004487
push edi
push edi
push esi
push ecx
call dword [0x1001294]
jmp 0x100186a
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x10]
push eax
push 0xb0
push dword [0x100c028]
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], edi
call dword [0x1001234]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 8]
jne 0x1001c4e
jmp 0x100186a
push 2
push dword [0x100c08c]
call dword [fcn.01001288]
push eax
push 0x10015bc
push dword [0x100c2d0]
push dword [0x100c020]
call dword [0x100137c]
jmp 0x100186a
cmp esi, 0x1a
jg 0x1001d63
je 0x100447b
sub esi, 0x16
je 0x1004f3c
dec esi
je 0x1004ee0
dec esi
je 0x1004ead
dec esi
jne 0x1004438
push dword [0x100c020]
call dword [0x1001264]
mov esi, dword [0x1001234]
xor edi, edi
push edi
push edi
push 0xe
push dword [0x100c028]
mov ebx, eax
call esi
push eax
push edi
push 0xb1
push dword [0x100c028]
call esi
push edi
push edi
push 0xb7
push dword [0x100c028]
call esi
push 1
push 0x19
push 1
push ebx
call dword [0x1001254]
push eax
call dword [0x1001250]
jmp 0x100186a
push 0x1b
pop ebx
sub esi, ebx
je 0x100507c
sub esi, 5
je 0x1004f97
dec esi
jne 0x1004438
xor edi, edi
push 0x38
lea eax, [ebp - 0x58]
push edi
push eax
mov dword [ebp - 0x5c], edi
call fcn.010015b5
add esp, 0xc
push edi
call dword [0x1001278]
mov ebx, eax
cmp ebx, edi
je 0x100186a
mov eax, dword [ebp - 0xc]
push 0x2d0
push 0x5a
mov esi, 0x100c200
push ebx
mov dword [ebp - 0x5c], 0x3c
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x50], esi
call dword [0x100119c]
push eax
push dword [0x100c004]
call dword [0x10010c0]
neg eax
mov dword [0x100c200], eax
push ebx
mov eax, 0x2000
push edi
mov dword [ebp - 0x48], 0x1000041
mov word [ebp - 0x2c], ax
call dword [0x1001284]
lea eax, [ebp - 0x5c]
push eax
call dword [0x1001348]
test eax, eax
je 0x100186a
push dword [0x100c090]
mov ebx, dword [0x1001220]
call ebx
push esi
call dword [0x100114c]
mov esi, eax
cmp esi, edi
je 0x1001e4a
push dword [0x100c088]
call dword [0x10011a0]
push 1
push esi
push 0x30
push dword [0x100c028]
mov dword [0x100c088], esi
call dword [0x1001234]
mov eax, dword [ebp - 0x4c]
mov dword [0x100c004], eax
push dword [0x100c094]
call ebx
mov dword [0x100c03c], 1
jmp 0x100186a
je 0x10042dd
dec esi
je 0x1004459
dec esi
je 0x1003ecc
dec esi
mov ebx, 0x100cae0
je 0x1004d5d
dec esi
jne 0x1004438
mov esi, 0x1003d5c
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], edi
mov eax, esi
cmp dword [0x100c008], edi
je 0x1004d85
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp - 8]
push ecx
push eax
push dword [ebp - 0xc]
call fcn.01003d6d
cmp eax, edi
jge 0x1004da8
cmp eax, 0x800704c7
jne 0x1004d8c
cmp eax, edi
jge 0x1004da8
push eax
call fcn.01003c46
jmp 0x100186a
xor edi, edi
push edi
call fcn.01001664
test eax, eax
je 0x100186a
mov eax, dword [0x100c00c]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 0xc]
call fcn.01003f21
mov esi, eax
cmp esi, edi
jge 0x1004df5
cmp esi, 0x800704c7
jne 0x1004de2
cmp esi, edi
jge 0x1004df5
mov eax, dword [ebp - 0x10]
mov dword [0x100c00c], eax
push esi
jmp 0x1003bbe
push 0
call fcn.01004116
jmp 0x100186a
mov esi, dword [0x100133c]
mov ebx, 0x100c140
push ebx
call esi
test eax, eax
jne 0x1004e5b
xor edi, edi
call dword [0x75615b50]
je 0x100436c
jb 0x1004374
outsb dx, byte [esi]
pop ebp
or eax, 0x65706f0a
outsb dx, byte [esi]
cmp eax, 0x6f747541
push edx
jne 0x100437d
js 0x1004378
or eax, 0x6568730a
insb byte es:[edi], dx
insb byte es:[edi], dx
pop esp
xor dword [0x6e65704f], edi
or eax, 0x6568730a
insb byte es:[edi], dx
insb byte es:[edi], dx
pop esp
xor dword [ebx + eax*2 + 0x6f], ebx
insd dword es:[edi], dx
insd dword es:[edi], dx
popal
outsb dx, byte [esi]
cmp eax, 0x6f747541
push edx
jne 0x10043a8
js 0x10043a3
or eax, 0x6568730a
insb byte es:[edi], dx
insb byte es:[edi], dx
pop esp
xor bl, byte [ebp + edi + 0x42]
jb 0x10043bb
ja 0x10043c1
jb 0x100435e
or dh, byte [ebx + 0x68]
insb byte es:[edi], dx
insb byte es:[edi], dx
pop esp
xor bl, byte [ebx + eax*2 + 0x6f]
or eax, 0x6568730a
jne 0x10043ee
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
dec ecx
xor byte [edx], ah
sub al, 0x22
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
and cl, byte [0x3032220a]
jb 0x1004f03