Function at 0x4129b0
Capabilities:
Encode data using xor
Hash data using sha1

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffea0
mov dword [ebp - 4], eax
mov byte [ebp - 0x1d], 1
mov eax, dword [ebp - 4]
call fcn.004041a4
test eax, eax
jns 0x4129cf
add eax, 3
sar eax, 2
test al, al
jbe 0x412a37
mov byte [ebp - 0x1f], al
mov byte [ebp - 0x1e], 1
xor eax, eax
mov al, byte [ebp - 0x1d]
mov edx, dword [ebp - 4]
movzx eax, byte [edx + eax - 1]
shl eax, 0x18
xor edx, edx
mov dl, byte [ebp - 0x1d]
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1d]
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx + 1]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1d]
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx + 2]
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1e]
mov dword [ebp + edx*4 - 0x164], eax
add byte [ebp - 0x1d], 4
inc byte [ebp - 0x1e]
dec byte [ebp - 0x1f]
jne 0x4129dd
mov byte [ebp - 0x1d], 0x10
xor eax, eax
mov al, byte [ebp - 0x1d]
mov eax, dword [ebp + eax*4 - 0x16c]
xor edx, edx
mov dl, byte [ebp - 0x1d]
xor eax, dword [ebp + edx*4 - 0x180]
xor edx, edx
mov dl, byte [ebp - 0x1d]
xor eax, dword [ebp + edx*4 - 0x198]
xor edx, edx
mov dl, byte [ebp - 0x1d]
xor eax, dword [ebp + edx*4 - 0x1a0]
mov dl, 1
call fcn.00412828
xor edx, edx
mov dl, byte [ebp - 0x1d]
mov dword [ebp + edx*4 - 0x160], eax
inc byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0x50
jne 0x412a3b
mov eax, dword [0x415878]
mov dword [ebp - 8], eax
mov eax, dword [0x41587c]
mov dword [ebp - 0xc], eax
mov eax, dword [0x415880]
mov dword [ebp - 0x10], eax
mov eax, dword [0x415884]
mov dword [ebp - 0x14], eax
mov eax, dword [0x415888]
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x1d], 0
mov dl, 5
mov eax, dword [ebp - 8]
call fcn.00412828
mov edx, dword [ebp - 0xc]
and edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
not ecx
and ecx, dword [ebp - 0x14]
or edx, ecx
add eax, edx
add eax, dword [ebp - 0x18]
add eax, 0x5a827999
xor edx, edx
mov dl, byte [ebp - 0x1d]
add eax, dword [ebp + edx*4 - 0x160]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov dl, 0x1e
mov eax, dword [ebp - 0xc]
call fcn.00412828
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], eax
inc byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0x14
jne 0x412ab3
mov byte [ebp - 0x1d], 0x14
mov dl, 5
mov eax, dword [ebp - 8]
call fcn.00412828
mov edx, dword [ebp - 0xc]
xor edx, dword [ebp - 0x10]
xor edx, dword [ebp - 0x14]
add eax, edx
add eax, dword [ebp - 0x18]
add eax, 0x6ed9eba1
xor edx, edx
mov dl, byte [ebp - 0x1d]
add eax, dword [ebp + edx*4 - 0x160]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov dl, 0x1e
mov eax, dword [ebp - 0xc]
call fcn.00412828
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], eax
inc byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0x28
jne 0x412b18
mov byte [ebp - 0x1d], 0x28
mov dl, 5
mov eax, dword [ebp - 8]
call fcn.00412828
mov edx, dword [ebp - 0xc]
and edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
and ecx, dword [ebp - 0x14]
or edx, ecx
mov ecx, dword [ebp - 0x10]
and ecx, dword [ebp - 0x14]
or edx, ecx
add eax, edx
add eax, dword [ebp - 0x18]
add eax, 0x8f1bbcdc
xor edx, edx
mov dl, byte [ebp - 0x1d]
add eax, dword [ebp + edx*4 - 0x160]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov dl, 0x1e
mov eax, dword [ebp - 0xc]
call fcn.00412828
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], eax
inc byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0x3c
jne 0x412b76
mov byte [ebp - 0x1d], 0x3c
mov dl, 5
mov eax, dword [ebp - 8]
call fcn.00412828
mov edx, dword [ebp - 0xc]
xor edx, dword [ebp - 0x10]
xor edx, dword [ebp - 0x14]
add eax, edx
add eax, dword [ebp - 0x18]
add eax, 0xca62c1d6
xor edx, edx
mov dl, byte [ebp - 0x1d]
add eax, dword [ebp + edx*4 - 0x160]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov dl, 0x1e
mov eax, dword [ebp - 0xc]
call fcn.00412828
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], eax
inc byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0x50
jne 0x412be1
mov eax, dword [ebp - 8]
add dword [0x415878], eax
mov eax, dword [ebp - 0xc]
add dword [0x41587c], eax
mov eax, dword [ebp - 0x10]
add dword [0x415880], eax
mov eax, dword [ebp - 0x14]
add dword [0x415884], eax
mov eax, dword [ebp - 0x18]
add dword [0x415888], eax
mov esp, ebp
pop ebp
ret