Function at 0x488910
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x344
mov eax, dword [0x592830]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x334], eax
mov eax, dword [ebp + 0xc]
push ebx
mov dword [ebp - 0x2e0], eax
mov eax, dword [ebp + 0x10]
push esi
mov dword [ebp - 0x324], edx
mov edx, dword [ebp + 0x18]
push edi
mov dword [ebp - 0x2f0], eax
mov eax, dword [ebp + 0x1c]
mov edi, 0x40
mov esi, 0x28
mov dword [ebp - 0x2f4], ecx
mov dword [ebp - 0x304], eax
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x2f8], esi
mov dword [ebp - 0x2bc], 8
mov byte [ebp - 0x2b1], 1
cmp edx, 0x100000
jae 0x48921b
test ecx, ecx
jne 0x488994
xor eax, eax
jmp 0x488996
mov eax, dword [ecx]
mov eax, dword [eax]
cmp eax, 0x2a0
jg 0x488a65
je 0x488a31
cmp eax, 4
je 0x4889eb
cmp eax, 0x40
jne 0x4891f3
lea ecx, [ebp - 0x2b0]
call fcn.00465010
test eax, eax
jle 0x489130
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x2d0], 0x488580
mov dword [ebp - 0x2b8], 0x464e90
mov eax, 0x14
jmp 0x488aff
lea ecx, [ebp - 0x2b0]
call fcn.00481720
test eax, eax
jle 0x489130
mov edx, dword [ebp + 0x18]
mov esi, 0x30
mov dword [ebp - 0x2d0], 0x488500
mov dword [ebp - 0x2b8], 0x4815d0
mov eax, 0x10
mov dword [ebp - 0x2f8], esi
mov byte [ebp - 0x2b1], 0
jmp 0x488aff
lea ecx, [ebp - 0x2b0]
call fcn.00466420
test eax, eax
jle 0x489130
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x2d0], 0x488620
mov dword [ebp - 0x2b8], 0x466570
mov eax, 0x20
jmp 0x488aff
sub eax, 0x2a1
je 0x488abe
dec eax
je 0x488aa7
dec eax
jne 0x4891f3
lea ecx, [ebp - 0x2b0]
call fcn.004663c0
test eax, eax
jle 0x489130
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x2d0], 0x488620
mov dword [ebp - 0x2b8], 0x466570
mov eax, 0x1c
jmp 0x488aff
lea ecx, [ebp - 0x2b0]
call fcn.00463fc0
test eax, eax
jle 0x489130
mov eax, edi
jmp 0x488ad6
lea ecx, [ebp - 0x2b0]
call fcn.00463f10
test eax, eax
jle 0x489130
mov eax, 0x30
mov edi, 0x80
mov dword [ebp - 0x2bc], 0x10
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x2b8], 0x464710
mov dword [ebp - 0x2d0], 0x488710
cmp byte [ebp + 0x24], 0
mov ebx, 0xd
mov dword [ebp - 0x2c4], eax
mov dword [ebp - 0x2fc], ebx
je 0x488b24
mov ebx, dword [ebp + 0x20]
add ebx, 0xb
add ebx, esi
mov dword [ebp - 0x2fc], ebx
xor ecx, ecx
cmp byte [ebp + 0x24], cl
mov esi, ebx
sete cl
sub esi, eax
mov eax, dword [ebp - 0x2bc]
dec eax
add eax, esi
add eax, edi
add eax, edx
xor edx, edx
div edi
lea ecx, [ecx*4 + 2]
mov dword [ebp - 0x2d4], ecx
mov ecx, dword [ebp + 0x14]
add ecx, esi
mov esi, dword [ebp - 0x2dc]
xor edx, edx
mov dword [ebp - 0x2e4], ecx
xor edi, edi
mov dword [ebp - 0x2d8], edi
mov dword [ebp - 0x2cc], eax
xor eax, eax
mov dword [ebp - 0x2e8], eax
mov eax, ecx
div esi
mov dword [ebp - 0x328], eax
mov eax, dword [ebp - 0x2bc]
add eax, ecx
mov dword [ebp - 0x2ec], edx
xor edx, edx
div esi
mov edx, dword [ebp - 0x2d4]
xor ecx, ecx
cmp byte [ebp + 0x24], cl
setne cl
add ecx, edx
mov dword [ebp - 0x330], eax
mov eax, dword [ebp - 0x2cc]
cmp eax, ecx
jbe 0x488bc6
sub eax, edx
mov edi, eax
imul edi, esi
mov dword [ebp - 0x2e8], eax
mov dword [ebp - 0x2d8], edi
mov eax, dword [ebp - 0x2e4]
shl eax, 3
cmp byte [ebp + 0x24], 0
mov dword [ebp - 0x2c0], eax
jne 0x488c44
lea eax, [eax + esi*8]
push esi
mov dword [ebp - 0x2c0], eax
lea eax, [ebp - 0x98]
push 0
push eax
call fcn.004f2670
mov eax, dword [ebp + 0x20]
add esp, 0xc
cmp eax, 0x80
ja 0x489207
push eax
push dword [ebp - 0x304]
lea eax, [ebp - 0x98]
push eax
call fcn.004f0080
add esp, 0xc
xor eax, eax
test esi, esi
je 0x488c2d
xor byte [ebp + eax - 0x98], 0x36
inc eax
cmp eax, esi
jb 0x488c20
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2b8]
add esp, 8
cmp byte [ebp - 0x2b1], 0
je 0x488c92
mov eax, dword [ebp - 0x2bc]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004f2670
mov ecx, dword [ebp - 0x2c0]
mov edx, dword [ebp - 0x2bc]
mov eax, ecx
shr eax, 0x18
mov byte [ebp + edx - 0x18], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp + edx - 0x17], al
mov eax, ecx
add esp, 0xc
shr eax, 8
mov byte [ebp + edx - 0x16], al
mov byte [ebp + edx - 0x15], cl
jmp 0x488cd1
push dword [ebp - 0x2bc]
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004f2670
mov ecx, dword [ebp - 0x2c0]
mov edx, dword [ebp - 0x2bc]
mov eax, ecx
shr eax, 0x18
mov byte [ebp + edx - 0x19], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp + edx - 0x1a], al
mov eax, ecx
add esp, 0xc
shr eax, 8
mov byte [ebp + edx - 0x1b], al
mov byte [ebp + edx - 0x1c], cl
test edi, edi
je 0x488e12
cmp byte [ebp + 0x24], 0
je 0x488d8e
cmp ebx, esi
jbe 0x489130
push dword [ebp - 0x2e0]
lea eax, [ebp - 0x2b0]
sub ebx, esi
push eax
mov dword [ebp - 0x2cc], ebx
call dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x2e0]
add eax, esi
push ebx
push eax
lea eax, [ebp - 0x158]
push eax
call fcn.004f0080
add esp, 0x14
mov eax, esi
sub eax, ebx
push eax
push dword [ebp - 0x2f0]
lea eax, [ebp - 0x158]
add eax, ebx
push eax
call fcn.004f0080
add esp, 0xc
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2b8]
xor edx, edx
mov eax, edi
div esi
add esp, 8
dec eax
cmp eax, 1
jbe 0x488e12
mov ebx, dword [ebp - 0x2f0]
sub ebx, dword [ebp - 0x2cc]
lea edi, [eax - 1]
add ebx, esi
lea eax, [ebp - 0x2b0]
push ebx
push eax
call dword [ebp - 0x2b8]
add esp, 8
add ebx, esi
dec edi
jne 0x488d73
jmp 0x488e0c
mov ecx, dword [ebp - 0x2e0]
mov ebx, dword [ebp - 0x2f0]
mov eax, dword [ecx + 8]
movq xmm0, qword [ecx]
mov dword [ebp - 0x150], eax
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x14c], al
lea eax, [esi - 0xd]
push eax
lea eax, [ebp - 0x14b]
push ebx
push eax
movq qword [ebp - 0x158], xmm0
call fcn.004f0080
add esp, 0xc
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2b8]
xor edx, edx
mov eax, edi
div esi
add esp, 8
cmp eax, 1
jbe 0x488e12
add ebx, 0xfffffff3
add ebx, esi
lea edi, [eax - 1]
lea eax, [ebp - 0x2b0]
push ebx
push eax
call dword [ebp - 0x2b8]
add esp, 8
add ebx, esi
dec edi
jne 0x488df6
mov edi, dword [ebp - 0x2d8]
push 0x40
lea eax, [ebp - 0xd8]
push 0
push eax
call fcn.004f2670
mov edx, dword [ebp - 0x2e8]
mov eax, dword [ebp - 0x2d4]
add eax, edx
add esp, 0xc
mov dword [ebp - 0x33c], eax
cmp edx, eax
ja 0x48906e
mov eax, edx
xor eax, dword [ebp - 0x328]
lea ecx, [eax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and cl, al
mov eax, edx
xor eax, dword [ebp - 0x330]
neg cl
xor edx, edx
lea ebx, [eax - 1]
shr ebx, 0x1f
not eax
shr eax, 0x1f
and bl, al
neg bl
mov dword [ebp - 0x320], ecx
mov dword [ebp - 0x300], edx
mov dword [ebp - 0x2cc], ebx
test esi, esi
je 0x489001
mov eax, dword [ebp - 0x2ec]
inc eax
mov dword [ebp - 0x2c0], eax
mov eax, dword [ebp - 0x2ec]
shr eax, 0x1f
shr dword [ebp - 0x2c0], 0x1f
mov dword [ebp - 0x338], eax
movzx eax, cl
mov dword [ebp - 0x340], eax
mov al, bl
not al
or al, cl
mov byte [ebp - 0x2c5], al
mov eax, esi
sub eax, dword [ebp - 0x2bc]
or ebx, 0xffffffff
mov dword [ebp - 0x32c], eax
mov eax, dword [ebp - 0x2bc]
sub eax, esi
sub ebx, dword [ebp - 0x2ec]
lea eax, [ebp + eax - 0x14]
mov dword [ebp - 0x2d4], eax
mov dword [ebp - 0x2e4], ebx
jmp 0x488f00
mov ecx, dword [ebp - 0x2fc]
mov byte [ebp - 0x2b1], 0
cmp edi, ecx
jae 0x488f19
mov eax, dword [ebp - 0x2e0]
jmp 0x488f2a
mov eax, dword [ebp + 0x18]
add eax, ecx
cmp edi, eax
jae 0x488f33
mov eax, dword [ebp - 0x2f0]
sub eax, ecx
mov al, byte [eax + edi]
mov byte [ebp - 0x2b1], al
mov eax, dword [ebp - 0x338]
add ebx, edx
shr edx, 0x1f
lea ecx, [ebx + 1]
shr ecx, 0x1f
xor cl, al
xor al, dl
or cl, al
xor cl, dl
shr ebx, 0x1f
xor bl, byte [ebp - 0x2c0]
dec cl
movzx ecx, cl
and ecx, dword [ebp - 0x340]
mov al, dl
xor al, byte [ebp - 0x2c0]
inc edi
or bl, al
xor bl, dl
mov edx, dword [ebp - 0x300]
dec bl
and bl, byte [ebp - 0x320]
mov al, cl
not al
and al, byte [ebp - 0x2b1]
and cl, 0x80
not bl
or al, cl
and bl, al
and bl, byte [ebp - 0x2c5]
mov dword [ebp - 0x2d8], edi
cmp edx, dword [ebp - 0x32c]
jb 0x488fbd
mov eax, dword [ebp - 0x2cc]
movzx eax, al
mov cl, al
not cl
and cl, bl
mov ebx, dword [ebp - 0x2d4]
and al, byte [ebx]
or cl, al
mov bl, cl
mov eax, dword [ebp - 0x2e4]
mov esi, dword [ebp - 0x2dc]
inc dword [ebp - 0x2d4]
mov edi, dword [ebp - 0x2d8]
lea ecx, [ebp - 0x1d7]
add ecx, dword [ebp - 0x2ec]
add eax, edx
inc edx
mov byte [eax + ecx], bl
mov ebx, dword [ebp - 0x2e4]
mov dword [ebp - 0x300], edx
cmp edx, esi
jb 0x488f00
mov ebx, dword [ebp - 0x2cc]
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2b8]
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2d0]
mov edx, dword [ebp - 0x2c4]
add esp, 0x10
xor eax, eax
test edx, edx
je 0x489055
jmp 0x489040
mov cl, byte [ebp + eax - 0x1d8]
and cl, bl
or byte [ebp + eax - 0xd8], cl
inc eax
cmp eax, edx
jb 0x489040
mov edx, dword [ebp - 0x2e8]
inc edx
mov dword [ebp - 0x2e8], edx
cmp edx, dword [ebp - 0x33c]
jbe 0x488e41
mov edx, dword [ebp - 0x2f4]
xorps xmm0, xmm0
mov edx, dword [edx]
push 0
lea ecx, [ebp - 0x31c]
movq qword [ebp - 0x31c], xmm0
movq qword [ebp - 0x314], xmm0
movq qword [ebp - 0x30c], xmm0
call fcn.00424050
add esp, 4
test eax, eax
jle 0x489125
cmp byte [ebp + 0x24], 0
je 0x489143
mov esi, dword [ebp - 0x2f8]
push esi
lea eax, [ebp - 0x98]
push 0x5c
push eax
call fcn.004f2670
add esp, 0xc
lea eax, [ebp - 0x31c]
push dword [ebp + 0x20]
push dword [ebp - 0x304]
push eax
call dword [ebp - 0x308]
add esp, 0xc
test eax, eax
jle 0x489125
push esi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x31c]
push eax
call dword [ebp - 0x308]
add esp, 0xc
test eax, eax
jle 0x489125
push dword [ebp - 0x2c4]
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x31c]
push eax
call dword [ebp - 0x308]
add esp, 0xc
test eax, eax
jg 0x48919a
lea ecx, [ebp - 0x31c]
call fcn.00424520
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004ebb9e
mov esp, ebp
pop ebp
ret
xor eax, eax
test esi, esi
je 0x48915d
lea esp, [esp]
xor byte [ebp + eax - 0x98], 0x6a
inc eax
cmp eax, esi
jb 0x489150
push esi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x31c]
push eax
call dword [ebp - 0x308]
add esp, 0xc
test eax, eax
jle 0x489125
push dword [ebp - 0x2c4]
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x31c]
push eax
call dword [ebp - 0x308]
add esp, 0xc
test eax, eax
jle 0x489125
mov edx, dword [ebp - 0x324]
lea eax, [ebp - 0x2f4]
push eax
lea ecx, [ebp - 0x31c]
call fcn.004242a0
add esp, 4
lea ecx, [ebp - 0x31c]
call fcn.00424520
mov ecx, dword [ebp - 0x334]
test ecx, ecx
je 0x4891d2
mov eax, dword [ebp - 0x2f4]
mov dword [ecx], eax
lea ecx, [ebp - 0x31c]
call fcn.00424520
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.004ebb9e
mov esp, ebp
pop ebp
ret
push 0x570784
mov edx, 0x209
mov ecx, str.ssl_s3_cbc.c
call fcn.0043c3c0
push str.mac_secret_length___sizeof_hmac_pad_
mov edx, 0x271
mov ecx, str.ssl_s3_cbc.c
call fcn.0043c3c0
push str.data_plus_mac_plus_padding_size___1024__1024
mov edx, 0x1c7
mov ecx, str.ssl_s3_cbc.c
call fcn.0043c3c0
int3