Function at 0x418d70
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov esi, esp
mov edx, ecx
mov edi, dword [ebp + 8]
mov eax, dword [0x4805a0]
test eax, eax
jne 0x419432
movsd xmm0, qword [0x462fc0]
xorps xmm0, xmmword [0x45d990]
movlps qword [0x462fe0], xmm0
mov eax, 0x7bff64c2
xor eax, dword [0x462fc8]
mov dword [0x462fe8], eax
movzx eax, byte [0x462fcc]
xor al, 0xea
mov byte [0x462fec], al
movzx eax, byte [0x462fcd]
mov byte [0x462fed], al
movzx eax, byte [0x462fce]
xor al, 0xfc
mov byte [0x462fee], al
movzx eax, byte [0x462fcf]
mov ecx, eax
add cl, al
and cl, 6
sub al, cl
add al, 0x83
mov byte [0x462fef], al
movzx eax, byte [0x462fd0]
xor al, 0x7a
mov byte [0x462ff0], al
movzx eax, byte [0x462fd1]
xor al, 0x7f
mov byte [0x462ff1], al
movzx eax, byte [0x462fd2]
xor al, 0xf0
mov byte [0x462ff2], al
movzx eax, byte [0x462fd3]
mov ecx, eax
add cl, al
and cl, 0x8a
sub al, cl
add al, 0xc5
mov byte [0x462ff3], al
mov eax, 0xdc1e3aca
xor eax, dword [0x462fd4]
mov dword [0x462ff4], eax
movzx eax, byte [0x462fd8]
xor al, 0x8b
mov byte [0x462ff8], al
movzx eax, byte [0x462fd9]
xor al, 0x2d
mov byte [0x462ff9], al
movzx eax, byte [0x462fda]
xor al, 0xd1
mov byte [0x462ffa], al
movzx eax, byte [0x462f60]
xor al, 0xe7
mov byte [0x462f90], al
movzx eax, byte [0x462f61]
mov ecx, eax
add cl, al
and cl, 0xbe
sub al, cl
add al, 0x5f
mov byte [0x462f91], al
movzx eax, byte [0x462f62]
mov ecx, eax
add cl, al
and cl, 0x6e
sub al, cl
add al, 0xb7
mov byte [0x462f92], al
mov eax, 0x74eaec47
xor eax, dword [0x462f63]
mov dword [0x462f93], eax
movzx eax, byte [0x462f67]
xor al, 0xd3
mov byte [0x462f97], al
movzx eax, byte [0x462f68]
xor al, 0xaa
mov byte [0x462f98], al
movzx eax, byte [0x462f69]
xor al, 0xf4
mov byte [0x462f99], al
movzx eax, byte [0x462f6a]
mov ecx, eax
not cl
or cl, 0xf0
or al, 0xf
and al, cl
mov byte [0x462f9a], al
movzx eax, byte [0x462f6b]
xor al, 5
mov byte [0x462f9b], al
movzx eax, byte [0x462f6c]
mov ecx, eax
add cl, al
and cl, 0x5a
sub al, cl
add al, 0x2d
mov byte [0x462f9c], al
movzx eax, byte [0x462f6d]
xor al, 0xdb
mov byte [0x462f9d], al
movzx eax, byte [str._n__]
xor al, 0x6b
mov byte [0x462f9e], al
movzx eax, byte [0x462f6f]
mov ecx, eax
not cl
or al, 0xab
or cl, 0x54
and cl, al
not cl
mov byte [0x462f9f], cl
movzx eax, byte [0x462f70]
xor al, 0x55
mov byte [0x462fa0], al
movzx eax, byte [0x462f71]
mov ecx, eax
not cl
or cl, 0xbe
or al, 0x41
and al, cl
mov byte [0x462fa1], al
movzx eax, byte [0x462f72]
xor al, 0xe3
mov byte [0x462fa2], al
movzx eax, byte [0x462f73]
mov ecx, eax
not cl
or cl, 0xd6
or al, 0x29
and al, cl
mov byte [0x462fa3], al
movzx eax, byte [0x462f74]
mov ecx, eax
add cl, al
and cl, 0x14
sub al, cl
add al, 0x8a
mov byte [0x462fa4], al
movzx eax, byte [0x462f75]
xor al, 7
mov byte [0x462fa5], al
movzx eax, byte [0x462f76]
xor al, 0x6b
mov byte [0x462fa6], al
movzx eax, byte [0x462f77]
xor al, 0x23
mov byte [0x462fa7], al
movzx eax, byte [0x462f78]
mov ecx, eax
add cl, al
and cl, 0x3a
sub al, cl
add al, 0x9d
mov byte [0x462fa8], al
movq xmm0, qword [0x462f79]
movdqa xmmword [esi + 0x40], xmm0
movzx eax, byte [esi + 0x45]
add al, al
not al
movzx eax, al
movd xmm1, eax
psllq xmm1, 0x28
movdqa xmm2, xmmword [0x45d9a0]
pxor xmm2, xmm0
paddb xmm1, xmm0
movdqa xmm0, xmmword [0x45d9b0]
pand xmm2, xmm0
pandn xmm0, xmm1
por xmm0, xmm2
movq qword [0x462fa9], xmm0
mov eax, 0x2da9bd05
xor eax, dword [0x462f81]
mov dword [0x462fb1], eax
movzx eax, byte [0x462f85]
xor al, 0x21
mov byte [0x462fb5], al
movzx eax, byte [0x463000]
xor al, 0x33
mov byte [0x463050], al
movzx eax, byte [0x463001]
mov ecx, eax
add cl, al
and cl, 0x44
sub al, cl
add al, 0xa2
mov byte [0x463051], al
movzx eax, byte [0x463002]
xor al, 0x2a
mov byte [0x463052], al
movzx eax, byte [0x463003]
xor al, 0xbe
mov byte [0x463053], al
movzx eax, byte [0x463004]
xor al, 0xde
mov byte [0x463054], al
movzx eax, byte [0x463005]
mov ecx, eax
add cl, al
and cl, 0x54
sub al, cl
add al, 0xaa
mov byte [0x463055], al
movzx eax, byte [0x463006]
xor al, 0xf6
mov byte [0x463056], al
movzx eax, byte [0x463007]
xor al, 0x18
mov byte [0x463057], al
movzx eax, byte [0x463008]
xor al, 0x7a
mov byte [0x463058], al
movzx eax, byte [0x463009]
mov ecx, eax
add cl, al
and cl, 0x40
sub al, cl
add al, 0xa0
mov byte [0x463059], al
mov eax, 0x15922095
xor eax, dword [0x46300a]
mov dword [0x46305a], eax
movzx eax, byte [0x46300e]
xor al, 0x32
mov byte [0x46305e], al
movzx eax, byte [0x46300f]
xor al, 0x14
mov byte [0x46305f], al
movzx eax, byte [0x463010]
xor al, 0x14
mov byte [0x463060], al
movzx eax, byte [0x463011]
mov ecx, eax
not cl
or al, 0xee
or cl, 0x11
and cl, al
not cl
mov byte [0x463061], cl
movzx eax, byte [0x463012]
xor al, 0x6c
mov byte [0x463062], al
movzx eax, byte [0x463013]
xor al, 0x5c
mov byte [0x463063], al
movzx eax, byte [0x463014]
mov ecx, eax
add cl, al
and cl, 0x3c
sub al, cl
add al, 0x9e
mov byte [0x463064], al
movzx eax, byte [0x463015]
xor al, 0xb9
mov byte [0x463065], al
movzx eax, byte [0x463016]
mov ecx, eax
add cl, al
or cl, 2
sub al, cl
mov byte [0x463066], al
movzx eax, byte [0x463017]
mov ecx, eax
add cl, al
and cl, 0x36
sub al, cl
add al, 0x9b
mov byte [0x463067], al
movsd xmm0, qword [0x463018]
xorps xmm0, xmmword [0x45d9c0]
movlps qword [0x463068], xmm0
movzx eax, byte [0x463020]
xor al, 0x19
mov byte [str.l__b], al
movzx eax, byte [0x463021]
xor al, 0x74
mov byte [0x463071], al
movzx eax, byte [0x463022]
mov ecx, eax
not cl
or al, 0xb5
or cl, 0x4a
and cl, al
not cl
mov byte [0x463072], cl
movsd xmm0, qword [0x463023]
xorps xmm0, xmmword [0x45d9d0]
movlps qword [0x463073], xmm0
movzx eax, byte [0x46302b]
mov ecx, eax
add cl, al
and cl, 0xa2
sub al, cl
add al, 0x51
mov byte [0x46307b], al
movzx eax, byte [0x46302c]
xor al, 0xcd
mov byte [0x46307c], al
movzx eax, byte [0x46302d]
xor al, 0x56
mov byte [0x46307d], al
movzx eax, byte [0x46302e]
mov ecx, eax
not cl
or al, 0xc9
or cl, 0x36
and cl, al
not cl
mov byte [0x46307e], cl
movzx eax, byte [0x46302f]
mov ecx, eax
add cl, al
and cl, 0x44
sub al, cl
add al, 0xa2
mov byte [0x46307f], al
movzx eax, byte [0x463030]
xor al, 0xf8
mov byte [0x463080], al
movzx eax, byte [0x463031]
xor al, 0xf1
mov byte [0x463081], al
movzx eax, byte [0x463032]
xor al, 0x4d
mov byte [0x463082], al
movzx eax, byte [0x463033]
mov ecx, eax
add cl, al
and cl, 0x92
sub al, cl
add al, 0x49
mov byte [0x463083], al
movzx eax, byte [0x463034]
xor al, 0xf7
mov byte [0x463084], al
movzx eax, byte [0x463035]
xor al, 0xf2
mov byte [0x463085], al
movzx eax, byte [0x463036]
xor al, 0xaa
mov byte [0x463086], al
movzx eax, byte [0x463037]
mov ecx, eax
add cl, al
and cl, 0xdc
sub al, cl
add al, 0xee
mov byte [0x463087], al
mov eax, 0x1c4f1689
xor eax, dword [0x463038]
mov dword [0x463088], eax
movzx eax, byte [0x46303c]
xor al, 0x1e
mov byte [0x46308c], al
movzx eax, byte [0x46303d]
xor al, 0x55
mov byte [0x46308d], al
movzx eax, byte [0x46303e]
mov ecx, eax
add cl, al
and cl, 0x5c
sub al, cl
add al, 0xae
mov byte [0x46308e], al
movzx eax, byte [0x46303f]
xor al, 0xc
mov byte [0x46308f], al
movzx eax, byte [0x463040]
mov ecx, eax
not cl
or cl, 0xa6
or al, 0x59
and al, cl
mov byte [0x463090], al
movzx eax, byte [0x463041]
xor al, 6
mov byte [0x463091], al
movzx eax, byte [0x463042]
xor al, 0xf4
mov byte [0x463092], al
movzx eax, byte [0x463043]
mov ecx, eax
not cl
or al, 0x4c
or cl, 0xb3
and cl, al
not cl
mov eax, 0x41ad2414
xor eax, dword [0x463044]
mov byte [0x463093], cl
mov dword [0x463094], eax
movzx eax, byte [0x463048]
xor al, 0x7d
mov byte [0x463098], al
movzx eax, byte [0x463049]
mov ecx, eax
add cl, al
and cl, 0x74
sub al, cl
add al, 0x3a
mov byte [0x463099], al
movzx eax, byte [0x46304a]
mov ecx, eax
add cl, al
and cl, 0x82
sub al, cl
add al, 0xc1
mov byte [0x46309a], al
movzx eax, byte [0x46304b]
mov ecx, eax
add cl, al
and cl, 0xec
sub al, cl
add al, 0xf6
mov byte [0x46309b], al
movzx eax, byte [0x46304c]
xor al, 0x21
mov byte [0x46309c], al
movzx eax, byte [0x46304d]
xor al, 0xdc
mov byte [0x46309d], al
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x18], eax
mov eax, dword [ebp + 0xc]
mov dword [0x4805a0], 1
push eax
sub esp, 0xc
mov ecx, esp
and ecx, 0xfffffff0
mov dword [esi + 0x14], ecx
mov esp, ecx
push eax
sub esp, 0x18
mov dword [esi + 0x28], esp
mov dword [esi + 0x2c], edx
mov ecx, dword [edx + 0x60]
lea edx, [edi + ecx]
movups xmm0, xmmword [0x46308d]
movups xmmword [edi + ecx + 0x3d], xmm0
movaps xmm0, xmmword [0x463080]
movups xmmword [edi + ecx + 0x30], xmm0
movaps xmm0, xmmword [str.l__b]
movups xmmword [edi + ecx + 0x20], xmm0
movaps xmm0, xmmword [0x463060]
movups xmmword [edi + ecx + 0x10], xmm0
movaps xmm0, xmmword [0x463050]
mov dword [esi + 0x20], ecx
movups xmmword [edi + ecx], xmm0
mov edi, eax
mov eax, 0xffffffff
nop dword [eax + eax]
cmp byte [edi + eax + 1], 0
lea eax, [eax + 1]
jne 0x4194b0
mov edi, edx
mov dword [esi + 0x1c], edx
lea edi, [edx + 0x4d]
mov edx, eax
and edx, 3
je 0x4194e1
cmp edx, 2
jne 0x4194f4
shr eax, 1
mov edx, dword [ebp + 0xc]
mov ecx, eax
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
jmp 0x41964d
shr eax, 2
mov edx, dword [ebp + 0xc]
mov ecx, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
jmp 0x41964d
test eax, eax
je 0x41964d
cmp eax, 8
jae 0x419509
mov ebx, dword [ebp + 0xc]
jmp 0x4195c0
mov dword [esi + 8], edi
mov edx, dword [esi + 0x1c]
mov ebx, dword [ebp + 0xc]
sub edx, ebx
add edx, 0x4d
cmp edx, 0x10
jae 0x419524
mov edi, dword [esi + 8]
jmp 0x4195c0
xor edx, edx
cmp eax, 0x10
jae 0x419575
mov edi, eax
and edi, 0xfffffff8
add ebx, edi
mov dword [esi + 0xc], edi
mov ecx, dword [esi + 8]
add edi, ecx
mov ecx, eax
and ecx, 7
mov dword [esi + 0x10], ecx
nop word cs:[eax + eax]
mov ecx, dword [ebp + 0xc]
movsd xmm0, qword [ecx + edx]
mov ecx, dword [esi + 8]
movsd qword [ecx + edx], xmm0
add edx, 8
cmp dword [esi + 0xc], edx
jne 0x419550
cmp eax, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
jne 0x4195c0
jmp 0x41964d
mov edx, eax
and edx, 0xfffffff0
mov ecx, ebx
xor edi, edi
mov ebx, dword [esi + 8]
nop word cs:[eax + eax]
movups xmm0, xmmword [ecx + edi]
movups xmmword [ebx + edi], xmm0
add edi, 0x10
cmp edx, edi
jne 0x419590
cmp eax, edx
je 0x41964d
test al, 8
mov ebx, dword [ebp + 0xc]
jne 0x41952b
and eax, 0xf
mov ecx, ebx
mov edi, dword [esi + 8]
add edi, edx
add edx, ebx
mov ebx, edx
lea ecx, [eax - 1]
mov edx, eax
and edx, 7
je 0x4195f8
mov dword [esi + 8], ecx
mov dword [esi + 0x10], eax
mov eax, edx
xor edx, edx
nop word cs:[eax + eax]
movzx ecx, byte [ebx + edx]
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x4195e0
add ebx, edx
add edi, edx
mov eax, dword [esi + 0x10]
sub eax, edx
mov ecx, dword [esi + 8]
cmp ecx, 7
jb 0x41964d
xor ecx, ecx
nop
movzx edx, byte [ebx + ecx]
mov byte [edi + ecx], dl
movzx edx, byte [ebx + ecx + 1]
mov byte [edi + ecx + 1], dl
movzx edx, byte [ebx + ecx + 2]
mov byte [edi + ecx + 2], dl
movzx edx, byte [ebx + ecx + 3]
mov byte [edi + ecx + 3], dl
movzx edx, byte [ebx + ecx + 4]
mov byte [edi + ecx + 4], dl
movzx edx, byte [ebx + ecx + 5]
mov byte [edi + ecx + 5], dl
movzx edx, byte [ebx + ecx + 6]
mov byte [edi + ecx + 6], dl
movzx edx, byte [ebx + ecx + 7]
mov byte [edi + ecx + 7], dl
add ecx, 8
cmp eax, ecx
jne 0x419600
xor ebx, ebx
mov eax, dword [ebp + 0xc]
nop word cs:[eax + eax]
cmp byte [eax + ebx], 0
lea ebx, [ebx + 1]
jne 0x419660
mov ecx, 0x91eb2e59
mov dword [esi + 8], 0xd2cb1564
mov edx, 0xd2cb1564
mov edi, dword [esi + 0x14]
mov dword [edi + 4], edx
mov dword [edi], ecx
mov eax, 0xa1747fac
mov edx, 0xd7547dd
mov dword [esi + 0xc], eax
mov eax, 0x91e1237b
mov ecx, dword [esi + 8]
mov dword [esi + 8], ecx
mov ecx, dword [esi + 8]
mov dword [esi + 0x34], ecx
mov dword [esi + 0x30], eax
mov dword [edi + 0xc], edx
mov eax, dword [esi + 0xc]
mov dword [edi + 8], eax
mov dword [esi + 0x3c], edx
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
xor ecx, ecx
movaps xmm0, xmmword [edi]
xorps xmm0, xmmword [eax]
movaps xmmword [edi], xmm0
movzx eax, byte [edi + 2]
mov ecx, dword [esi + 0x1c]
mov byte [ecx + ebx + 0x4e], al
movzx eax, word [edi]
mov word [ecx + ebx + 0x4c], ax
movaps xmm0, xmmword [0x462f90]
movups xmmword [ecx + ebx + 0x4f], xmm0
movaps xmm0, xmmword [0x462fa0]
movups xmmword [ecx + ebx + 0x5f], xmm0
movsd xmm0, qword [0x462fad]
movsd qword [ecx + ebx + 0x6c], xmm0
lea edi, [ecx + ebx]
add edi, 0x74
mov ecx, dword [ebp + 0x14]
mov eax, ecx
and eax, 3
je 0x41971d
cmp eax, 2
jne 0x41972c
shr ecx, 1
mov eax, dword [esi + 0x18]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
jmp 0x419900
shr ecx, 2
mov eax, dword [esi + 0x18]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
jmp 0x419900
test ecx, ecx
je 0x419900
mov dword [esi + 8], edi
mov edx, dword [ebp + 0x14]
cmp edx, 8
jae 0x41974a
mov ecx, dword [ebp + 0x10]
mov eax, dword [esi + 8]
jmp 0x419849
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 0x10]
sub eax, ecx
add eax, ebx
add eax, 0x74
cmp eax, 0x20
jae 0x419764
mov eax, dword [esi + 8]
jmp 0x419849
mov ecx, edx
xor edx, edx
mov edi, 0
cmp ecx, 0x20
jb 0x4197bc
and ecx, 0xffffffe0
mov dword [esi + 0xc], ecx
xor eax, eax
nop word [eax + eax]
mov ecx, dword [esi + 0x1c]
add ecx, eax
mov edi, dword [ebp + 0x10]
movups xmm0, xmmword [edi + eax]
movdqu xmm1, xmmword [edi + eax + 0x10]
movups xmmword [ebx + ecx + 0x74], xmm0
movdqu xmmword [ebx + ecx + 0x84], xmm1
add eax, 0x20
cmp dword [esi + 0xc], eax
jne 0x419780
mov edi, dword [esi + 0xc]
cmp edi, dword [ebp + 0x14]
je 0x419900
mov ecx, dword [ebp + 0x14]
test cl, 0x18
je 0x419832
mov dword [esi + 0xc], edi
mov edi, ecx
and edi, 0xfffffff8
mov eax, dword [esi + 0x20]
add eax, edi
add eax, dword [ebp + 8]
add eax, ebx
add eax, 0x74
mov dword [esi + 8], eax
and ecx, 7
mov dword [esi + 0x14], ecx
mov eax, dword [ebp + 0x10]
lea ecx, [eax + edi]
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0xc]
add eax, ecx
mov dword [esi + 0x18], eax
mov dword [esi + 0x24], edi
sub edi, ecx
mov eax, dword [esi + 0x1c]
add eax, ecx
add eax, 0x74
mov dword [esi + 0xc], eax
nop dword [eax + eax]
mov eax, dword [esi + 0xc]
lea ecx, [eax + edx]
mov eax, dword [esi + 0x18]
movsd xmm0, qword [eax + edx]
movsd qword [ebx + ecx], xmm0
add edx, 8
mov eax, edi
cmp edi, edx
jne 0x419800
mov eax, dword [esi + 0x24]
cmp eax, dword [ebp + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x10]
jne 0x419849
jmp 0x419900
mov edx, ecx
and edx, 0x1f
mov ecx, dword [ebp + 0x10]
add ecx, edi
mov eax, dword [esi + 0x20]
add eax, edi
add eax, dword [ebp + 8]
add eax, ebx
add eax, 0x74
mov dword [esi + 0x10], ecx
mov edi, eax
lea ecx, [edx - 1]
mov eax, edx
and eax, 7
je 0x419891
mov dword [esi + 0xc], ecx
mov dword [esi + 0x14], edx
xor edx, edx
mov dword [esi + 0x18], eax
mov dword [esi + 8], edi
mov edi, dword [esi + 0x10]
mov ecx, dword [esi + 8]
nop dword [eax]
movzx eax, byte [edi + edx]
mov byte [ecx + edx], al
inc edx
cmp dword [esi + 0x18], edx
jne 0x419870
add edi, edx
mov dword [esi + 0x10], edi
mov edi, dword [esi + 8]
add edi, edx
mov eax, dword [esi + 0x14]
sub eax, edx
mov ecx, dword [esi + 0xc]
jmp 0x419893
mov eax, edx
cmp ecx, 7
mov ecx, edi
mov edi, dword [esi + 0x10]
jb 0x419900
xor edx, edx
mov dword [esi + 0x14], eax
nop word cs:[eax + eax]
movzx eax, byte [edi + edx]
mov byte [ecx + edx], al
movzx eax, byte [edi + edx + 1]
mov byte [ecx + edx + 1], al
movzx eax, byte [edi + edx + 2]
mov byte [ecx + edx + 2], al
movzx eax, byte [edi + edx + 3]
mov byte [ecx + edx + 3], al
movzx eax, byte [edi + edx + 4]
mov byte [ecx + edx + 4], al
movzx eax, byte [edi + edx + 5]
mov byte [ecx + edx + 5], al
movzx eax, byte [edi + edx + 6]
mov byte [ecx + edx + 6], al
movzx eax, byte [edi + edx + 7]
mov byte [ecx + edx + 7], al
mov eax, dword [esi + 0x14]
add edx, 8
cmp eax, edx
jne 0x4198b0
mov eax, dword [esi + 0x20]
add eax, dword [ebp + 0x14]
add eax, dword [ebp + 8]
lea edi, [ebx + eax]
add edi, 0x74
add eax, ebx
add eax, 0x8e
mov ecx, eax
mov edx, dword [esi + 0x1c]
xor ecx, edx
not edx
and edx, eax
add edx, edx
sub edx, ecx
movups xmm0, xmmword [0x462feb]
mov eax, dword [esi + 0x28]
movups xmmword [eax + 0xb], xmm0
movaps xmm0, xmmword [0x462fe0]
movups xmmword [eax], xmm0
mov ecx, 0xd
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esi + 0x2c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10