Function at 0x574290
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 [0x629960]
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 0x574334
push str.data_plus_mac_plus_padding_size___1024__1024
push 0x1c7
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052cf80
add esp, 0xc
push dword [ebp - 0x300]
call fcn.00541620
push eax
call fcn.00541f90
add esp, 8
cmp eax, 0x2a0
jg 0x574418
je 0x5743e3
cmp eax, 4
je 0x57439c
cmp eax, 0x40
jne 0x574425
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055f480
add esp, 4
test eax, eax
jle 0x574c40
mov dword [ebp - 0x2d8], 0x575020
mov eax, 0x14
mov dword [ebp - 0x2bc], 0x55f4c0
jmp 0x5744e1
lea eax, [ebp - 0x2b0]
push eax
call fcn.0052b040
add esp, 4
test eax, eax
jle 0x574c40
mov edx, 0x30
mov dword [ebp - 0x2d8], 0x574fa0
mov dword [ebp - 0x2bc], 0x52b080
mov eax, 0x10
mov dword [ebp - 0x304], edx
mov byte [ebp - 0x2b1], 0
jmp 0x5744e6
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055f900
add esp, 4
test eax, eax
jle 0x574c40
mov dword [ebp - 0x2d8], 0x5750c0
mov eax, 0x20
mov dword [ebp - 0x2bc], 0x55f960
jmp 0x5744e1
sub eax, 0x2a1
je 0x57449c
dec eax
je 0x574481
dec eax
je 0x57444f
push 0x60d8ac
push 0x209
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052cf80
add esp, 0xc
test esi, esi
je 0x574c40
mov dword [esi], 0
jmp 0x574c40
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055f5c0
add esp, 4
test eax, eax
jle 0x574c40
mov dword [ebp - 0x2d8], 0x5750c0
mov eax, 0x1c
mov dword [ebp - 0x2bc], 0x55f960
jmp 0x5744e1
lea eax, [ebp - 0x2b0]
push eax
call fcn.005600a0
add esp, 4
test eax, eax
jle 0x574c40
mov eax, edi
jmp 0x5744b8
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055fa60
add esp, 4
test eax, eax
jle 0x574c40
mov eax, 0x30
mov edi, 0x80
mov dword [ebp - 0x2cc], 0x10
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x2bc], 0x560150
mov dword [ebp - 0x2d8], 0x5751b0
mov edx, 0x28
cmp byte [ebx + 0x2c], 0
mov ecx, 0xd
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2f0], ecx
je 0x57450b
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 0x57459e
sub eax, edx
mov esi, eax
mov dword [ebp - 0x2ec], eax
imul esi, edi
jmp 0x5745a0
xor esi, esi
mov eax, dword [ebp - 0x2e8]
shl eax, 3
cmp byte [ebx + 0x2c], 0
mov dword [ebp - 0x2b8], eax
jne 0x574684
lea eax, [eax + edi*8]
push edi
mov dword [ebp - 0x2b8], eax
lea eax, [ebp - 0xd8]
push 0
push eax
call fcn.004a3440
mov eax, dword [ebx + 0x28]
add esp, 0xc
cmp eax, 0x80
jbe 0x5745f8
push str.mac_secret_length___sizeof_hmac_pad_
push 0x271
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052cf80
mov eax, dword [ebx + 0x28]
add esp, 0xc
push eax
push dword [ebp - 0x308]
lea eax, [ebp - 0xd8]
push eax
call fcn.004aca30
add esp, 0xc
xor ecx, ecx
test edi, edi
je 0x57466d
cmp edi, 0x20
jb 0x574656
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 0x574630
cmp ecx, edi
jae 0x57466d
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x36
inc ecx
cmp ecx, edi
jb 0x574660
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 0x5746d2
mov eax, dword [ebp - 0x2cc]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004a3440
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 0x574711
push dword [ebp - 0x2cc]
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004a3440
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 0x574899
cmp byte [ebx + 0x2c], 0
je 0x5747fc
mov eax, dword [ebp - 0x2f0]
cmp eax, edi
jbe 0x574c40
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.004aca30
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.004aca30
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 0x574899
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 0x5747d0
jmp 0x574899
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.004aca30
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 0x574899
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 0x574872
push 0x40
lea eax, [ebp - 0x58]
push 0
push eax
call fcn.004a3440
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 0x574b91
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 0x574aac
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 0x5749b9
mov eax, dword [ebp - 0x2f8]
jmp 0x5749cc
add eax, dword [ebx + 0x20]
cmp esi, eax
jae 0x5749d5
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 0x574a6f
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 0x5749a0
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 0x574b78
cmp edx, 0x20
jb 0x574b47
movdqa xmm2, xmmword [ebp - 0x360]
mov ecx, edx
and ecx, 0x1f
sub edx, ecx
jmp 0x574b00
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 0x574b00
mov edx, dword [ebp - 0x2c0]
cmp eax, edx
jae 0x574b78
mov edx, dword [ebp - 0x2f4]
mov edi, dword [ebp - 0x2c0]
jmp 0x574b60
mov cl, byte [ebp + eax - 0x1d8]
and cl, dl
or byte [ebp + eax - 0x58], cl
inc eax
cmp eax, edi
jb 0x574b60
mov edi, dword [ebp - 0x2dc]
mov edx, dword [ebp - 0x2ec]
inc edx
mov dword [ebp - 0x2ec], edx
cmp edx, dword [ebp - 0x310]
jbe 0x5748c5
lea eax, [ebp - 0x344]
push eax
call fcn.00531280
mov eax, dword [ebp - 0x300]
push 0
push dword [eax]
lea eax, [ebp - 0x344]
push eax
call fcn.00530e60
add esp, 0x10
test eax, eax
jle 0x574c31
cmp byte [ebx + 0x2c], 0
je 0x574c55
mov esi, dword [ebp - 0x304]
lea eax, [ebp - 0xd8]
push esi
push 0x5c
push eax
call fcn.004a3440
push dword [ebx + 0x28]
lea eax, [ebp - 0x344]
push dword [ebp - 0x308]
push eax
call fcn.00531010
add esp, 0x18
test eax, eax
jle 0x574c31
push esi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00531010
add esp, 0xc
test eax, eax
jle 0x574c31
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00531010
add esp, 0xc
test eax, eax
jg 0x574cfd
lea eax, [ebp - 0x344]
push eax
call fcn.00531020
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a16e5
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xor ecx, ecx
test edi, edi
je 0x574cbd
cmp edi, 0x20
jb 0x574ca6
movdqa xmm1, xmmword [0x5f1e10]
mov eax, edi
and eax, 0x1f
mov edx, edi
sub edx, eax
lea eax, [ebp - 0xc8]
jmp 0x574c80
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 0x574c80
cmp ecx, edi
jae 0x574cbd
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x6a
inc ecx
cmp ecx, edi
jb 0x574cb0
push edi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00531010
add esp, 0xc
test eax, eax
jle 0x574c31
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.00531010
add esp, 0xc
test eax, eax
jle 0x574c31
lea eax, [ebp - 0x318]
push eax
push dword [ebp - 0x31c]
lea eax, [ebp - 0x344]
push eax
call fcn.00530d80
mov ecx, dword [ebp - 0x314]
add esp, 0xc
test ecx, ecx
je 0x574d2b
mov eax, dword [ebp - 0x318]
mov dword [ecx], eax
lea eax, [ebp - 0x344]
push eax
call fcn.00531020
mov ecx, dword [ebp - 4]
add esp, 4
xor ecx, ebp
mov eax, 1
pop edi
pop esi
call fcn.004a16e5
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret