Function at 0x401548
Capabilities:
Hash data using sha1

Disassembly:
push rbp
sub rsp, 0x220
lea rbp, [rsp + 0x80]
call dbg.__main
mov dword [rbp + 0x150], 0x67452301
mov dword [rbp + 0x154], 0xefcdab89
mov dword [rbp + 0x158], 0x98badcfe
mov dword [rbp + 0x15c], 0x10325476
mov dword [rbp + 0x160], 0xc3d2e1f0
mov qword [rbp + 0x170], 0
mov dword [rbp + 0x180], 0
movabs rax, 0x77202c6f6c6c6548
mov qword [rbp - 0x40], rax
mov dword [rbp - 0x38], 0x646c726f
mov word [rbp - 0x34], 0x21
lea rax, [rbp - 0x40]
mov rcx, rax
call sym.strlen
mov dword [rbp + 0x16c], eax
mov eax, dword [rbp + 0x16c]
mov edx, eax
lea rcx, str.The_length_of_message_is__d__n_n
call sym.printf
mov eax, dword [rbp + 0x16c]
movsxd rcx, eax
lea rdx, [rbp - 0x40]
lea rax, [rbp + 0x110]
mov r8, rcx
mov rcx, rax
call sym.memcpy
mov eax, dword [rbp + 0x16c]
mov dword [rbp + 0x180], eax
mov eax, dword [rbp + 0x16c]
shl eax, 3
cdqe
mov qword [rbp + 0x170], rax
mov eax, dword [rbp + 0x180]
lea edx, [rax + 1]
mov dword [rbp + 0x180], edx
mov eax, eax
mov byte [rbp + rax + 0x110], pe_nt_image_headers64
cmp dword [rbp + 0x180], 0x38
jbe 0x401672
jmp 0x40165f
mov eax, dword [rbp + 0x180]
lea edx, [rax + 1]
mov dword [rbp + 0x180], edx
mov eax, eax
mov byte [rbp + rax + 0x110], 0
cmp dword [rbp + 0x180], 0x3f
jbe 0x401646
mov dword [rbp + 0x180], 0
jmp 0x40168d
mov eax, dword [rbp + 0x180]
lea edx, [rax + 1]
mov dword [rbp + 0x180], edx
mov eax, eax
mov byte [rbp + rax + 0x110], 0
cmp dword [rbp + 0x180], 0x37
jbe 0x401674
mov dword [rbp + 0x17c], 0
jmp 0x4016d5
mov eax, 0x3f
sub eax, dword [rbp + 0x17c]
mov edx, dword [rbp + 0x17c]
shl edx, 3
mov r8, qword [rbp + 0x170]
mov ecx, edx
shr r8, cl
mov rdx, r8
cdqe
mov byte [rbp + rax + 0x110], dl
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 7
jle 0x4016a2
lea rcx, str.After_diving_message_into_16_words:
call sym.puts
mov dword [rbp + 0x17c], 0
jmp 0x40179a
mov eax, dword [rbp + 0x17c]
shl eax, 2
cdqe
movzx eax, byte [rbp + rax + 0x110]
movzx eax, al
shl eax, 0x18
mov edx, eax
mov eax, dword [rbp + 0x17c]
shl eax, 2
add eax, 1
cdqe
movzx eax, byte [rbp + rax + 0x110]
movzx eax, al
shl eax, 0x10
or edx, eax
mov eax, dword [rbp + 0x17c]
shl eax, 2
add eax, 2
cdqe
movzx eax, byte [rbp + rax + 0x110]
movzx eax, al
shl eax, 8
or edx, eax
mov eax, dword [rbp + 0x17c]
shl eax, 2
add eax, 3
cdqe
movzx eax, byte [rbp + rax + 0x110]
movzx eax, al
or eax, edx
mov edx, eax
mov eax, dword [rbp + 0x17c]
cdqe
mov dword [rbp + rax*4 - 0x30], edx
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 - 0x30]
mov edx, eax
lea rcx, [0x00405045]
call sym.printf
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 0xf
jle 0x4016f9
lea rcx, [0x00405049]
call sym.printf
mov dword [rbp + 0x17c], 0x10
jmp 0x401822
mov eax, dword [rbp + 0x17c]
sub eax, 3
cdqe
mov edx, dword [rbp + rax*4 - 0x30]
mov eax, dword [rbp + 0x17c]
sub eax, 8
cdqe
mov eax, dword [rbp + rax*4 - 0x30]
xor edx, eax
mov eax, dword [rbp + 0x17c]
sub eax, 0xe
cdqe
mov eax, dword [rbp + rax*4 - 0x30]
xor edx, eax
mov eax, dword [rbp + 0x17c]
sub eax, 0x10
cdqe
mov eax, dword [rbp + rax*4 - 0x30]
xor eax, edx
mov edx, 1
mov ecx, eax
call sym.left_rotate
mov edx, eax
mov eax, dword [rbp + 0x17c]
cdqe
mov dword [rbp + rax*4 - 0x30], edx
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 0x4f
jle 0x4017bf
mov eax, dword [rbp + 0x150]
mov dword [rbp + 0x19c], eax
mov eax, dword [rbp + 0x154]
mov dword [rbp + 0x198], eax
mov eax, dword [rbp + 0x158]
mov dword [rbp + 0x194], eax
mov eax, dword [rbp + 0x15c]
mov dword [rbp + 0x190], eax
mov eax, dword [rbp + 0x160]
mov dword [rbp + 0x18c], eax
mov dword [rbp + 0x17c], 0
jmp 0x4019cd
cmp dword [rbp + 0x17c], 0x13
jg 0x4018b2
mov eax, dword [rbp + 0x198]
and eax, dword [rbp + 0x194]
mov edx, eax
mov eax, dword [rbp + 0x198]
not eax
and eax, dword [rbp + 0x190]
or eax, edx
mov dword [rbp + 0x188], eax
mov dword [rbp + 0x184], 0x5a827999
jmp 0x40193e
cmp dword [rbp + 0x17c], 0x27
jg 0x4018df
mov eax, dword [rbp + 0x198]
xor eax, dword [rbp + 0x194]
xor eax, dword [rbp + 0x190]
mov dword [rbp + 0x188], eax
mov dword [rbp + 0x184], 0x6ed9eba1
jmp 0x40193e
cmp dword [rbp + 0x17c], 0x3b
jg 0x40191c
mov eax, dword [rbp + 0x194]
or eax, dword [rbp + 0x190]
and eax, dword [rbp + 0x198]
mov edx, eax
mov eax, dword [rbp + 0x194]
and eax, dword [rbp + 0x190]
or eax, edx
mov dword [rbp + 0x188], eax
mov dword [rbp + 0x184], 0x8f1bbcdc
jmp 0x40193e
mov eax, dword [rbp + 0x198]
xor eax, dword [rbp + 0x194]
xor eax, dword [rbp + 0x190]
mov dword [rbp + 0x188], eax
mov dword [rbp + 0x184], 0xca62c1d6
mov eax, dword [rbp + 0x19c]
mov edx, 5
mov ecx, eax
call sym.left_rotate
mov edx, eax
mov eax, dword [rbp + 0x188]
add edx, eax
mov eax, dword [rbp + 0x18c]
add edx, eax
mov eax, dword [rbp + 0x184]
add edx, eax
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 - 0x30]
add eax, edx
mov dword [rbp + 0x168], eax
mov eax, dword [rbp + 0x190]
mov dword [rbp + 0x18c], eax
mov eax, dword [rbp + 0x194]
mov dword [rbp + 0x190], eax
mov eax, dword [rbp + 0x198]
mov edx, 0x1e
mov ecx, eax
call sym.left_rotate
mov dword [rbp + 0x194], eax
mov eax, dword [rbp + 0x19c]
mov dword [rbp + 0x198], eax
mov eax, dword [rbp + 0x168]
mov dword [rbp + 0x19c], eax
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 0x4f
jle 0x401876
mov edx, dword [rbp + 0x150]
mov eax, dword [rbp + 0x19c]
add eax, edx
mov dword [rbp + 0x150], eax
mov edx, dword [rbp + 0x154]
mov eax, dword [rbp + 0x198]
add eax, edx
mov dword [rbp + 0x154], eax
mov edx, dword [rbp + 0x158]
mov eax, dword [rbp + 0x194]
add eax, edx
mov dword [rbp + 0x158], eax
mov edx, dword [rbp + 0x15c]
mov eax, dword [rbp + 0x190]
add eax, edx
mov dword [rbp + 0x15c], eax
mov edx, dword [rbp + 0x160]
mov eax, dword [rbp + 0x18c]
add eax, edx
mov dword [rbp + 0x160], eax
mov dword [rbp + 0x17c], 0
jmp 0x401aee
mov eax, dword [rbp + 0x17c]
lea edx, [rax*4]
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 + 0x150]
shr eax, 0x18
mov ecx, eax
movsxd rax, edx
mov byte [rbp + rax - 0x60], cl
mov eax, dword [rbp + 0x17c]
shl eax, 2
lea edx, [rax + 1]
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 + 0x150]
shr eax, 0x10
mov ecx, eax
movsxd rax, edx
mov byte [rbp + rax - 0x60], cl
mov eax, dword [rbp + 0x17c]
shl eax, 2
lea edx, [rax + 2]
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 + 0x150]
shr eax, 8
mov ecx, eax
movsxd rax, edx
mov byte [rbp + rax - 0x60], cl
mov eax, dword [rbp + 0x17c]
shl eax, 2
lea edx, [rax + 3]
mov eax, dword [rbp + 0x17c]
cdqe
mov eax, dword [rbp + rax*4 + 0x150]
mov ecx, eax
movsxd rax, edx
mov byte [rbp + rax - 0x60], cl
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 4
jle 0x401a4d
lea rcx, str.SHA1_hash:
call sym.printf
mov dword [rbp + 0x17c], 0
jmp 0x401b38
mov eax, dword [rbp + 0x17c]
cdqe
movzx eax, byte [rbp + rax - 0x60]
movzx eax, al
mov edx, eax
lea rcx, str._02x
call sym.printf
add dword [rbp + 0x17c], 1
cmp dword [rbp + 0x17c], 0x13
jle 0x401b13
mov eax, 0
add rsp, 0x220
pop rbp
ret