Function at 0x4053e0
Capabilities:
Authenticate hmac

Disassembly:
sub esp, 0x9c
mov eax, dword [0x5808f0]
xor eax, esp
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 8], eax
mov dword [esp + 0x10], ecx
test eax, eax
je 0x40564d
test ecx, ecx
je 0x40564d
push esi
push 0x40
lea eax, [esp + 0x20]
push 0x36
push eax
call fcn.00468ca0
push 0x40
lea ecx, [esp + 0x6c]
push 0x5c
push ecx
call fcn.00468ca0
mov eax, dword [esp + 0xcc]
add esp, 0x18
cmp eax, 3
ja case.default.0x40544a
jmp dword [eax*4 + 0x405664]
push 0x68
call fcn.00469e21
add esp, 4
test eax, eax
je 0x4054b0
mov ecx, eax
call fcn.00405200
jmp 0x4054b2
push 0x78
call fcn.00469e21
add esp, 4
test eax, eax
je 0x4054b0
mov ecx, eax
call fcn.00405010
jmp 0x4054b2
push 0xe0
call fcn.00469e21
add esp, 4
test eax, eax
je 0x4054b0
mov ecx, eax
call fcn.0040c800
jmp 0x4054b2
push 0x68
call fcn.00469e21
add esp, 4
test eax, eax
je 0x4054b0
mov ecx, eax
call fcn.00405680
jmp 0x4054b2
xor eax, eax
mov esi, eax
test esi, esi
je case.default.0x40544a
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push ebx
push ebp
push edi
mov ecx, esi
call eax
mov edi, eax
push edi
call fcn.004691cd
push edi
mov ebx, eax
call fcn.004691cd
push edi
mov dword [esp + 0x1c], eax
call fcn.004691cd
lea ecx, [edi + edi]
push ecx
mov dword [esp + 0x24], eax
call fcn.004691cd
add esp, 0x10
mov ebp, eax
test ebx, ebx
je 0x405608
cmp dword [esp + 0x10], 0
je 0x405608
cmp dword [esp + 0x14], 0
je 0x405608
test ebp, ebp
je 0x405608
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0x18]
mov edx, dword [esi]
mov edx, dword [edx + 4]
push ebx
push eax
push ecx
mov ecx, esi
call edx
test edi, edi
jbe 0x40556d
lea ecx, [esp + 0x28]
sub ecx, ebx
lea edx, [esp + 0x68]
sub edx, ebx
mov eax, ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], edi
jmp 0x405555
mov ecx, dword [esp + 0x1c]
movzx edx, byte [eax]
xor byte [ecx + eax], dl
movzx edx, byte [eax]
mov ecx, dword [esp + 0x24]
xor byte [ecx + eax], dl
inc eax
sub dword [esp + 0x18], 1
jne 0x405551
mov ecx, dword [esp + 0x10]
mov eax, dword [esi]
mov eax, dword [eax + 4]
push ecx
push 0x40
lea edx, [esp + 0x30]
push edx
mov ecx, esi
call eax
mov eax, dword [esp + 0x14]
mov edx, dword [esi]
mov edx, dword [edx + 4]
push eax
push 0x40
lea ecx, [esp + 0x70]
push ecx
mov ecx, esi
call edx
mov eax, dword [esp + 0x10]
push edi
push eax
push ebp
call fcn.00468d50
mov ecx, dword [esp + 0x20]
push edi
push ecx
add edi, ebp
push edi
call fcn.00468d50
mov edx, dword [esp + 0xd4]
mov eax, dword [esp + 0x38]
push edx
push ebp
push eax
call fcn.00468d50
push ebp
call fcn.004690f0
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004690f0
mov edx, dword [esp + 0x3c]
push edx
call fcn.004690f0
push ebx
call fcn.004690f0
push esi
call fcn.004699ce
add esp, 0x38
mov al, 1
pop edi
pop ebp
pop ebx
pop esi
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.004690b5
add esp, 0x9c
ret
push ebp
call fcn.004690f0
mov eax, dword [esp + 0x18]
push eax
call fcn.004690f0
mov ecx, dword [esp + 0x18]
push ecx
call fcn.004690f0
push ebx
call fcn.004690f0
push esi
call fcn.004699ce
add esp, 0x14
xor al, al
jmp 0x4055ef
xor al, al
pop esi
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.004690b5
add esp, 0x9c
ret
mov ecx, dword [esp + 0x98]
xor ecx, esp
xor al, al
call fcn.004690b5
add esp, 0x9c
ret