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 dword [ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
insb byte es:[edi], dx
jo 0x1003f3d
jb 0x1003f65
jae 0x1003f75
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
ja 0x1003f67
imul edi, dword [edx + 0x65], 0x31363e2d
xor al, 0x34
and ch, byte [edx]
insb byte es:[edi], dx
inc ecx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ecx + 0x74], sp
imul ebp, dword [edi + 0x6e], 0x65707954
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [ecx], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
push eax
jb 0x1003fb3
je 0x1003fab
arpl word [ebp + ebp + 0x3e], si
xor byte [eax + 0x30], bh
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor al, 0x22
or eax, 0x3032220a
xor dh, byte [ecx]
xor byte [0x32323931], dh
xor al, 0x38
xor byte [edi], dh
aaa
xor esi, dword cs:[edi]
xor esi, dword [edi]
cmp dword [edx], esp
sub al, 0x22
xor dword [ebx], esi
xor al, 0x34
and ch, byte [edx]
xor eax, 0x65363964
xor eax, 0x65363964
cmp dword [eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
xor dword [eax + esi], esi
cmp byte [edx], ah
sub al, 0x22
insd dword es:[edi], dx
insd dword es:[edi], dx
outsd dx, dword [esi]
jb 0x100403d
and ch, byte [edx]
push esi
imul esi, dword [edx + 0x74], 0x416c6175
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ebp + 0x78], ax
and ch, byte [edx]
push ebx
push ebp
inc ebx
inc ebx
inc ebp
push ebx
push ebx
and ch, byte [edx]
xor byte [eax + 0x30], bh
xor byte [edx], dh
xor byte ss:[eax], dh
xor byte [eax], dh
and ch, byte [edx]
je 0x1004059
xor esi, dword [edx]
push eax
jb 0x1004065
arpl word [ebp + 0x73], sp
jae 0x1004044
inc esp
sub eax, 0x3433313e
xor al, 0x22
sub al, 0x22
jae 0x1004081
inc ebp
js 0x100406f
inc esi
imul ebp, dword [ebp + 0x2d], 0x6435653e
cmp dword [esi], esi
cmp dword gs:[eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
xor word gs:[eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
insb byte es:[edi], dx
jo 0x1004097
jb 0x10040bf
jae 0x10040cf
jae 0x10040cf
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
ja 0x10040c1
imul edi, dword [edx + 0x65], 0x37333e2d
aaa
jp 0x10040d6
sub eax, 0x3737333e
xor dword [eax], esi
xor ah, byte [edx]
sub al, 0x22
insb byte es:[edi], dx
inc ecx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ecx + 0x74], sp
imul ebp, dword [edi + 0x6e], 0x65707954
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [ecx], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
push eax
jb 0x100410f
je 0x1004107
arpl word [ebp + ebp + 0x3e], si
xor byte [eax + 0x30], bh
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor al, 0x22
or eax, 0x3032220a
xor dh, byte [ecx]
xor byte [0x32323931], dh
xor al, 0x38
xor byte [edi], dh
cmp byte [eax], dh
aaa
xor al, 0x32
cmp dword [edx], esp
sub al, 0x22
xor dword [ebx], esi
xor al, 0x34
and ch, byte [edx]
xor eax, 0x65363964
and ah, byte [ebp + 0x35]
cmp dword fs:[esi], esi
cmp dword gs:[eax + esi], esi
cmp dword [eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
xor dword [eax + esi], esi
cmp byte [edx], ah
sub al, 0x22
insd dword es:[edi], dx
insd dword es:[edi], dx
outsd dx, dword [esi]
jb 0x1004199
and ch, byte [edx]
push esi
imul esi, dword [edx + 0x74], 0x416c6175
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ebp + 0x78], ax
and ch, byte [edx]
push ebx
push ebp
inc ebx
inc ebx
inc ebp
push ebx
push ebx
and ch, byte [edx]
xor byte [eax + 0x30], bh
xor byte [ecx], dh
xor byte ss:[eax], dh
xor byte [eax], dh
and ch, byte [edx]
je 0x10041b5
xor esi, dword [edx]
push eax
jb 0x10041c1
arpl word [ebp + 0x73], sp
jae 0x10041a0
inc esp
sub eax, 0x3433313e
xor al, 0x22
sub al, 0x22
jae 0x10041dd
inc ebp
js 0x10041cb
inc esi
imul ebp, dword [ebp + 0x2d], 0x6435653e
cmp dword [esi], esi
cmp dword gs:[eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
xor word gs:[eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
insb byte es:[edi], dx
jo 0x10041f3
jb 0x100421b
jae 0x100422b
jae 0x100422b
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
ja 0x100421d
imul edi, dword [edx + 0x65], 0x33353e2d
cmp dword [eax], esi
and ch, byte [edx]
jp 0x1004232
sub eax, 0x3933353e
xor byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
inc ecx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ecx + 0x74], sp
imul ebp, dword [edi + 0x6e], 0x65707954
sub eax, 0x3078303e
popal
je 0x1004249
outsd dx, dword [esi]
outsb dx, byte [esi]
push esp
jns 0x1004255
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [ecx], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
push eax
jb 0x1004269
je 0x1004261
arpl word [ebp + ebp + 0x3e], si
xor byte [eax + 0x30], bh
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor al, 0x22
or eax, 0x3032220a
xor dh, byte [ecx]
xor byte [0x32323931], dh
xor al, 0x38
xor byte [edi], dh
aaa
xor al, 0x33
xor al, 0x33
cmp dword [edx], esp
sub al, 0x22
xor dword [ebx], esi
xor al, 0x34
and ch, byte [edx]
xor eax, 0x65363964
xor eax, 0x65363964
cmp dword [eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor byte [eax], bh
cmp byte [ecx + 0x63], ah
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
aaa
popal
xor al, 0x33
xor dword [edx], esi
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
xor dword [eax + esi], esi
cmp byte [edx], ah
sub al, 0x22
insd dword es:[edi], dx
insd dword es:[edi], dx
outsd dx, dword [esi]
jb 0x10042f3
and ch, byte [edx]
push esi
imul esi, dword [edx + 0x74], 0x416c6175
je 0x10042f7
popal
insb byte es:[edi], dx
inc ecx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ebp + 0x78], ax
and ch, byte [edx]
push ebx
push ebp
inc ebx
inc ebx
inc ebp
push ebx
push ebx
and ch, byte [edx]
xor byte [eax + 0x30], bh
xor byte [ecx], dh
xor byte ss:[eax], dh
xor byte [eax], dh
and ch, byte [edx]
je 0x100430f
xor esi, dword [edx]
push eax
jb 0x100431b
arpl word [ebp + 0x73], sp
jae 0x10042fa
inc esp
sub eax, 0x3433313e
xor al, 0x22
sub al, 0x22
jae 0x1004337
inc ebp
js 0x1004325
inc esi
imul ebp, dword [ebp + 0x2d], 0x6435653e
cmp dword [esi], esi
cmp dword gs:[eax + esi], esi
cmp byte [eax], bh
popal
arpl word [ebp + 0x66], sp
xor al, 0x34
xor al, 0x38
xor dword fs:[ecx], edi
xor ah, byte [ebp + 0x33]
xor dh, byte ss:[0x34366137]
xor esi, dword [ecx]
xor dh, byte [esi]
xor bh, byte gs:[eax]
cmp dword [edx], esi
xor esp, dword gs:[esi + esi + 0x32]
xor al, 0x65
aaa
popal
xor al, 0x33
xor dword [edx], esi
xor bh, byte gs:[eax]
xor ah, byte [ecx + 0x65]
xor word [eax], di
xor word gs:[eax], di
arpl word [eax], di
popal
arpl word [ebp + 0x64], sp
xor dword [ebx], esi
cmp byte [esi], dh
popal
xor esp, dword [edx]
sub al, 0x22
insb byte es:[edi], dx
jo 0x100434d
jb 0x1004375
jae 0x1004385
jae 0x1004385
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [eax], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
ja 0x1004377
imul edi, dword [edx + 0x65], 0x39393e2d
cmp dword [eax], edi
and ch, byte [edx]
jp 0x100438c
sub eax, 0x3939393e
cmp byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
inc ecx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ecx + 0x74], sp
imul ebp, dword [edi + 0x6e], 0x65707954
sub eax, 0x3078303e
popal
je 0x10043a3
outsd dx, dword [esi]
outsb dx, byte [esi]
push esp
jns 0x10043af
sub eax, 0x3078303e
xor byte [eax], dh
xor byte [ecx], dh
xor byte [eax], dh
xor byte [edx], ah
sub al, 0x22
insb byte es:[edi], dx
push eax
jb 0x10043c3
je 0x10043bb
arpl word [ebp + ebp + 0x3e], si
aaa
xor al, 0x35
xor eax, 0x65363964
xor byte [eax], bh
cmp byte [ecx + 0x63], ah
xor al, 0x34
aaa
popal
xor al, 0x33
xor dword [edx], esi
xor bh, byte gs:[eax]
xor al, 0x34
arpl word [eax], di
popal
js 0x10044a1
xor byte [eax], dh
xor dword [eax], esi
xor byte [eax], dh
xor dword [eax], edi
and ch, byte [edx]
dec edi
dec ecx
sub eax, 0x3078303e
xor al, 0x22
sub al, 0x22
or al, bl
cmp bl, byte [ecx + 0x10]
adc eax, 0x142ad471
xor ebp, dword ss:[ecx - 0x5034675c]
mov byte [ecx - 0x5dee7ba9], ah
sbb al, byte [esi + 0x5c]
xchg si, ax
xor dword [ebx], ebp
dec ecx
imul edi, eax, 0x47bafae
clc
jle 0x1005031
loopne 0x10050f5
invalid
mov eax, 0x1484354e
push ss
mov al, 8
or dword [edx], esp
adc al, 0xd4
or byte [ecx], cl
and dl, byte [esp + edx*8]
push eax
inc ecx
adc eax, 0xebb41236
movsb byte es:[edi], byte [esi]
pop eax
enter 0x79d0, 0xffffffffffffffd2
invalid