Function at 0x573230
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 [0x628960]
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 0x5732d4
push str.data_plus_mac_plus_padding_size___1024__1024
push 0x1c7
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052bf00
add esp, 0xc
push dword [ebp - 0x300]
call fcn.0051b660
push eax
call fcn.00540600
add esp, 8
cmp eax, 0x2a0
jg 0x5733b8
je 0x573383
cmp eax, 4
je 0x57333c
cmp eax, 0x40
jne 0x5733c5
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055e3e0
add esp, 4
test eax, eax
jle 0x573be0
mov dword [ebp - 0x2d8], 0x573fc0
mov eax, 0x14
mov dword [ebp - 0x2bc], 0x55e420
jmp 0x573481
lea eax, [ebp - 0x2b0]
push eax
call fcn.00529fc0
add esp, 4
test eax, eax
jle 0x573be0
mov edx, 0x30
mov dword [ebp - 0x2d8], 0x573f40
mov dword [ebp - 0x2bc], 0x52a000
mov eax, 0x10
mov dword [ebp - 0x304], edx
mov byte [ebp - 0x2b1], 0
jmp 0x573486
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055e860
add esp, 4
test eax, eax
jle 0x573be0
mov dword [ebp - 0x2d8], 0x574060
mov eax, 0x20
mov dword [ebp - 0x2bc], 0x55e8c0
jmp 0x573481
sub eax, 0x2a1
je 0x57343c
dec eax
je 0x573421
dec eax
je 0x5733ef
push 0x60c8dc
push 0x209
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052bf00
add esp, 0xc
test esi, esi
je 0x573be0
mov dword [esi], 0
jmp 0x573be0
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055e520
add esp, 4
test eax, eax
jle 0x573be0
mov dword [ebp - 0x2d8], 0x574060
mov eax, 0x1c
mov dword [ebp - 0x2bc], 0x55e8c0
jmp 0x573481
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055f000
add esp, 4
test eax, eax
jle 0x573be0
mov eax, edi
jmp 0x573458
lea eax, [ebp - 0x2b0]
push eax
call fcn.0055e9c0
add esp, 4
test eax, eax
jle 0x573be0
mov eax, 0x30
mov edi, 0x80
mov dword [ebp - 0x2cc], 0x10
mov dword [ebp - 0x2dc], edi
mov dword [ebp - 0x2bc], 0x55f0b0
mov dword [ebp - 0x2d8], 0x574150
mov edx, 0x28
cmp byte [ebx + 0x2c], 0
mov ecx, 0xd
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2f0], ecx
je 0x5734ab
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 0x57353e
sub eax, edx
mov esi, eax
mov dword [ebp - 0x2ec], eax
imul esi, edi
jmp 0x573540
xor esi, esi
mov eax, dword [ebp - 0x2e8]
shl eax, 3
cmp byte [ebx + 0x2c], 0
mov dword [ebp - 0x2b8], eax
jne 0x573624
lea eax, [eax + edi*8]
push edi
mov dword [ebp - 0x2b8], eax
lea eax, [ebp - 0xd8]
push 0
push eax
call fcn.004a2440
mov eax, dword [ebx + 0x28]
add esp, 0xc
cmp eax, 0x80
jbe 0x573598
push str.mac_secret_length___sizeof_hmac_pad_
push 0x271
push str.F:Gitcurllookaside_openssl_ssl_s3_cbc.c
call fcn.0052bf00
mov eax, dword [ebx + 0x28]
add esp, 0xc
push eax
push dword [ebp - 0x308]
lea eax, [ebp - 0xd8]
push eax
call fcn.004abb00
add esp, 0xc
xor ecx, ecx
test edi, edi
je 0x57360d
cmp edi, 0x20
jb 0x5735f6
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 0x5735d0
cmp ecx, edi
jae 0x57360d
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x36
inc ecx
cmp ecx, edi
jb 0x573600
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 0x573672
mov eax, dword [ebp - 0x2cc]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004a2440
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 0x5736b1
push dword [ebp - 0x2cc]
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.004a2440
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 0x573839
cmp byte [ebx + 0x2c], 0
je 0x57379c
mov eax, dword [ebp - 0x2f0]
cmp eax, edi
jbe 0x573be0
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.004abb00
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.004abb00
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 0x573839
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 0x573770
jmp 0x573839
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.004abb00
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 0x573839
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 0x573812
push 0x40
lea eax, [ebp - 0x58]
push 0
push eax
call fcn.004a2440
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 0x573b31
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 0x573a4c
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 0x573959
mov eax, dword [ebp - 0x2f8]
jmp 0x57396c
add eax, dword [ebx + 0x20]
cmp esi, eax
jae 0x573975
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 0x573a0f
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 0x573940
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 0x573b18
cmp edx, 0x20
jb 0x573ae7
movdqa xmm2, xmmword [ebp - 0x360]
mov ecx, edx
and ecx, 0x1f
sub edx, ecx
jmp 0x573aa0
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 0x573aa0
mov edx, dword [ebp - 0x2c0]
cmp eax, edx
jae 0x573b18
mov edx, dword [ebp - 0x2f4]
mov edi, dword [ebp - 0x2c0]
jmp 0x573b00
mov cl, byte [ebp + eax - 0x1d8]
and cl, dl
or byte [ebp + eax - 0x58], cl
inc eax
cmp eax, edi
jb 0x573b00
mov edi, dword [ebp - 0x2dc]
mov edx, dword [ebp - 0x2ec]
inc edx
mov dword [ebp - 0x2ec], edx
cmp edx, dword [ebp - 0x310]
jbe 0x573865
lea eax, [ebp - 0x344]
push eax
call fcn.00530200
mov eax, dword [ebp - 0x300]
push 0
push dword [eax]
lea eax, [ebp - 0x344]
push eax
call fcn.0052fde0
add esp, 0x10
test eax, eax
jle 0x573bd1
cmp byte [ebx + 0x2c], 0
je 0x573bf5
mov esi, dword [ebp - 0x304]
lea eax, [ebp - 0xd8]
push esi
push 0x5c
push eax
call fcn.004a2440
push dword [ebx + 0x28]
lea eax, [ebp - 0x344]
push dword [ebp - 0x308]
push eax
call fcn.0052ff90
add esp, 0x18
test eax, eax
jle 0x573bd1
push esi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.0052ff90
add esp, 0xc
test eax, eax
jle 0x573bd1
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.0052ff90
add esp, 0xc
test eax, eax
jg 0x573c9d
lea eax, [ebp - 0x344]
push eax
call fcn.0052ffa0
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a0676
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xor ecx, ecx
test edi, edi
je 0x573c5d
cmp edi, 0x20
jb 0x573c46
movdqa xmm1, xmmword [0x5f0e10]
mov eax, edi
and eax, 0x1f
mov edx, edi
sub edx, eax
lea eax, [ebp - 0xc8]
jmp 0x573c20
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 0x573c20
cmp ecx, edi
jae 0x573c5d
lea ebx, [ebx]
xor byte [ebp + ecx - 0xd8], 0x6a
inc ecx
cmp ecx, edi
jb 0x573c50
push edi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.0052ff90
add esp, 0xc
test eax, eax
jle 0x573bd1
push dword [ebp - 0x2c0]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x344]
push eax
call fcn.0052ff90
add esp, 0xc
test eax, eax
jle 0x573bd1
lea eax, [ebp - 0x318]
push eax
push dword [ebp - 0x31c]
lea eax, [ebp - 0x344]
push eax
call fcn.0052fd00
mov ecx, dword [ebp - 0x314]
add esp, 0xc
test ecx, ecx
je 0x573ccb
mov eax, dword [ebp - 0x318]
mov dword [ecx], eax
lea eax, [ebp - 0x344]
push eax
call fcn.0052ffa0
mov ecx, dword [ebp - 4]
add esp, 4
xor ecx, ebp
mov eax, 1
pop edi
pop esi
call fcn.004a0676
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret