Function at 0x5ca356
Capabilities:
Authenticate hmac
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x5ca373
cmp dword [ebx + 0x2c], 0
jne 0x5ca378
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x5ca380
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push 0x40
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 0
mov dword [ebx + 0x2e4], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebp - 0x10], 0x40
call fcn.005c6b36
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x5ca3d6
push 0x660558
call fcn.005c9216
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x3c]
push edi
push ebx
mov dword [ebp - 4], esi
call eax
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov edi, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x1c], eax
cmp esi, edi
jbe 0x5ca514
cmp eax, 0x3c
je 0x5ca40e
cmp eax, 0xffffffff
jne 0x5ca51d
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x5ca41e
cmp edi, 0xffffffff
jne 0x5ca42c
push dword [ebp + 8]
call fcn.005c8596
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.005c7946
add esp, 4
test eax, eax
je 0x5ca503
mov eax, edi
sub eax, 1
je 0x5ca4b1
sub eax, 1
je 0x5ca495
sub eax, 1
jne 0x5ca503
cmp dword [ebx + 0x44], esi
je 0x5cab03
mov edi, dword [ebp - 8]
mov dword [edi + 0x18], 3
push dword [ebp + 8]
mov eax, dword [ebx + 0x44]
push edi
push ebx
call eax
add esp, 0xc
test eax, eax
jne 0x5ca503
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.005c9216
add esp, 0xc
jmp 0x5cac42
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.005cbc36
add esp, 0xc
test eax, eax
jmp 0x5ca4fd
cmp dword [ebx + 0x2e8], esi
je 0x5ca4e8
push dword [ebp + 8]
call fcn.005c7bc6
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x5ca4eb
cmp dword [edi + 0x18], esi
jne 0x5ca4eb
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.005ca0a6
add esp, 8
test eax, eax
jmp 0x5ca4fd
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.005ca046
mov esi, eax
add esp, 0xc
test esi, esi
je 0x5cab15
mov eax, dword [ebp - 0xc]
test eax, eax
mov edi, dword [ebp + 8]
cmove eax, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xffffffff
je 0x5cac14
cmp eax, 0x3c
jne 0x5caac4
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x5ca64f
nop word [eax + eax]
push esi
call fcn.005c8b66
add esp, 4
test eax, eax
jne 0x5ca64f
cmp esi, 0x3e
je 0x5ca64f
cmp esi, 0x2f
jne 0x5ca570
cmp edi, dword [ebp + 8]
ja 0x5ca64f
jmp 0x5ca5d0
cmp esi, 0x3c
je 0x5cab2d
cmp esi, 0x26
jne 0x5ca5b8
push dword [ebp - 8]
push ebx
call fcn.005cb106
add esp, 8
cmp eax, 0xffffffff
je 0x5cac42
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.005ca236
add esp, 0x10
test eax, eax
je 0x5cac42
mov edi, dword [ebp - 4]
jmp 0x5ca638
cmp esi, 0x30
jge 0x5ca5d0
cmp esi, 0x21
je 0x5ca5d0
cmp esi, 0x2d
je 0x5ca5d0
cmp esi, 0x2e
jne 0x5cac42
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.005ca236
add esp, 0x10
test eax, eax
je 0x5cac42
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x5ca601
cmp byte [ecx], 0x3f
je 0x5ca64f
cmp eax, 3
jne 0x5ca61c
clc
add esi, dword [ebp + 0x16]
push eax
push 0x660610
push ecx
call 0x7c70a6
add esp, 0xc
test eax, eax
je 0x5ca64f
mov ecx, dword [ebp + 8]
mov eax, edi
sub eax, ecx
cmp eax, 8
jne 0x5ca638
push eax
push 0x6602cc
push ecx
call 0x7c70a6
add esp, 0xc
test eax, eax
je 0x5ca64f
mov eax, dword [ebx + 0x2f0]
push ebx
jmp dword [ebp - 0x22]
invalid
pop edi
test al, 0x5e
cmp dh, byte [ebp - 0x18]
jle 0x5ca602
jle 0x5ca645
pushfd
push cs
out 0x3e, eax
test eax, 0x36293e41
mov byte [0x9e56f99d], al
mov word [eax - 0x24f7c16a], ss
and dword [ecx], esp
test al, 0x1c
mov ecx, 0x11a090f
sub cl, 0x56
insb byte es:[edi], dx
invalid
out dx, al
xchg esp, eax
push esp
mov bl, 0x81
cdq
shr dword [ebp + 0x11e9aa47], 0x53
dec esp
fmul st(2), st(0)
dec edi
pop es
out dx, eax
or esi, 0x3653da0d
cli
invalid
enter 0xffffffffffffd639, 0xffffffffffffffe5
salc
fsubr dword [ebp + eax*4 + 0x73]
sbb al, 0x5c
cwde
pop eax
dec esp
dec eax
sub byte [edi - 0x12f6b0ee], dl
sbb byte [eax - 0x48], ah
jle 0x5ca9cf
xchg byte [ebp - 0x12], dl
int 0xa6
cmpsb byte [esi], byte es:[edi]
jo 0x5caa98
clc
js 0x5caa3f
invalid
push eax
jl 0x5caad4
xchg byte [ebx - 0x6a], dl
mov al, byte [0xb4bb0179]
test al, 0xe3
dec esi
sub edi, dword [edi]
inc esp
xchg ebp, eax
or ebx, eax
and esp, ebx
jge 0x5caa21
in eax, dx
movsd dword es:[edi], dword [esi]
enter 0xffffffffffffb465, 0x32
adc esi, dword [ecx + 0x3469fd78]
imul esi, dword [edi + 0x13], 0x55
invalid
imul esi, dword [ebx + ebp*2], 0xfe551377
cmpsd dword [esi], dword es:[edi]
sbb dword [ebp + 0x6dbe49af], ecx
insd dword es:[edi], dx
adc cl, byte [eax]
inc ebp
sub bl, byte [edi - 0x4cbad6eb]
push edi
and ecx, ecx
in eax, dx
invalid
jg 0x5caa69
jb 0x5caa8b
or byte [ebp + edi*4 - 0x31], bl
add eax, 0x693a85ff
xchg edi, eax
sbb al, 0x96
jbe 0x5caabc
cwde
fadd st(5), st(0)
pop ebp
jbe 0x5cab19
mov edi, 0x805efa6c
push cs
mov ds, word [edx - 0x55a21912]
stosd dword es:[edi], eax
dec esi
xor eax, 0xd8e67b4f
popal
cmp ebx, esp
jnp 0x5caaca
cdq
rol dword [edx + 0x2e], cl
add edi, dword [esi + 8]
outsd dx, dword [esi]
cwde
dec edx
fstp xword [esi + 0x55]
or eax, 0x3fa93ef9
fsub qword [ebp - 0x30ba215d]
wait
and byte [edx], al
jg 0x5caabe
iretd
div byte [edx + edx*4 + 0x38]
daa
dec eax
mov ecx, 0x4ba3398e
pop ss
jp 0x5caacc
invalid
xabort 0x7a
fld dword [esi]
aam 0xce
ficomp dword [ecx + 0x38]
jp 0x5caabe
loop 0x5cab3e
retf
rcpps xmm5, xmmword [esi + 0x47583cc7]
push 0x36
pushfd
hlt
stosd dword es:[edi], eax
invalid
mov ah, 0x20
xchg ebx, eax
out dx, al
cli
fucompi st(3)
push esp
cmpsb byte [esi], byte es:[edi]
mov word [ebp - 0x41], fs
sbb byte [ebx - 0x28], al
jecxz 0x5cac39
into
xchg ebp, eax
and eax, 0xab6a1d0c
leave
cmp eax, 0x67381671
and dword [eax - 0x5eaa128], eax
sub al, byte [esi]
push es
aad 0x2c
mov byte [eax + 0x7468a810], bh
daa
or eax, 0xdc13fe20
jge 0x5cacc4
sub dl, al
mov al, byte [0xbfb36156]
push ecx
pop esp
jne 0x5caca1
mov eax, 0x3642687b
fstpnce st(2), st(0)
in al, dx
out 0x20, al
shrd dword [eax - 0x2042b74e], eax, cl
jl 0x5cac38
push ecx
cmpsb byte [esi], byte es:[edi]
out dx, al
push esi
xor eax, 0x5cdaaed3
rol ecx, cl
pushal
popal
push es
js 0x5cac90
push es
lodsb al, byte [esi]
xor ch, byte [eax]
ficomp word [eax]
sbb esi, dword [edx]
invalid
cmpsb byte [esi], byte es:[edi]
dec eax
mov dl, 0x98
pop esi
cdq
and eax, 0xca61bfe
mov bh, 0xc5
jmp 0x5cacc2
shr dword [esi - 0x7a05e58e], 1
mov dword [0xa87a9e80], eax
movsd dword es:[edi], dword [esi]
outsd dx, dword [esi]
jg 0x5cacfc
sbb byte [edx + 0x7994dee2], bh
sbb dl, 0x48
sub byte fs:[ecx], ah
xor ebp, esi
pushal
or al, 0x69
cli
push 0x5c
dec ecx
mov al, byte [0x7b48f3bc]
pop es
jbe 0x5cacd5
stc
mov ebx, 0x8d4fc649
sar dword [ecx], cl
invalid
ljmp 0xbcf2:0x4fe85596