Function at 0x4096e0
Capabilities:
Hash data using rshash

Disassembly:
sub esp, 0x10
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
mov eax, ecx
push esi
push edi
mov cl, byte [ebp]
mov dword [esp + 0x10], eax
test cl, cl
je 0x409a4a
mov ebx, dword [eax + 0x30]
mov edi, ebp
mov esi, 0xf8c9
xor eax, eax
cmp cl, 0x41
jl 0x409719
cmp cl, 0x5a
jg 0x409719
mov edx, 1
jmp 0x40971b
xor edx, edx
imul eax, esi
imul esi, esi, 0x5c6b7
shl dl, 5
movsx edx, dl
movsx ecx, cl
or edx, ecx
mov cl, byte [edi + 1]
add eax, edx
inc edi
test cl, cl
jne 0x409708
test ebx, ebx
je 0x409743
xor edx, edx
div ebx
jmp 0x409745
mov edx, eax
mov edi, dword [esp + 0x10]
mov eax, dword [edi + 0x2c]
mov edx, dword [eax + edx*4]
test edx, edx
mov dword [esp + 0x18], edx
je 0x4097e4
test ebp, ebp
lea esi, [edx + 8]
mov dword [esp + 0x14], ebp
je 0x4097ce
test esi, esi
je 0x4097ce
mov ecx, dword [esp + 0x14]
mov bl, byte [ecx]
cmp bl, 0x41
jl 0x409781
cmp bl, 0x5a
jg 0x409781
mov ecx, 1
jmp 0x409783
xor ecx, ecx
mov dl, byte [esi]
cmp dl, 0x41
jl 0x409796
cmp dl, 0x5a
jg 0x409796
mov eax, 1
jmp 0x409798
xor eax, eax
shl al, 5
movsx edi, al
movsx eax, dl
shl cl, 5
or edi, eax
movsx eax, cl
movsx ecx, bl
or eax, ecx
sub eax, edi
jne 0x4097c4
mov edi, dword [esp + 0x14]
inc edi
test bl, bl
mov dword [esp + 0x14], edi
je 0x4097c4
inc esi
test dl, dl
jne 0x40976a
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
jmp 0x4097d2
mov eax, ebp
sub eax, esi
test eax, eax
je 0x409841
mov edx, dword [edx]
test edx, edx
mov dword [esp + 0x18], edx
jne 0x40975b
push 0
push str.location
push ebp
lea ecx, [edi + 4]
call fcn.00408c90
test eax, eax
je 0x409a4a
cmp byte [eax], 0
je 0x409a4a
mov edx, dword [edi]
lea ecx, [esp + 0x1c]
push ecx
push eax
mov ecx, edi
call dword [edx + 4]
mov esi, eax
test esi, esi
je 0x409a4a
mov edx, dword [esp + 0x10]
push 0x2c
mov edi, dword [edx + 0x34]
call fcn.00419c1d
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x40984e
lea ecx, [ebx + 4]
call fcn.004086f0
mov dword [esp + 0x14], ebx
jmp 0x409856
mov eax, dword [edx + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
lea ecx, [esp + 0x18]
mov dword [eax + 0x34], ebx
mov dword [ebx], edi
mov edx, dword [esp + 0x1c]
push ecx
push esi
push edx
mov dword [esp + 0x24], 0
call fcn.00408520
mov esi, eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.00419c12
add esp, 4
add ebx, 4
mov ecx, ebx
push esi
call fcn.00408860
mov ecx, esi
mov esi, dword [esp + 0x18]
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x18]
push eax
call fcn.004086e0
mov ecx, ebx
call fcn.004089b0
test ebp, ebp
mov esi, ebp
jne 0x4098c7
mov esi, 0x424660
mov cl, byte [esi]
mov eax, esi
test cl, cl
je 0x4098d7
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4098cf
sub eax, esi
inc eax
push eax
call fcn.00419c1d
add esp, 4
test esi, esi
jne 0x4098ec
mov byte [eax], 0
jmp 0x409903
mov cl, byte [esi]
test cl, cl
mov byte [eax], cl
je 0x409903
mov ecx, eax
sub esi, eax
mov dl, byte [esi + ecx + 1]
inc ecx
test dl, dl
mov byte [ecx], dl
jne 0x4098f8
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov edi, ebp
mov esi, 0xf8c9
mov dword [ecx + 0x28], eax
mov ebx, dword [edx + 0x30]
mov dl, byte [ebp]
xor eax, eax
test dl, dl
je 0x409952
cmp dl, 0x41
jl 0x409932
cmp dl, 0x5a
jg 0x409932
mov ecx, 1
jmp 0x409934
xor ecx, ecx
imul eax, esi
imul esi, esi, 0x5c6b7
shl cl, 5
movsx ecx, cl
movsx edx, dl
or ecx, edx
mov dl, byte [edi + 1]
add eax, ecx
inc edi
test dl, dl
jne 0x409921
test ebx, ebx
je 0x40995c
xor edx, edx
div ebx
jmp 0x40995e
mov edx, eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
mov esi, dword [ecx + edx*4]
lea ebx, [ecx + edx*4]
test esi, esi
mov dword [esp + 0x10], ebx
je 0x4099ec
add esi, 8
mov edi, ebp
test ebp, ebp
je 0x4099d8
test esi, esi
je 0x4099d8
mov bl, byte [edi]
cmp bl, 0x41
jl 0x409993
cmp bl, 0x5a
jg 0x409993
mov ecx, 1
jmp 0x409995
xor ecx, ecx
mov dl, byte [esi]
cmp dl, 0x41
jl 0x4099a8
cmp dl, 0x5a
jg 0x4099a8
mov eax, 1
jmp 0x4099aa
xor eax, eax
shl al, 5
movsx ebp, al
movsx eax, dl
shl cl, 5
or ebp, eax
movsx eax, cl
movsx ecx, bl
or eax, ecx
sub eax, ebp
jne 0x4099ce
inc edi
test bl, bl
je 0x4099ce
inc esi
test dl, dl
jne 0x409980
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x24]
jmp 0x4099dc
mov eax, ebp
sub eax, esi
test eax, eax
je 0x409a37
mov ebx, dword [ebx]
mov dword [esp + 0x10], ebx
mov esi, dword [ebx]
test esi, esi
jne 0x409973
mov cl, byte [ebp]
mov esi, dword [ebx]
test cl, cl
mov eax, ebp
je 0x4099ff
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4099f7
sub eax, ebp
add eax, 9
push eax
call fcn.00419c1d
mov dword [ebx], eax
add esp, 4
add eax, 8
test ebp, ebp
jne 0x409a1b
mov byte [eax], 0
jmp 0x409a33
mov cl, byte [ebp]
test cl, cl
mov byte [eax], cl
je 0x409a33
mov edx, ebp
sub edx, eax
mov cl, byte [edx + eax + 1]
inc eax
test cl, cl
mov byte [eax], cl
jne 0x409a28
mov ecx, dword [ebx]
mov dword [ecx], esi
mov edx, dword [ebx]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
mov dword [edx + 4], eax
pop ebx
add esp, 0x10
ret 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret 4