Function at 0x46369f
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x4637ca
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.00462b63
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xd16b1c
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x46373e
call 0xd496c0
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x46374e
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x463c67
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x463769
call 0xd49681
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x463b5f
test ebx, ebx
je 0x463b40
test ebx, ebx
ja 0x463add
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xd16d99
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x463acf
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x46417e
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x4637e6
call 0xd16b03
jmp 0x46381e
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x463805
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x463d4e
mov dword [ebp + 0x10], ecx
jmp 0x46381e
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x46381b
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x46380f
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x46382f
mov esi, dword [ebx + 8]
jmp 0x463844
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x46383e
mov esi, eax
jmp 0x463844
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x46409e
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x46385c
mov ecx, edi
jmp 0x463879
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x464096
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x46408e
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x463897
mov dword [eax + 8], edi
jmp 0x463899
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x463d75
push ebx
call 0xd15394
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x4638d1
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x4639ea
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x4639d6
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x46397b
mov eax, dword [eax + 4]
jmp 0x46397e
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x4639c1
mov edx, dword [edx + 4]
jmp 0x4639c4
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x46377c
push dword [edx + 4]
call 0xd15394
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x463954
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x4639fd
mov ecx, dword [ecx + 4]
jmp 0x463a00
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xd16de3
add esp, 0x10
jmp 0x463942
push dword [ebp - 0x60]
call 0xd15394
pop ecx
jmp 0x4637b8
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x463aed
mov ebx, dword [ebx + 4]
jmp 0x463af0
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x463b00
mov edx, dword [edx + 4]
jmp 0x463b03
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xd16de3
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x463b34
mov eax, dword [eax + 4]
jmp 0x463b37
add eax, 4
mov byte [eax + ecx], 0
jmp 0x463784
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x463b51
mov eax, dword [ebp - 0x7c]
jmp 0x463b54
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x46377c
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x463b9b
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x463bb2
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x463c44
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x463bde
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x463c25
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x463c25
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xd16b2d
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xd16d99
mov eax, dword [ebp - 0xb0]
push eax
call 0xd1532a
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x463934
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x463bb2
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x463bb2
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x463c76
call 0xd496c0
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x463c86
mov esi, 0xffffffff
test esi, esi
ja 0x463cf7
test edx, edx
jae 0x463c96
call 0xd496c0
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x463ca1
mov ebx, 0
test ebx, ebx
jbe 0x463784
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x463cb9
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x463cbf
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xd16e5e
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x463ceb
mov eax, dword [ebp - 0x7c]
jmp 0x463cee
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x463784
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x463d07
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x463d0d
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xd16e5e
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x463d3f
mov eax, dword [ebp - 0x7c]
jmp 0x463d42
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x463c8a
cmp edx, dword [ecx + 8]
jne 0x463800
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x463800
cmp edx, dword [ecx + 8]
je 0x463d57
jmp 0x463800
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x463d89
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x463d92
mov byte [esi + 0x14], 1
jmp 0x4638ba
mov edi, dword [ecx]
cmp esi, edi
je 0x463f20
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x463ecf
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x463dd5
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x463e4b
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x463df0
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x463d89
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x463d92
jmp 0x463d89
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x463e46
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x463e41
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x463e33
mov dword [edx], eax
jmp 0x463e36
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x463d89
mov dword [edx + 4], eax
jmp 0x463e36
mov dword [edi + 4], ecx
jmp 0x463e16
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x463df0
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x463eca
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x463ebf
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x463ea5
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x463ead
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x463df0
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x463ead
mov dword [edx + 4], edi
jmp 0x463e7c
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x463f1b
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x463f16
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x463f06
mov dword [edx], eax
jmp 0x463f09
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x463da8
mov dword [edx + 4], eax
jmp 0x463f09
mov dword [edx + 4], ecx
jmp 0x463ee9
mov edi, dword [ecx + 8]
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x46403e
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x463dd5
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x463fb6
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
cmp edx, 1
je 0x463dd1
movzx eax, byte [ecx + 0x14]
add edx, dword [ecx]
dec ecx
cmp byte [ecx - 2], 0x69
cmp byte [ecx], 0xf2
sub edi, ecx
cmp dword [ebx + 0x14c7e530], esp
call [ebx + edx]
aaa
test eax, 0x8f5f4ea4
les edi, [edx + 0x2a628772]
and dword [edi - 0x5cc78619], 0x9c24992
invalid
jns 0x463f64
imul eax, dword [edx - 0x30d60dc7], 0xe530a339
invalid
imul edi, ebp, 0xc
mov esp, 0xeb210300
lea eax, [ecx - 0x2e]
jo 0x463f64
push esp
cmpsd dword [esi], dword es:[edi]
or eax, 0xd65c5ad4
xchg esp, eax
retf 0xe038
cmpsd dword [esi], dword es:[edi]
rcl byte [edx + 0x4a], 0xe1
test al, 0xc4
insd dword es:[edi], dx
salc
int3
xchg ebp, eax
add ecx, esp
arpl word [edx - 0x3ec31828], bp
salc
pushal
ljmp 0x79d2
jle 0x464072
rcr dword [edx], 0x21
add ch, byte [edi + 0x1ca0c132]
fild dword [ecx + 0x417246c7]
shl dword [eax - 0x387e24e4], 0x46
jb 0x4640e0
inc ecx
xchg dword [edi - 0x22], ebp
pop ebx
daa
xlatb
in al, dx
mov dword [0x45841a19], eax
invalid
fdivrp st(1)
clc
xor eax, edi
or dword [esi + 0x1926cc2a], edi
or eax, 0x5b8de51b
test al, 0x18
pop ss
out 0x5c, eax
cmp byte [ecx], 0xe2
retf
rcr dword [ecx], 1
inc esi
cmp eax, 0x63df257b
push edi
sub dl, byte [edx]
push ecx
cdq
out 0x5e, eax
pushfd
daa
add ch, ch
popfd
test al, 0x26
mov dh, 0x7d
or cl, al
mov ebp, 0x39e956b3
popfd
sub al, 0x52
or edx, esi
jne 0x464124
bound eax, qword [esi + 0x4b]
insb byte es:[edi], dx
leave
salc
xor edi, ebx
xchg edx, eax
xchg esi, eax
lds eax, [esi]
cli
std
sub al, 0x81
fcomp dword [eax - 0x31]
enter 0xffffffffffff83f9, 0x62
jns 0x4640af
push edi
frstor dword [ecx]
xchg edx, eax
mov ecx, 0xd6d15732
and dword [edx - 0x2ea8cd47], edx
salc
inc ebx
cmp dword [edx + 0x2a8ed26], esp
mov byte [0x2a8ed26], al
mov dword [0xe94bf3b5], eax
jb 0x46416f
lodsd eax, dword [esi]
add dl, byte [edx + esi*4]
jno 0x46412c
jp 0x4641ba
insd dword es:[edi], dx
sahf
mov edi, 0xa6e9f251
mov ss, word [esi - 0x49]
inc edx
outsd dx, dword [esi]
idiv byte [ecx + 0x67]
mov dword [0xf5007ccb], eax
in al, dx
mov esp, 0x8f151f63
retf 0x3df3
and bl, bh
lds esi, [ecx]
shl byte [esp + edx*8 - 0x1609828b], 1
add al, 0xe
pop esi
retf
xor eax, edx
movsb byte es:[edi], byte [esi]
aam 0x75
jge 0x46416c
jmp 0xcba44f7f
mov bl, 0x8b
dec esi
and cl, byte [ecx + 0x7a]
cli
mov dword [0xd0058280], eax
popal
inc edx
pop edi
sbb ah, ah
loope 0x4641e3
jg 0x46412d
sub dh, dh
pop ss
stc
and dh, byte [ecx + 0xb]
imul esp, dword [eax], 0x6640812c
fadd st(1)
jge 0x46414b
call 0x4ce76adc
lds esi, [esi]
dec edi
mov dword [0x9f37efa3], eax
add bh, 0x28
loopne 0x4641d5
imul byte [eax]
test eax, 0x50530b42
or edx, dword [ebx + 0x50]
sub al, 0xbc
shl dword [esi - 0x5d8616ef], cl
lock xchg byte [eax + 0x27e67824], ah
pop ecx
mov cl, cl
jo 0x4641f3
invalid
stc
and bl, cl
pop esi
sbb eax, 0xfa84189
in eax, dx
cmpsd dword [esi], dword es:[edi]
push ecx
pop ds
dec ebx
or dword [eax], 0x6f
sub dh, byte [ebx]
cmp dword [ecx + 0x859de06], edi
daa
into
cmp dword [ebx], edi
cdq
mov edx, 0xb0343310
inc ecx
xchg ebx, eax
pop esp
mov byte [0x4496e6b4], al
scasb al, byte es:[edi]
or byte [ecx - 0x58], 0x76
leave
in al, dx
and dh, al
test byte [ecx], bl
test al, 0xff
cli
loop 0x464240
sbb al, 0x36
or al, byte [edi]
xbegin 0xd980d293
cmp al, 0xb9
nop
push 0x37e35edd
or byte [edi + 0x53], 0x1d
xchg esp, eax
mov esp, 0xa65206f2
out 0xac, al
or ebx, dword [ecx - 0x79]
sub al, 0x42
cdq
int 0x20
cld
cmp al, 0x46
lea ecx, [edx - 0x15762154]
pop eax
nop
imul eax, ebp, 0x6df63ebe
invalid