Function at 0x401950
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push edx
and edx, dword [ebp - 8]
xor edx, eax
add edx, ecx
add edx, dword [ebp - 0x10]
add edx, 0xf
pop edx
and esp, 0xfffffff8
push ecx
pop ecx
sub esp, 0x958
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edi, 5
lea ebx, [esp + 0x67]
mov dword [esp + 0x930], edx
mov dword [esp + 0x92c], esi
mov dword [esp + 0x928], ecx
mov dword [esp + 0x924], eax
mov dword [esp + 0x920], 0
mov dword [esp + 0x91c], 0
add edi, 0x11
add ecx, 0x29
sub ecx, 0x29
sub edi, 0x11
mov dword [esp + 0x88c], 0xd
push esi
pop esi
mov dword [esp + 0x888], 0
mov dword [esp + 0x880], 0
mov dword [esp + 0x87c], 0x400
mov dword [esp + 0x870], 0xffffffff
mov eax, dword [esp + 0x924]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
add ebx, 0x29
push edx
sub edx, dword [ebp - 8]
sub edx, edi
add edx, dword [ebp - 0xc]
xor edx, dword [ebp - 0x14]
mov edx, edi
pop edx
sub ebx, 0x29
mov dword [esp + 0x60], edi
add eax, 1
push edx
and edx, dword [ebp - 0x10]
xor edx, dword [ebp - 0x10]
pop edx
sub eax, 1
call fcn.00403290
mov ecx, 5
lea edx, [esp + 0x890]
lea esi, [esp + 0x67]
mov dword [esp], edx
nop
mov dword [esp + 4], esi
add edx, 0x5c
push ecx
push ecx
pop ecx
xor ecx, dword [ebp - 0x18]
pop ecx
sub edx, 0x5c
mov dword [esp + 8], 5
mov dword [esp + 0x5c], eax
push eax
pop eax
mov dword [esp + 0x58], ecx
call fcn.004033b0
cmp eax, 0
je 0x401aae
jmp 0x4023d1
push ecx
pop ecx
mov eax, 0x6f3d942d
mov ecx, 0x300
mov edx, 0
mov esi, dword [esp + 0x890]
mov edi, dword [esp + 0x894]
push edi
pop edi
sub edx, edi
sub esi, edx
mov dword [esp + 0x54], ecx
mov ecx, esi
mov edx, dword [esp + 0x54]
shl edx, cl
add esi, 0x5c
sub esi, 0x5c
add eax, 0x736
add ebx, 0x3b
add ecx, 0x1e
push eax
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
or eax, esi
pop eax
sub ecx, 0x1e
sub ebx, 0x3b
add eax, edx
sub eax, 0x6f3d942d
shl eax, 1
mov dword [esp], eax
call fcn.004063fc
mov edx, 0x736
add esi, 0x2e
push ebx
add ebx, dword [ebp - 8]
and ebx, dword [ebp - 0x18]
add ebx, dword [ebp - 0x18]
pop ebx
sub esi, 0x2e
mov esi, 0x300
add esi, 0x3f
sub esi, 0x3f
mov dword [esp + 0x8a0], eax
push edx
sub edx, 0x34
add edx, dword [ebp - 0xc]
pop edx
mov eax, dword [esp + 0x890]
mov edi, dword [esp + 0x894]
sub eax, 0x6d3345f6
add eax, edi
add eax, 0x6d3345f6
mov ecx, eax
shl esi, cl
sub edx, 0x8f3a727b
add edx, esi
nop
add edx, 0x8f3a727b
shl edx, 1
mov eax, dword [esp + 0x8a0]
mov dword [esp + 0x940], edx
mov dword [esp + 0x93c], eax
mov eax, dword [esp + 0x93c]
mov dword [esp + 0x938], eax
mov dword [esp + 0x934], 0x1be63fef
add edx, 0xd
add ebx, 0xb
add esi, 0x57
add ebx, 0x36
add ebx, 0x2f
add edx, 0x46
push ecx
add ecx, edi
or ecx, edi
or ecx, edx
sub ecx, dword [ebp - 0x18]
pop ecx
sub edx, 0x46
sub ebx, 0x2f
sub ebx, 0x36
sub esi, 0x57
sub ebx, 0xb
sub edx, 0xd
mov eax, dword [esp + 0x934]
add ecx, 0x4d
push edx
mov edx, dword [ebp - 0x10]
and edx, edi
add edx, ecx
add edx, 0x3b
pop edx
sub ecx, 0x4d
mov ecx, eax
sub ecx, 0xa4f8403c
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], ecx
je 0x401d1b
jmp 0x401c51
mov eax, dword [esp + 0x50]
nop
sub eax, 0x6f508cc
mov dword [esp + 0x48], eax
je 0x401cd1
jmp 0x401c6a
mov eax, dword [esp + 0x50]
sub eax, 0x1be63fef
mov dword [esp + 0x44], eax
je 0x401c87
jmp 0x401c82
jmp 0x401d16
mov eax, 0xa4f8403c
push edx
or edx, 0x1d
or edx, 0x54
or edx, 0x15
sub edx, esi
pop edx
mov ecx, 0x6f508cc
push ebx
add ebx, dword [ebp - 0xc]
mov ebx, edi
or ebx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
and ebx, dword [ebp - 8]
pop ebx
cmp dword [esp + 0x940], 0
cmovne eax, ecx
mov dword [esp + 0x934], eax
jmp 0x401d16
mov eax, dword [esp + 0x938]
mov byte [eax], 0
mov eax, dword [esp + 0x938]
add eax, 1
mov dword [esp + 0x938], eax
mov eax, dword [esp + 0x940]
add eax, 0xc6f8f1ef
add eax, 0xffffffff
sub eax, 0xc6f8f1ef
mov dword [esp + 0x940], eax
mov dword [esp + 0x934], 0x1be63fef
jmp 0x401bc1
cmp dword [esp + 0x8a0], 0
jne 0x401d31
jmp 0x4023d1
cmp dword [esp + 0x89c], 0
je 0x401efb
mov eax, dword [esp + 0x89c]
shl eax, 0
add ecx, 0x4f
add ecx, 0x32
add eax, 0x3e
sub eax, 0x3e
sub ecx, 0x32
sub ecx, 0x4f
mov dword [esp], eax
call fcn.004063fc
mov dword [esp + 0x8a4], eax
mov eax, dword [esp + 0x89c]
shl eax, 0
mov ecx, dword [esp + 0x8a4]
mov dword [esp + 0x950], eax
mov dword [esp + 0x94c], ecx
mov eax, dword [esp + 0x94c]
mov dword [esp + 0x948], eax
mov dword [esp + 0x944], 0x1be63fef
mov eax, dword [esp + 0x944]
mov ecx, eax
sub ecx, 0xa4f8403c
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], ecx
je 0x401ede
jmp 0x401dd9
mov eax, dword [esp + 0x40]
sub eax, 0x6f508cc
mov dword [esp + 0x38], eax
je 0x401e5e
jmp 0x401df1
mov eax, dword [esp + 0x40]
add edx, 0x59
sub edx, 0x59
sub eax, 0x1be63fef
mov dword [esp + 0x34], eax
je 0x401e1a
jmp 0x401e15
jmp 0x401ed9
push edi
add esi, 0x35
add edx, 0x58
sub edx, 0x58
sub esi, 0x35
and edi, eax
xor edi, ebx
or edi, eax
pop edi
mov eax, 0xa4f8403c
mov ecx, 0x6f508cc
cmp dword [esp + 0x950], 0
cmovne eax, ecx
mov dword [esp + 0x944], eax
jmp 0x401ed9
mov eax, dword [esp + 0x948]
mov byte [eax], 0
mov eax, dword [esp + 0x948]
add ecx, 0x20
push edx
sub edx, dword [ebp - 0x18]
add edx, eax
pop edx
sub ecx, 0x20
add eax, 1
mov dword [esp + 0x948], eax
add ebx, 0x63
push edx
push ecx
and ecx, dword [ebp - 0x14]
or ecx, dword [ebp - 8]
pop ecx
and edx, dword [ebp - 0x14]
or edx, dword [ebp - 8]
xor edx, dword [ebp - 0x18]
or edx, ebx
pop edx
sub ebx, 0x63
mov eax, dword [esp + 0x950]
push edx
pop edx
sub eax, 0xcd6b642b
add eax, 0xffffffff
add eax, 0xcd6b642b
mov dword [esp + 0x950], eax
mov dword [esp + 0x944], 0x1be63fef
jmp 0x401db7
push edi
pop edi
cmp dword [esp + 0x8a4], 0
jne 0x401ef6
jmp 0x4023d1
jmp 0x401f06
mov dword [esp + 0x8a4], 0
lea eax, [esp + 0x6c]
mov dword [esp + 0x91c], eax
mov eax, dword [esp + 0x928]
add eax, 0x71d8af2e
nop
sub eax, 0xd
sub eax, 0x71d8af2e
mov dword [esp + 0x928], eax
mov dword [esp + 0x914], 0xfffffffe
mov dword [esp + 0x8e8], 0
cmp dword [esp + 0x880], 0
jne 0x40208e
cmp dword [esp + 0x928], 0
je 0x40208e
mov dword [esp + 0x884], 0x400
add esi, 0x23
add edx, 0x16
push edi
pop edi
sub edx, 0x16
sub esi, 0x23
mov eax, dword [esp + 0x884]
push ebx
sub ebx, edi
xor ebx, 0x28
or ebx, dword [ebp - 8]
xor ebx, dword [ebp - 0xc]
sub ebx, eax
pop ebx
cmp eax, dword [esp + 0x928]
jbe 0x401fc0
mov eax, dword [esp + 0x928]
mov dword [esp + 0x884], eax
lea eax, [esp + 0x46c]
add ecx, 0x14
push esi
pop esi
sub ecx, 0x14
mov ecx, dword [esp + 0x884]
mov edx, dword [esp + 0x924]
add edx, dword [esp + 0x88c]
push eax
mov eax, dword [ebp - 0x10]
sub eax, esi
add eax, esi
pop eax
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.00403290
lea ecx, [esp + 0x46c]
mov edx, 0
mov esi, dword [esp + 0x884]
mov edi, dword [esp + 0x88c]
mov ebx, edx
sub ebx, edi
mov edi, edx
sub edi, esi
add ebx, edi
push edx
pop edx
mov esi, edx
push ebx
add ebx, esi
add ebx, eax
pop ebx
sub esi, ebx
add ebx, 0x1a
add ebx, 0x31
sub ebx, 0x31
sub ebx, 0x1a
mov dword [esp + 0x88c], esi
nop
mov esi, dword [esp + 0x884]
mov edi, dword [esp + 0x928]
push ecx
mov ecx, edx
xor ecx, esi
sub ecx, dword [ebp - 8]
pop ecx
sub edx, esi
add edi, edx
mov dword [esp + 0x928], edi
mov edx, dword [esp + 0x884]
mov dword [esp + 0x880], edx
mov dword [esp + 0x920], ecx
mov dword [esp + 0x30], eax
lea eax, [esp + 0x890]
lea ecx, [esp + 0x878]
lea edx, [esp + 0x874]
cmp dword [esp + 0x880], 0
sete bl
and bl, 1
movzx esi, bl
mov edi, dword [esp + 0x87c]
mov ebx, dword [esp + 0x91c]
mov dword [esp + 0x2c], eax
push ebx
and ebx, dword [ebp - 0x10]
add ebx, dword [ebp - 0x18]
sub ebx, 0x58
sub ebx, dword [ebp - 0x18]
pop ebx
mov eax, dword [esp + 0x880]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x920]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
add edi, 0x2b
push esi
add esi, dword [ebp - 8]
mov esi, eax
pop esi
sub edi, 0x2b
mov eax, dword [esp + 0x24]
mov dword [esp + 4], eax
add edx, 0x3f
sub edx, 0x3f
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], ebx
push esi
xor esi, 0x5e
add esi, ebx
push edx
add edx, ecx
and edx, ecx
pop edx
and esi, dword [ebp - 0xc]
sar esi, 0x42
pop esi
mov dword [esp + 0x14], edi
push ebx
or ebx, eax
add ebx, edx
or ebx, esi
add ebx, dword [ebp - 0xc]
or ebx, dword [ebp - 8]
pop ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
push esi
sar esi, 0xa
and esi, dword [ebp - 8]
add esi, dword [ebp - 0x14]
and esi, eax
and esi, eax
pop esi
call fcn.00403510
mov ecx, 0
mov dword [esp + 0x86c], eax
mov eax, dword [esp + 0x878]
mov edx, dword [esp + 0x880]
sub ecx, eax
push eax
pop eax
add edx, ecx
mov dword [esp + 0x880], edx
mov eax, dword [esp + 0x878]
add ebx, 0x59
add edi, 0x17
sub edi, 0x17
sub ebx, 0x59
mov ecx, dword [esp + 0x920]
add ecx, eax
mov dword [esp + 0x920], ecx
mov eax, dword [esp + 0x874]
mov ecx, dword [esp + 0x87c]
add ecx, 0x1696c232
sub ecx, eax
sub ecx, 0x1696c232
mov dword [esp + 0x87c], ecx
mov eax, dword [esp + 0x874]
push ecx
or ecx, edx
xor ecx, dword [ebp - 0xc]
add ecx, edx
push edx
pop edx
and ecx, 0x5b
pop ecx
mov ecx, dword [esp + 0x91c]
add ecx, eax
push edx
and edx, dword [ebp - 8]
add edx, dword [ebp - 0x14]
add edx, dword [ebp - 0x14]
pop edx
mov dword [esp + 0x91c], ecx
cmp dword [esp + 0x87c], 0
jne 0x40239a
push edx
shl edx, 0x56
xor edx, ebx
and edx, edi
or edx, dword [ebp - 0xc]
sub edx, dword [ebp - 0xc]
pop edx
mov dword [esp + 0x884], 0x400
add eax, 0x31
add edx, 0x19
add esi, 0x21
sub esi, 0x21
sub edx, 0x19
sub eax, 0x31
mov eax, dword [esp + 0x884]
add ecx, 0x50
push esi
pop esi
sub ecx, 0x50
cmp eax, dword [esp + 0x930]
jbe 0x40229d
mov eax, dword [esp + 0x930]
mov dword [esp + 0x884], eax
lea eax, [esp + 0x6c]
mov ecx, dword [esp + 0x884]
mov edx, dword [esp + 0x92c]
add edx, dword [esp + 0x888]
mov dword [esp], edx
add edx, 0x5e
add edi, 0x1a
add esi, 3
push esi
mov esi, edi
xor esi, dword [ebp - 0xc]
xor esi, 0x5a
xor esi, eax
pop esi
sub esi, 3
sub edi, 0x1a
sub edx, 0x5e
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00403290
mov ecx, dword [esp + 0x884]
mov edx, dword [esp + 0x888]
push esi
or esi, ebx
sub esi, dword [ebp - 0x10]
xor esi, edx
add esi, eax
pop esi
sub edx, 0xb3405545
add ecx, 0x3c
sub ecx, 0x3c
add edx, ecx
add edx, 0xb3405545
mov dword [esp + 0x888], edx
mov ecx, dword [esp + 0x884]
push eax
pop eax
mov edx, dword [esp + 0x930]
sub edx, 0x68fa4dc8
sub edx, ecx
push edi
add edi, esi
sub edi, ecx
pop edi
add edx, 0x68fa4dc8
mov dword [esp + 0x930], edx
mov dword [esp + 0x87c], 0x400
mov ecx, dword [esp + 0x87c]
cmp ecx, dword [esp + 0x930]
mov dword [esp + 0x20], eax
jbe 0x40238f
mov eax, dword [esp + 0x930]
mov dword [esp + 0x87c], eax
lea eax, [esp + 0x6c]
mov dword [esp + 0x91c], eax
cmp dword [esp + 0x86c], 0
je 0x4023b0
jmp 0x4023d1
jmp 0x4023b5
cmp dword [esp + 0x87c], 0
jne 0x401f45
mov dword [esp + 0x870], 0
mov eax, dword [esp + 0x870]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret