// File: /workspace/github_c_makefile_star2_O0/GangZhuo[P]dohclient/src/sha1.c
// Function: sha1_hashBlock
void sha1_hashBlock(sha1nfo *s) {
	uint8_t i;
	uint32_t a,b,c,d,e,t;

	a=s->state[0];
	b=s->state[1];
	c=s->state[2];
	d=s->state[3];
	e=s->state[4];
	for (i=0; i<80; i++) {
		if (i>=16) {
			t = s->buffer[(i+13)&15] ^ s->buffer[(i+8)&15] ^ s->buffer[(i+2)&15] ^ s->buffer[i&15];
			s->buffer[i&15] = sha1_rol32(t,1);
		}
		if (i<20) {
			t = (d ^ (b & (c ^ d))) + SHA1_K0;
		} else if (i<40) {
			t = (b ^ c ^ d) + SHA1_K20;
		} else if (i<60) {
			t = ((b & c) | (d & (b | c))) + SHA1_K40;
		} else {
			t = (b ^ c ^ d) + SHA1_K60;
		}
		t+=sha1_rol32(a,5) + e + s->buffer[i&15];
		e=d;
		d=c;
		c=sha1_rol32(b,30);
		b=a;
		a=t;
	}
	s->state[0] += a;
	s->state[1] += b;
	s->state[2] += c;
	s->state[3] += d;
	s->state[4] += e;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x40(%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x44(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movl 0x48(%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl 0x4c(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl 0x50(%rax), %eax
movl %eax, -0x20(%rbp)
movb $0x0, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x50, %eax
jge 0x2d17e
movzbl -0x9(%rbp), %eax
cmpl $0x10, %eax
jl 0x2d0a8
movq -0x8(%rbp), %rax
movzbl -0x9(%rbp), %ecx
addl $0xd, %ecx
andl $0xf, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movzbl -0x9(%rbp), %edx
addl $0x8, %edx
andl $0xf, %edx
movslq %edx, %rdx
xorl (%rcx,%rdx,4), %eax
movq -0x8(%rbp), %rcx
movzbl -0x9(%rbp), %edx
addl $0x2, %edx
andl $0xf, %edx
movslq %edx, %rdx
xorl (%rcx,%rdx,4), %eax
movq -0x8(%rbp), %rcx
movzbl -0x9(%rbp), %edx
andl $0xf, %edx
movslq %edx, %rdx
xorl (%rcx,%rdx,4), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %edi
movl $0x1, %esi
callq 0x2cfb0
movl %eax, %edx
movq -0x8(%rbp), %rax
movzbl -0x9(%rbp), %ecx
andl $0xf, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movzbl -0x9(%rbp), %eax
cmpl $0x14, %eax
jge 0x2d0cb
movl -0x1c(%rbp), %eax
movl -0x14(%rbp), %ecx
movl -0x18(%rbp), %edx
xorl -0x1c(%rbp), %edx
andl %edx, %ecx
xorl %ecx, %eax
addl $0x5a827999, %eax       # imm = 0x5A827999
movl %eax, -0x24(%rbp)
jmp 0x2d122
movzbl -0x9(%rbp), %eax
cmpl $0x28, %eax
jge 0x2d0e7
movl -0x14(%rbp), %eax
xorl -0x18(%rbp), %eax
xorl -0x1c(%rbp), %eax
addl $0x6ed9eba1, %eax       # imm = 0x6ED9EBA1
movl %eax, -0x24(%rbp)
jmp 0x2d120
movzbl -0x9(%rbp), %eax
cmpl $0x3c, %eax
jge 0x2d10d
movl -0x14(%rbp), %eax
andl -0x18(%rbp), %eax
movl -0x1c(%rbp), %ecx
movl -0x14(%rbp), %edx
orl -0x18(%rbp), %edx
andl %edx, %ecx
orl %ecx, %eax
addl $0x8f1bbcdc, %eax       # imm = 0x8F1BBCDC
movl %eax, -0x24(%rbp)
jmp 0x2d11e
movl -0x14(%rbp), %eax
xorl -0x18(%rbp), %eax
xorl -0x1c(%rbp), %eax
addl $0xca62c1d6, %eax       # imm = 0xCA62C1D6
movl %eax, -0x24(%rbp)
jmp 0x2d120
jmp 0x2d122
movl -0x10(%rbp), %edi
movl $0x5, %esi
callq 0x2cfb0
addl -0x20(%rbp), %eax
movq -0x8(%rbp), %rcx
movzbl -0x9(%rbp), %edx
andl $0xf, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x20(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x14(%rbp), %edi
movl $0x1e, %esi
callq 0x2cfb0
movl %eax, -0x18(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x10(%rbp)
movb -0x9(%rbp), %al
addb $0x1, %al
movb %al, -0x9(%rbp)
jmp 0x2d022
movl -0x10(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x40(%rax), %ecx
movl %ecx, 0x40(%rax)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x18(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x48(%rax), %ecx
movl %ecx, 0x48(%rax)
movl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x4c(%rax), %ecx
movl %ecx, 0x4c(%rax)
movl -0x20(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x50(%rax), %ecx
movl %ecx, 0x50(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)