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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x368
mov eax, dword [0x617960]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebx + 0x20], 0x100000
mov eax, dword [ebx + 8]
mov dword [ebp - 0x300], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x31c], eax
mov eax, dword [ebx + 0x14]
push esi
mov esi, dword [ebx + 0x10]
mov dword [ebp - 0x2f8], eax
mov eax, dword [ebx + 0x18]
push edi
mov dword [ebp - 0x2e4], eax
mov edi, 0x40
mov eax, dword [ebx + 0x24]
mov dword [ebp - 0x314], esi
mov dword [ebp - 0x308], eax
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x304], 0x28
mov dword [ebp - 0x2cc], 8
mov byte [ebp - 0x2b1], 1
jb 0x566324
push str.data_plus_mac_plus_padding_size___1024__1024
push 0x1c7
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0051ef00
add esp, 0xc
push dword [ebp - 0x300]
call fcn.0050e170
push eax
call fcn.00533f30
add esp, 8
cmp eax, 0x2a0
jg 0x566408
je 0x5663d3
cmp eax, 4
je 0x56638c
cmp eax, 0x40
jne 0x566415
lea eax, [ebp - 0x2b0]
push eax
call fcn.00551470
add esp, 4
test eax, eax
jle 0x566c30
mov dword [ebp - 0x2d8], 0x567010
mov eax, 0x14
mov dword [ebp - 0x2bc], 0x5514b0
jmp 0x5664d1
lea eax, [ebp - 0x2b0]
push eax
call fcn.0051cfc0
add esp, 4
test eax, eax
jle 0x566c30
mov edx, 0x30
mov dword [ebp - 0x2d8], 0x566f90
mov dword [ebp - 0x2bc], 0x51d000
mov eax, 0x10
mov dword [ebp - 0x304], edx
mov byte [ebp - 0x2b1], 0
jmp 0x5664d6
lea eax, [ebp - 0x2b0]
push eax
call fcn.005518f0
add esp, 4
test eax, eax
jle 0x566c30
mov dword [ebp - 0x2d8], 0x5670b0
mov eax, 0x20
mov dword [ebp - 0x2bc], 0x551950
jmp 0x5664d1
sub eax, 0x2a1
je 0x56648c
dec eax
je 0x566471
dec eax
je 0x56643f
push 0x5fe754
push 0x209
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0051ef00
add esp, 0xc
test esi, esi
je 0x566c30
mov dword [esi], 0
jmp 0x566c30
lea eax, [ebp - 0x2b0]
push eax
call fcn.005515b0
add esp, 4
test eax, eax
jle 0x566c30
mov dword [ebp - 0x2d8], 0x5670b0
mov eax, 0x1c
mov dword [ebp - 0x2bc], 0x551950
jmp 0x5664d1
lea eax, [ebp - 0x2b0]
push eax
call fcn.00552090
add esp, 4
test eax, eax
jle 0x566c30
mov eax, edi
jmp 0x5664a8
lea eax, [ebp - 0x2b0]
push eax
call fcn.00551a50
add esp, 4
test eax, eax
jle 0x566c30
mov eax, 0x30
mov edi, 0x80
mov dword [ebp - 0x2cc], 0x10
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x2bc], 0x552140
mov dword [ebp - 0x2d8], 0x5671a0
mov edx, 0x28
cmp byte [ebx + 0x2c], 0
mov ecx, 0xd
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2f0], ecx
je 0x5664fb
mov ecx, dword [ebx + 0x28]
add ecx, 0xb
add ecx, edx
mov dword [ebp - 0x2f0], ecx
xor edx, edx
mov esi, ecx
cmp byte [ebx + 0x2c], dl
mov ecx, dword [ebx + 0x20]
sete dl
sub esi, eax
mov eax, dword [ebp - 0x2cc]
dec ecx
add eax, esi
add eax, edi
add eax, ecx
lea edx, [edx*4 + 2]
mov dword [ebp - 0x2d4], edx
xor edx, edx
div edi
mov ecx, dword [ebx + 0x1c]
xor edx, edx
mov dword [ebp - 0x2f4], eax
add ecx, esi
xor eax, eax
mov dword [ebp - 0x2e8], ecx
mov dword [ebp - 0x2ec], eax
mov eax, ecx
div edi
mov dword [ebp - 0x324], eax
mov eax, dword [ebp - 0x2cc]
add eax, ecx
mov dword [ebp - 0x2fc], edx
xor edx, edx
xor ecx, ecx
div edi
cmp byte [ebx + 0x2c], cl
mov edx, dword [ebp - 0x2d4]
setne cl
mov dword [ebp - 0x32c], eax
mov eax, dword [ebp - 0x2f4]
add ecx, edx
cmp eax, ecx
jbe 0x56658e
sub eax, edx
mov esi, eax
mov dword [ebp - 0x2ec], eax
imul esi, edi
jmp 0x566590
xor esi, esi
mov eax, dword [ebp - 0x2e8]
shl eax, 3
cmp byte [ebx + 0x2c], 0
mov dword [ebp - 0x2b8], eax
jne 0x566674
lea eax, [eax + edi*8]
push edi
mov dword [ebp - 0x2b8], eax
lea eax, [ebp - 0xd8]
push 0
push eax
call fcn.00495000
mov eax, dword [ebx + 0x28]
add esp, 0xc
cmp eax, 0x80
jbe 0x5665e8
push str.mac_secret_length___sizeof_hmac_pad_
push 0x271
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0051ef00
mov eax, dword [ebx + 0x28]
add esp, 0xc
push eax
push dword [ebp - 0x308]
lea eax, [ebp - 0xd8]
push eax
call fcn.0049dad0
add esp, 0xc
xor ecx, ecx
test edi, edi
je 0x56665d
cmp edi, 0x20
jb 0x566646
movdqa xmm1, xmmword [str.6666666666666666jjjjjjjjjjjjjjjj_]
mov eax, edi
and eax, 0x1f
mov edx, edi
sub edx, eax
lea eax, [ebp - 0xc8]
movdqu xmm0, xmmword [eax - 0x10]
add ecx, 0x20
lea eax, [eax + 0x20]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x30], xmm0
movdqu xmm0, xmmword [eax - 0x20]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x20], xmm0
cmp ecx, edx
jb 0x566620
cmp ecx, edi
jae 0x56665d
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x36
inc ecx
cmp ecx, edi
jb 0x566650
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
add esp, 8
cmp byte [ebp - 0x2b1], 0
je 0x5666c2
mov eax, dword [ebp - 0x2cc]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.00495000
mov ecx, dword [ebp - 0x2b8]
add esp, 0xc
mov edx, dword [ebp - 0x2cc]
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
shr eax, 8
mov byte [ebp + edx - 0x16], al
mov byte [ebp + edx - 0x15], cl
jmp 0x566701
push dword [ebp - 0x2cc]
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.00495000
mov ecx, dword [ebp - 0x2b8]
add esp, 0xc
mov edx, dword [ebp - 0x2cc]
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
shr eax, 8
mov byte [ebp + edx - 0x1b], al
mov byte [ebp + edx - 0x1c], cl
test esi, esi
je 0x566889
cmp byte [ebx + 0x2c], 0
je 0x5667ec
mov eax, dword [ebp - 0x2f0]
cmp eax, edi
jbe 0x566c30
push dword [ebp - 0x2f8]
sub eax, edi
mov dword [ebp - 0x2b8], eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
push dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x2f8]
add eax, edi
push eax
lea eax, [ebp - 0x158]
push eax
call fcn.0049dad0
mov eax, edi
sub eax, dword [ebp - 0x2b8]
push eax
push dword [ebp - 0x2e4]
lea eax, [ebp - 0x158]
add eax, dword [ebp - 0x2b8]
push eax
call fcn.0049dad0
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
xor edx, edx
mov eax, esi
div edi
add esp, 0x28
lea ecx, [eax - 1]
cmp ecx, 1
jbe 0x566889
mov eax, dword [ebp - 0x2e4]
sub eax, dword [ebp - 0x2b8]
add eax, edi
dec ecx
mov dword [ebp - 0x2c4], eax
mov dword [ebp - 0x2c8], ecx
lea esp, [esp]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
mov eax, dword [ebp - 0x2c4]
add esp, 8
add eax, edi
dec dword [ebp - 0x2c8]
mov dword [ebp - 0x2c4], eax
jne 0x5667c0
jmp 0x566889
mov ecx, dword [ebp - 0x2f8]
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, [edi - 0xd]
push eax
push dword [ebp - 0x2e4]
lea eax, [ebp - 0x14b]
movq qword [ebp - 0x158], xmm0
push eax
call fcn.0049dad0
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
xor edx, edx
mov eax, esi
div edi
add esp, 0x14
mov ecx, eax
cmp ecx, 1
jbe 0x566889
mov eax, dword [ebp - 0x2e4]
add eax, 0xfffffff3
add eax, edi
dec ecx
mov dword [ebp - 0x2c4], eax
mov dword [ebp - 0x2c8], ecx
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
mov eax, dword [ebp - 0x2c4]
add esp, 8
add eax, edi
dec dword [ebp - 0x2c8]
mov dword [ebp - 0x2c4], eax
jne 0x566862
push 0x40
lea eax, [ebp - 0x58]
push 0
push eax
call fcn.00495000
mov eax, dword [ebp - 0x2d4]
add esp, 0xc
mov edx, dword [ebp - 0x2ec]
add eax, edx
mov dword [ebp - 0x310], eax
cmp edx, eax
ja 0x566b81
mov eax, edx
xor eax, dword [ebp - 0x324]
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and cl, al
mov eax, edx
xor eax, dword [ebp - 0x32c]
neg cl
mov dword [ebp - 0x2e8], ecx
xor edx, edx
mov dword [ebp - 0x2b8], edx
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and cl, al
neg cl
movsx eax, cl
mov dword [ebp - 0x2f4], ecx
movd xmm0, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
movdqa xmmword [ebp - 0x360], xmm0
test edi, edi
je 0x566a9c
mov edx, dword [ebp - 0x2fc]
not cl
lea eax, [edx + 1]
mov dword [ebp - 0x2d4], eax
mov eax, edx
shr dword [ebp - 0x2d4], 0x1f
shr eax, 0x1f
mov dword [ebp - 0x320], eax
mov eax, dword [ebp - 0x2e8]
or cl, al
movzx edx, al
mov eax, edi
sub eax, dword [ebp - 0x2cc]
mov dword [ebp - 0x30c], eax
mov eax, dword [ebp - 0x2cc]
mov byte [ebp - 0x2cd], cl
sub eax, edi
mov ecx, dword [ebp - 0x2fc]
mov dword [ebp - 0x328], edx
neg ecx
lea edx, [ebp - 0x14]
mov dword [ebp - 0x2c8], ecx
add eax, edx
mov edx, dword [ebp - 0x2b8]
mov dword [ebp - 0x2c4], eax
lea ebx, [ebx]
mov eax, dword [ebp - 0x2f0]
mov byte [ebp - 0x2b1], 0
cmp esi, eax
jae 0x5669a9
mov eax, dword [ebp - 0x2f8]
jmp 0x5669bc
add eax, dword [ebx + 0x20]
cmp esi, eax
jae 0x5669c5
mov eax, dword [ebp - 0x2e4]
sub eax, dword [ebp - 0x2f0]
mov al, byte [eax + esi]
mov byte [ebp - 0x2b1], al
mov eax, dword [ebp - 0x320]
inc esi
shr edx, 0x1f
shr ecx, 0x1f
xor cl, al
xor al, dl
or cl, al
mov eax, dword [ebp - 0x2c8]
dec eax
xor cl, dl
shr eax, 0x1f
dec cl
xor al, byte [ebp - 0x2d4]
mov dword [ebp - 0x2e0], eax
mov al, byte [ebp - 0x2d4]
xor al, dl
movzx ecx, cl
or byte [ebp - 0x2e0], al
xor byte [ebp - 0x2e0], dl
and ecx, dword [ebp - 0x328]
mov edx, dword [ebp - 0x2e0]
mov al, cl
dec dl
not al
and dl, byte [ebp - 0x2e8]
and cl, 0x80
and al, byte [ebp - 0x2b1]
not dl
or al, cl
and dl, al
mov eax, dword [ebp - 0x30c]
and dl, byte [ebp - 0x2cd]
cmp dword [ebp - 0x2b8], eax
jb 0x566a5f
mov eax, dword [ebp - 0x2f4]
movzx ecx, al
mov al, cl
not al
and al, dl
mov edx, dword [ebp - 0x2c4]
and cl, byte [edx]
or al, cl
mov dl, al
mov ecx, dword [ebp - 0x2c8]
lea eax, [ebp - 0x1d8]
add eax, dword [ebp - 0x2fc]
inc dword [ebp - 0x2c4]
mov edi, dword [ebp - 0x2dc]
mov byte [eax + ecx], dl
inc ecx
mov edx, dword [ebp - 0x2b8]
inc edx
mov dword [ebp - 0x2c8], ecx
mov dword [ebp - 0x2b8], edx
cmp edx, edi
jb 0x566990
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2bc]
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2d8]
mov edx, dword [ebp - 0x2c0]
add esp, 0x10
xor eax, eax
test edx, edx
je 0x566b68
cmp edx, 0x20
jb 0x566b37
movdqa xmm2, xmmword [ebp - 0x360]
mov ecx, edx
and ecx, 0x1f
sub edx, ecx
jmp 0x566af0
movdqu xmm0, xmmword [ebp + eax - 0x58]
movdqu xmm1, xmmword [ebp + eax - 0x1d8]
pand xmm1, xmm2
por xmm1, xmm0
movdqu xmmword [ebp + eax - 0x58], xmm1
movdqu xmm1, xmmword [ebp + eax - 0x1c8]
movdqu xmm0, xmmword [ebp + eax - 0x48]
pand xmm1, xmm2
por xmm1, xmm0
movdqu xmmword [ebp + eax - 0x48], xmm1
add eax, 0x20
cmp eax, edx
jb 0x566af0
mov edx, dword [ebp - 0x2c0]
cmp eax, edx
jae 0x566b68
mov edx, dword [ebp - 0x2f4]
mov edi, dword [ebp - 0x2c0]
jmp 0x566b50
mov cl, byte [ebp + eax - 0x1d8]
and cl, dl
or byte [ebp + eax - 0x58], cl
inc eax
cmp eax, edi
jb 0x566b50
mov edi, dword [ebp - 0x2dc]
mov edx, dword [ebp - 0x2ec]
inc edx
mov dword [ebp - 0x2ec], edx
cmp edx, dword [ebp - 0x310]
jbe 0x5668b5
lea eax, [ebp - 0x344]
push eax
call fcn.00523230
mov eax, dword [ebp - 0x300]
push 0
push dword [eax]
lea eax, [ebp - 0x344]
push eax
call fcn.00522e10
add esp, 0x10
test eax, eax
jle 0x566c21
cmp byte [ebx + 0x2c], 0
je 0x566c45
mov esi, dword [ebp - 0x304]
lea eax, [ebp - 0xd8]
push esi
push 0x5c
push eax
call fcn.00495000
push dword [ebx + 0x28]
lea eax, [ebp - 0x344]
push dword [ebp - 0x308]
push eax
call fcn.00522fc0
add esp, 0x18
test eax, eax
jle 0x566c21
push esi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00522fc0
add esp, 0xc
test eax, eax
jle 0x566c21
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00522fc0
add esp, 0xc
test eax, eax
jg 0x566ced
lea eax, [ebp - 0x344]
push eax
call fcn.00522fd0
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049355b
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xor ecx, ecx
test edi, edi
je 0x566cad
cmp edi, 0x20
jb 0x566c96
movdqa xmm1, xmmword [0x5e2d10]
mov eax, edi
and eax, 0x1f
mov edx, edi
sub edx, eax
lea eax, [ebp - 0xc8]
jmp 0x566c70
movdqu xmm0, xmmword [eax - 0x10]
add ecx, 0x20
lea eax, [eax + 0x20]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x30], xmm0
movdqu xmm0, xmmword [eax - 0x20]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x20], xmm0
cmp ecx, edx
jb 0x566c70
cmp ecx, edi
jae 0x566cad
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x6a
inc ecx
cmp ecx, edi
jb 0x566ca0
push edi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00522fc0
add esp, 0xc
test eax, eax
jle 0x566c21
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00522fc0
add esp, 0xc
test eax, eax
jle 0x566c21
lea eax, [ebp - 0x318]
push eax
push dword [ebp - 0x31c]
lea eax, [ebp - 0x344]
push eax
call fcn.00522d30
mov ecx, dword [ebp - 0x314]
add esp, 0xc
test ecx, ecx
je 0x566d1b
mov eax, dword [ebp - 0x318]
mov dword [ecx], eax
lea eax, [ebp - 0x344]
push eax
call fcn.00522fd0
mov ecx, dword [ebp - 4]
add esp, 4
xor ecx, ebp
mov eax, 1
pop edi
pop esi
call fcn.0049355b
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret