Function at 0x100165a0
Capabilities:
Encode data using xor

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x28c
mov eax, dword [ecx + 0xc]
mov ebx, dword [ecx]
mov edi, dword [ecx + 4]
mov esi, dword [ecx + 8]
mov dword [ebp - 0x250], eax
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x268], eax
test byte [0x1001a028], 8
jne 0x100167e8
mov dword [esp + 8], 0x26384993
mov dword [esp + 4], ebx
mov dword [esp], section..bss
call sym._is_valid_handle
test eax, eax
jne 0x10016620
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], 0x80090001
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
lea eax, [ebp - 0x248]
mov dword [esp + 8], 0x85938417
mov dword [esp + 0xc], eax
mov dword [esp + 4], esi
mov dword [esp], section..bss
call sym._lookup_handle
test eax, eax
je 0x100168a0
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x100168c0
mov eax, edi
and eax, 0xe000
cmp eax, 0x4000
je 0x10016830
cmp eax, 0x6000
jne 0x10016880
lea eax, [ebp - 0x24c]
mov ecx, dword [ebp - 0x250]
mov edx, edi
mov dword [esp], eax
mov eax, ebx
call sym._new_key
mov edx, dword [ebp - 0x268]
mov dword [edx], eax
cmp eax, 0xffffffff
je 0x1001688d
lea eax, [ebp - 0x244]
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0xe8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x248]
mov dword [esp + 0x14], 0
mov dword [esp + 8], 2
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x244], 0x68
mov dword [esp], eax
call sym.rsaenh.dll_CPGetHashParam
mov ebx, dword [ebp - 0x24c]
mov eax, dword [ebp - 0x244]
sub esp, 0x18
mov esi, dword [ebx + 0x20]
mov dword [ebp - 0x254], esi
cmp edi, 0x660e
je 0x100169c0
cmp eax, dword [ebp - 0x254]
jb 0x100169ce
test byte [ebp - 0x250], 4
je 0x10016738
cmp edi, 0x6602
je 0x10017504
cmp edi, 0x6801
je 0x10017504
lea esi, [esi]
mov edi, dword [ebp - 0x254]
mov eax, 0x40
lea esi, [ebx + 0x334]
cmp edi, 0x40
cmovbe eax, edi
cmp eax, 4
jae 0x10016f00
test eax, eax
je 0x1001676d
movzx edx, byte [ebp - 0xe8]
mov byte [esi], dl
test al, 2
jne 0x100178a0
lea edi, [ebx + 0x374]
mov dword [ebx + 0x30], 0
mov edx, dword [edi]
mov dword [ebx + 0x38c], edx
mov edx, dword [edi + 4]
mov dword [ebx + 0x390], edx
mov edx, dword [edi + 8]
mov dword [ebx + 0x394], edx
mov edx, dword [edi + 0xc]
mov dword [ebx + 0x398], edx
mov edx, dword [edi + 0x10]
mov dword [ebx + 0x39c], edx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x3a0], edx
mov dword [esp + 0x14], esi
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 8], eax
lea eax, [ebx + 0x34]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call sym._setup_key_impl
mov eax, 1
jmp 0x10016608
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x250]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], str._hProv_08Ix__Algid_d__hBaseData_08Ix__dwFlags_08lx_phKey_p__n
mov dword [esp + 8], str.RSAENH_CPDeriveKey
mov dword [esp + 4], 0x1001a028
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x100165de
lea eax, [ebp - 0x1b8]
mov dword [esp + 8], 0x73620457
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x248]
mov eax, dword [eax + 0x10]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
test eax, eax
je 0x10016ee8
cmp edi, 0x4c03
je 0x10016e60
cmp edi, 0x4c07
je 0x100168d8
mov esi, esi
lea edi, [edi]
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090008
lea esp, [ebp - 0x10]
xor eax, eax
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], 0x80090002
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
xor eax, eax
jmp 0x10016608
mov eax, dword [ebp - 0x1b8]
mov edx, dword [eax + 0x3a8]
test edx, edx
je 0x10016f5d
mov eax, dword [eax + 0x3ac]
test eax, eax
je 0x10016f5d
movzx ecx, word [ebp - 0x250]
shl eax, 0x10
or ecx, eax
lea eax, [ebp - 0x24c]
mov dword [esp], eax
mov eax, ebx
call sym._new_key
mov esi, dword [ebp - 0x268]
mov dword [esi], eax
cmp eax, 0xffffffff
je 0x1001688d
mov edi, dword [ebp - 0x1b8]
mov esi, dword [ebp - 0x248]
mov ebx, dword [ebp - 0x24c]
mov ecx, dword [edi + 0x3c0]
mov eax, dword [edi + 0x3ac]
lea edx, [esi + 0x24]
lea esi, [ebx + 0x334]
shr ecx, 3
shr eax, 3
add ecx, ecx
test dword [ebp - 0x250], 0x400
je 0x10017650
add ecx, eax
mov dword [esp + 8], eax
add ecx, edx
mov dword [esp], esi
mov dword [esp + 4], ecx
mov dword [ebp - 0x268], edx
call sym._memcpy
mov ecx, dword [edi + 0x3c0]
mov eax, dword [ebx + 0x2c]
mov edi, dword [edi + 0x3ac]
mov edx, dword [ebp - 0x268]
shr ecx, 3
shr edi, 3
add ecx, edi
lea ecx, [eax + ecx*2]
lea edi, [ebx + 0x374]
add edx, ecx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], edi
call sym._memcpy
jmp 0x10016773
mov edx, eax
and edx, 0xfffffffb
cmp edx, 0x10
jne 0x10016705
movd xmm6, eax
mov ebx, dword [ebp - 0x248]
movdqu xmm4, xmmword [0x1002d210]
mov ecx, 0x1a
pshufd xmm3, xmm6, 0
lea edi, [ebp - 0x1b8]
movdqu xmm5, xmmword [0x1002d1f0]
movdqu xmm6, xmmword [0x1002d250]
lea esi, [ebx + 0x24]
psubd xmm3, xmm4
rep movsd dword es:[edi], dword [esi]
xor esi, esi
lea ecx, [ebp - 0x238]
movdqu xmm0, xmmword [ebp + esi - 0xe8]
movdqu xmm2, xmm5
movdqu xmm7, xmm3
movdqu xmm1, xmmword [0x1002d220]
paddd xmm5, xmmword [0x1002d200]
movups xmmword [ebp - 0x268], xmm0
movdqu xmm0, xmm2
paddd xmm1, xmm2
psubd xmm0, xmm4
psubd xmm1, xmm4
pcmpgtd xmm7, xmm0
movdqu xmm0, xmm7
movdqu xmm7, xmm3
pcmpgtd xmm7, xmm1
movdqu xmm1, xmm0
punpcklwd xmm0, xmm7
punpckhwd xmm1, xmm7
movdqu xmm7, xmm0
punpcklwd xmm0, xmm1
punpckhwd xmm7, xmm1
movdqu xmm1, xmmword [str._b_b_b_b_f_f_f_f]
punpcklwd xmm0, xmm7
movdqu xmm7, xmm3
pand xmm0, xmmword [0x1002d1d0]
paddd xmm1, xmm2
paddd xmm2, xmmword [0x1002d240]
psubd xmm1, xmm4
pcmpgtd xmm7, xmm1
psubd xmm2, xmm4
movdqu xmm1, xmm7
movdqu xmm7, xmm3
pcmpgtd xmm7, xmm2
movdqu xmm2, xmm1
punpcklwd xmm1, xmm7
punpckhwd xmm2, xmm7
movdqu xmm7, xmm1
punpcklwd xmm1, xmm2
punpckhwd xmm7, xmm2
punpcklwd xmm1, xmm7
pand xmm1, xmmword [0x1002d1d0]
packuswb xmm0, xmm1
movdqu xmm1, xmmword [ebp - 0x268]
pxor xmm1, xmm6
movdqu xmm2, xmm1
movdqu xmm1, xmm0
pand xmm2, xmm0
pandn xmm1, xmm6
por xmm1, xmm2
movups xmmword [ecx + esi], xmm1
movdqu xmm1, xmmword [ebp - 0x268]
pxor xmm1, xmmword [0x1002d260]
pand xmm1, xmm0
pandn xmm0, xmmword [0x1002d260]
por xmm0, xmm1
movups xmmword [ebp + esi - 0x1f8], xmm0
add esi, 0x10
cmp esi, 0x40
jne 0x10016a11
mov eax, dword [ebx + 0xc]
cmp eax, 0x8005
je 0x100174ac
cmp eax, 0x8009
jne 0x10017489
mov eax, dword [ebx + 0x8c]
test eax, eax
je 0x1001722a
mov edi, dword [eax]
lea eax, [ebp - 0x150]
mov dword [esp + 8], 0x26384993
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
lea ecx, [ebp - 0x238]
test eax, eax
je 0x10017ab3
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x10017635
imul eax, dword [eax + 0x10], 0x898
lea edx, [eax + 0x1002a6c0]
mov eax, dword [eax + 0x1002a6c0]
test eax, eax
jne 0x10016bc6
jmp 0x10017628
mov eax, dword [edx + 0x58]
add edx, 0x58
test eax, eax
je 0x10017628
cmp edi, eax
jne 0x10016bb8
mov eax, dword [edx + 4]
shr eax, 3
mov dword [ebx + 0x18], eax
lea eax, [ebx + 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp], eax
call sym._init_hash_impl
mov eax, dword [ebx + 0x8c]
mov edx, dword [eax + 8]
mov dword [esp + 8], edx
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov ebx, dword [ebp - 0x248]
lea ecx, [ebp - 0x238]
mov eax, dword [ebx + 0xc]
nop
lea esi, [esi]
cmp eax, 0x8005
je 0x10017349
cmp eax, 0x8009
je 0x1001722a
mov dword [esp + 8], 0x40
mov dword [esp + 4], ecx
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
cmp eax, 0x8005
je 0x100172da
cmp eax, 0x8009
je 0x10017238
mov eax, dword [ebx + 0x18]
mov dword [esp + 8], eax
lea eax, [ebx + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._finalize_hash_impl
mov dword [ebx + 0x20], 0
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0x18]
lea edi, [ebx + 0x24]
mov dword [esp + 8], eax
lea eax, [ebp - 0xe8]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebx + 0xc]
cmp eax, 0x8005
je 0x100171d8
cmp eax, 0x8009
jne 0x100171bb
mov eax, dword [ebx + 0x8c]
test eax, eax
je 0x10016f71
mov edi, dword [eax]
lea eax, [ebp - 0x150]
mov dword [esp + 8], 0x26384993
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
test eax, eax
je 0x10017aa1
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x10017699
imul eax, dword [eax + 0x10], 0x898
lea edx, [eax + 0x1002a6c0]
mov eax, dword [eax + 0x1002a6c0]
test eax, eax
jne 0x10016d3e
jmp 0x1001768c
mov eax, dword [edx + 0x58]
add edx, 0x58
test eax, eax
je 0x1001768c
cmp edi, eax
jne 0x10016d30
mov eax, dword [edx + 4]
shr eax, 3
mov dword [ebx + 0x18], eax
lea eax, [ebx + 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp], eax
call sym._init_hash_impl
mov eax, dword [ebx + 0x8c]
mov edx, dword [eax + 8]
mov dword [esp + 8], edx
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
lea esi, [esi]
cmp eax, 0x8005
je 0x1001708a
cmp eax, 0x8009
je 0x10016f71
lea eax, [ebp - 0x1f8]
mov dword [esp + 8], 0x40
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
cmp eax, 0x8005
je 0x1001701b
cmp eax, 0x8009
je 0x10016f7f
mov eax, dword [ebx + 0x18]
mov dword [esp + 8], eax
lea eax, [ebx + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._finalize_hash_impl
mov dword [ebx + 0x20], 0
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0x18]
lea esi, [ebx + 0x24]
lea edi, [ebp - 0xe8]
mov dword [esp + 4], esi
lea edx, [edi + eax]
mov dword [esp + 8], eax
lea edi, [ebx + 0x28]
mov dword [esp], edx
and edi, 0xfffffffc
call sym._memcpy
mov eax, dword [ebp - 0x1b8]
mov dword [ebx + 0x24], eax
mov eax, dword [ebp - 0x154]
mov dword [esi + 0x64], eax
mov eax, esi
lea esi, [ebp - 0x1b8]
sub eax, edi
lea ecx, [eax + 0x68]
sub esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [ebp - 0x24c]
jmp 0x10016738
mov eax, dword [ebp - 0x1b8]
mov esi, dword [ebp - 0x250]
mov edx, 0x4c03
mov ecx, dword [eax + 0x3c0]
movzx eax, si
shl ecx, 0x10
or ecx, eax
lea eax, [ebp - 0x24c]
mov dword [esp], eax
mov eax, ebx
call sym._new_key
mov edi, dword [ebp - 0x268]
mov dword [edi], eax
cmp eax, 0xffffffff
je 0x1001688d
mov eax, dword [ebp - 0x1b8]
mov ebx, dword [ebp - 0x24c]
mov edx, dword [eax + 0x3c0]
mov eax, dword [ebp - 0x248]
shr edx, 3
add eax, 0x24
and esi, 0x400
lea ecx, [eax + edx]
lea esi, [ebx + 0x334]
mov dword [esp + 8], edx
cmovne eax, ecx
mov dword [esp], esi
mov dword [esp + 4], eax
call sym._memcpy
jmp 0x1001676d
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], 0x80090020
jmp 0x10016608
mov edx, dword [ebp - 0xe8]
mov ecx, esi
lea edi, [ebp - 0xe8]
mov dword [ebx + 0x334], edx
mov edx, dword [ebp + eax - 0xec]
mov dword [esi + eax - 4], edx
lea edx, [ebx + 0x338]
and edx, 0xfffffffc
sub ecx, edx
add eax, ecx
sub edi, ecx
and eax, 0xfffffffc
cmp eax, 4
jb 0x1001676d
mov dword [ebp - 0x268], ebx
and eax, 0xfffffffc
xor ecx, ecx
mov ebx, dword [edi + ecx]
mov dword [edx + ecx], ebx
add ecx, 4
cmp ecx, eax
jb 0x10016f45
mov ebx, dword [ebp - 0x268]
jmp 0x1001676d
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090009
xor eax, eax
jmp 0x10016608
mov ecx, dword [ebx + 0x8c]
test ecx, ecx
jne 0x10016da6
mov edx, dword [ebx + 0x8c]
mov eax, dword [ebx + 0x18]
lea esi, [ebx + 0x24]
test edx, edx
je 0x10016e0e
mov dword [esp + 8], eax
lea edi, [ebp - 0x150]
mov dword [esp + 4], esi
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._finalize_hash_impl
mov eax, dword [ebx + 0x18]
mov dword [esp + 4], esi
mov dword [esp], edi
mov dword [esp + 8], eax
call sym._memcpy
lea eax, [ebx + 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp], eax
call sym._init_hash_impl
mov eax, dword [ebx + 0x8c]
mov edx, dword [eax + 0x10]
mov dword [esp + 8], edx
mov eax, dword [eax + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov eax, dword [ebx + 0x18]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov eax, dword [ebx + 0x18]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
jmp 0x10016df0
lea eax, [ebp - 0x150]
mov dword [esp + 8], 0x73620457
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
test eax, eax
jne 0x10017582
test byte [0x1001a028], 1
je 0x10016e02
mov dword [esp + 0xc], str.Key_lookup_failed._n
mov dword [esp + 8], str.finalize_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0x18]
lea esi, [ebx + 0x24]
jmp 0x10016e0e
lea eax, [ebp - 0x240]
mov dword [esp + 8], 0x73620457
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
test eax, eax
je 0x1001760d
mov eax, dword [ebx + 0xa0]
mov ecx, dword [ebx + 0x18]
test eax, eax
jne 0x100177c8
mov edi, 0x40
xor edx, edx
mov eax, edi
div ecx
lea ecx, [ebp - 0x1f8]
sub edi, edx
mov dword [ebp - 0x150], edi
je 0x100178ea
mov dword [ebp - 0x250], edx
mov dword [ebp - 0x268], ecx
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, dword [ebp - 0x268]
mov edx, dword [ebp - 0x250]
test eax, eax
mov esi, eax
je 0x10017bce
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [ebp - 0x250], edx
mov dword [ebp - 0x268], ecx
call sym._memcpy
lea eax, [ebx + 0x3a8]
mov dword [esp + 0xc], edi
mov dword [esp + 0x18], eax
lea eax, [ebx + 0xa8]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x240]
mov dword [esp + 0x10], 0
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._block_encrypt
mov ecx, dword [ebp - 0x268]
mov edx, dword [ebp - 0x250]
test eax, eax
je 0x1001791f
add ecx, edi
mov dword [ebp - 0x250], edx
mov dword [ebp - 0x268], ecx
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_free]
mov edx, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x268]
mov esi, edx
mov edx, dword [ebp - 0x248]
test esi, esi
jne 0x100178ea
mov eax, dword [edx + 0xc]
mov ebx, edx
jmp 0x10016dcc
add ebx, 0x20
mov dword [esp], eax
mov dword [esp + 4], ebx
call sym._init_hash_impl
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016d90
lea eax, [ebp - 0x150]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], eax
lea eax, [ebx + 0x18]
mov dword [ebp - 0x150], 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 8
mov eax, dword [ebx + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call sym.rsaenh.dll_CPGetKeyParam
shr dword [ebx + 0x18], 3
mov ebx, dword [ebp - 0x248]
sub esp, 0x18
mov eax, dword [ebx + 0xc]
jmp 0x10016d90
mov edi, dword [ebx + 0x8c]
test edi, edi
jne 0x10016c36
mov edx, dword [ebx + 0x8c]
mov eax, dword [ebx + 0x18]
lea edi, [ebx + 0x24]
test edx, edx
je 0x10016c98
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._finalize_hash_impl
mov eax, dword [ebx + 0x18]
lea edx, [ebp - 0x150]
mov dword [esp + 4], edi
mov dword [esp], edx
mov dword [esp + 8], eax
call sym._memcpy
lea eax, [ebx + 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp], eax
call sym._init_hash_impl
mov eax, dword [ebx + 0x8c]
mov ecx, dword [eax + 0x10]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov eax, dword [ebx + 0x18]
lea edx, [ebp - 0x150]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x20]
mov dword [esp], eax
call sym._update_hash_impl
mov eax, dword [ebx + 0x18]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
jmp 0x10016c7a
lea eax, [ebp - 0x23c]
mov dword [esp + 8], 0x73620457
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
test eax, eax
jne 0x10017512
test byte [0x1001a028], 1
je 0x10016c8c
mov dword [esp + 0xc], str.Key_lookup_failed._n
mov dword [esp + 8], str.finalize_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0x18]
lea edi, [ebx + 0x24]
jmp 0x10016c98
lea eax, [ebp - 0x23c]
mov dword [esp + 8], 0x73620457
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [esp], section..bss
mov dword [esp + 4], eax
call sym._lookup_handle
lea ecx, [ebp - 0x238]
test eax, eax
je 0x100175f2
mov edi, dword [ebx + 0x18]
mov eax, dword [ebx + 0xa0]
mov edx, edi
test eax, eax
jne 0x100176e4
mov dword [ebp - 0x268], edx
mov edi, 0x40
xor edx, edx
mov eax, edi
div dword [ebp - 0x268]
mov dword [ebp - 0x268], ecx
mov ecx, 0x40
sub edi, edx
mov dword [ebp - 0x150], edi
je 0x100178b2
mov dword [ebp - 0x250], edx
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_malloc]
mov edx, dword [ebp - 0x250]
test eax, eax
mov ecx, eax
je 0x10017c22
mov eax, dword [ebp - 0x268]
mov dword [esp], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [ebp - 0x258], edx
mov dword [ebp - 0x250], ecx
call sym._memcpy
lea eax, [ebx + 0x3a8]
mov ecx, dword [ebp - 0x250]
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], eax
lea eax, [ebx + 0xa8]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x23c]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], edi
mov dword [esp], eax
call sym._block_encrypt
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x258]
test eax, eax
je 0x10017955
mov dword [ebp - 0x250], edx
mov dword [esp], ecx
add dword [ebp - 0x268], edi
call dword [sym.imp.ucrtbase.dll_free]
mov edx, dword [ebp - 0x250]
mov ecx, edx
mov edx, dword [ebp - 0x248]
test ecx, ecx
jne 0x100178b2
mov eax, dword [edx + 0xc]
mov ebx, edx
jmp 0x10016c56
add ebx, 0x20
mov dword [esp], eax
mov dword [esp + 4], ebx
call sym._init_hash_impl
mov ebx, dword [ebp - 0x248]
lea ecx, [ebp - 0x238]
mov eax, dword [ebx + 0xc]
jmp 0x10016c20
lea eax, [ebp - 0x150]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], eax
lea eax, [ebx + 0x18]
mov dword [ebp - 0x150], 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 8
mov eax, dword [ebx + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call sym.rsaenh.dll_CPGetKeyParam
shr dword [ebx + 0x18], 3
mov ebx, dword [ebp - 0x248]
lea ecx, [ebp - 0x238]
sub esp, 0x18
mov eax, dword [ebx + 0xc]
jmp 0x10016c20
mov esi, dword [ebx + 0x28]
add dword [ebp - 0x254], esi
jmp 0x10016738
mov eax, dword [ebx + 0xa0]
mov dword [esp + 0x10], 1
mov dword [ebp - 0x150], eax
lea eax, [ebx + 0x3a8]
mov dword [esp + 0x18], eax
lea eax, [ebx + 0xa8]
add ebx, 0x24
mov dword [esp + 0x14], eax
mov eax, dword [ebx - 0xc]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x23c]
mov dword [esp], eax
call sym._block_encrypt
test eax, eax
jne 0x10016c8c
test byte [0x1001a028], 1
je 0x10016c8c
mov dword [esp + 0xc], str.block_encrypt_failed._n
jmp 0x1001731c
mov eax, dword [ebx + 0xa0]
mov dword [esp + 0x10], 1
mov dword [ebp - 0x240], eax
lea eax, [ebx + 0x3a8]
mov dword [esp + 0x18], eax
lea eax, [ebx + 0xa8]
add ebx, 0x24
mov dword [esp + 0x14], eax
mov eax, dword [ebx - 0xc]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x240]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x150]
mov dword [esp], eax
call sym._block_encrypt
test eax, eax
jne 0x10016e02
test byte [0x1001a028], 1
je 0x10016e02
mov dword [esp + 0xc], str.block_encrypt_failed._n
jmp 0x1001705d
test byte [0x1001a028], 1
jne 0x10017a78
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016c56
test byte [0x1001a028], 1
jne 0x100179e9
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016dcc
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090008
test byte [0x1001a028], 1
jne 0x10017b63
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016c20
add ecx, edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], esi
mov dword [ebp - 0x268], edx
call sym._memcpy
mov ecx, dword [edi + 0x3c0]
mov eax, dword [ebx + 0x2c]
mov edi, dword [edi + 0x3ac]
mov edx, dword [ebp - 0x268]
shr ecx, 3
shr edi, 3
add ecx, edi
add ecx, ecx
jmp 0x100169a0
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090008
test byte [0x1001a028], 1
je 0x100171ca
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp + 0xc], str.Hash_algroithm__x_not_found._n
mov dword [esp + 8], str.init_hash
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016d90
sub edi, eax
mov edx, 0x40
cmp edi, 0x40
cmova edi, edx
lea edx, [ebx + 0x24]
mov dword [ebp - 0x268], edx
add eax, edx
mov dword [ebp - 0x150], edi
cmp edi, 4
jae 0x10017a12
test edi, edi
je 0x10017720
movzx edx, byte [ecx]
mov byte [eax], dl
test edi, 2
jne 0x10017c13
mov edx, dword [ebx + 0xa0]
mov eax, dword [ebx + 0x18]
add edx, edi
mov dword [ebx + 0xa0], edx
cmp edx, eax
jb 0x100175ff
mov dword [ebx + 0xa0], 0
lea edx, [ebx + 0x3a8]
mov dword [ebp - 0x150], eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x268]
mov dword [esp + 0x18], edx
lea edx, [ebx + 0xa8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x23c]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], 0
mov dword [esp], eax
call sym._block_encrypt
lea ecx, [ebp - 0x238]
test eax, eax
je 0x10017955
lea eax, [ecx + edi]
mov ecx, 0x40
xor edx, edx
sub ecx, edi
mov dword [ebp - 0x268], eax
mov eax, ecx
mov edi, ecx
div dword [ebx + 0x18]
sub edi, edx
mov dword [ebp - 0x150], edi
je 0x10017471
jmp 0x100173bd
mov edi, ecx
mov edx, 0x40
lea esi, [ebx + 0x24]
sub edi, eax
cmp edi, 0x40
cmova edi, edx
add eax, esi
mov dword [ebp - 0x150], edi
cmp edi, 4
jae 0x1001798b
test edi, edi
je 0x10017804
movzx edx, byte [ebp - 0x1f8]
mov byte [eax], dl
test edi, 2
jne 0x10017bbc
mov edx, dword [ebx + 0xa0]
mov eax, dword [ebx + 0x18]
add edx, edi
mov dword [ebx + 0xa0], edx
cmp edx, eax
jb 0x1001761a
mov dword [ebx + 0xa0], 0
lea edx, [ebx + 0x3a8]
mov dword [ebp - 0x150], eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x240]
mov dword [esp + 0x18], edx
lea edx, [ebx + 0xa8]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], 0
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._block_encrypt
test eax, eax
je 0x1001791f
mov esi, 0x40
lea eax, [ebp - 0x1f8]
xor edx, edx
sub esi, edi
lea ecx, [eax + edi]
mov eax, esi
mov edi, esi
div dword [ebx + 0x18]
sub edi, edx
mov dword [ebp - 0x150], edi
je 0x100171a3
jmp 0x100170e7
movzx edx, word [ebp + eax - 0xea]
mov word [esi + eax - 2], dx
jmp 0x1001676d
lea eax, [ebx + 0x24]
cmp ecx, 4
jae 0x10017b0b
test ecx, ecx
je 0x100178d6
mov edi, dword [ebp - 0x268]
movzx edx, byte [edi]
mov byte [eax], dl
test cl, 2
jne 0x10017ba7
mov dword [ebx + 0xa0], ecx
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016c56
lea eax, [ebx + 0x24]
cmp esi, 4
jae 0x10017ac5
test esi, esi
je 0x1001790b
movzx edx, byte [ecx]
mov byte [eax], dl
test esi, 2
jne 0x10017c04
mov dword [ebx + 0xa0], esi
mov ebx, dword [ebp - 0x248]
mov eax, dword [ebx + 0xc]
jmp 0x10016dcc
test byte [0x1001a028], 1
je 0x1001761a
mov dword [esp + 0xc], str.block_encrypt_failed._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x1001761a
test byte [0x1001a028], 1
je 0x100175ff
mov dword [esp + 0xc], str.block_encrypt_failed._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x100175ff
mov edx, dword [ebp - 0x1f8]
lea ecx, [ebp - 0x1f8]
mov dword [eax], edx
mov edx, dword [ebp + edi - 0x1fc]
mov dword [eax + edi - 4], edx
lea edx, [eax + 4]
and edx, 0xfffffffc
sub eax, edx
sub ecx, eax
add eax, edi
and eax, 0xfffffffc
cmp eax, 4
jb 0x10017804
mov dword [ebp - 0x250], ebx
and eax, 0xfffffffc
mov dword [ebp - 0x268], eax
xor eax, eax
mov ebx, dword [ecx + eax]
mov dword [edx + eax], ebx
add eax, 4
cmp eax, dword [ebp - 0x268]
jb 0x100179cd
mov ebx, dword [ebp - 0x250]
jmp 0x10017804
mov dword [esp + 0xc], str.Key_lookup_failed._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x1001761a
mov edx, dword [ebp - 0x238]
mov dword [eax], edx
mov edx, dword [ebp + edi - 0x23c]
mov dword [eax + edi - 4], edx
lea edx, [eax + 4]
and edx, 0xfffffffc
sub eax, edx
mov dword [ebp - 0x258], edx
mov edx, ecx
sub edx, eax
add eax, edi
and eax, 0xfffffffc
mov dword [ebp - 0x250], edx
cmp eax, 4
jb 0x10017720
and eax, 0xfffffffc
mov dword [ebp - 0x26c], eax
xor eax, eax
mov edx, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x258]
mov edx, dword [edx + eax]
mov dword [ecx + eax], edx
add eax, 4
cmp eax, dword [ebp - 0x26c]
jb 0x10017a56
jmp 0x10017720
mov dword [esp + 0xc], str.Key_lookup_failed._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x100175ff
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090001
jmp 0x10017699
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x80090001
jmp 0x10017635
mov edx, dword [ecx]
lea edi, [ebx + 0x28]
and edi, 0xfffffffc
mov dword [ebx + 0x24], edx
mov edx, dword [ecx + esi - 4]
mov dword [eax + esi - 4], edx
sub eax, edi
sub ecx, eax
add eax, esi
and eax, 0xfffffffc
cmp eax, 4
jb 0x1001790b
and eax, 0xfffffffc
xor edx, edx
mov dword [ebp - 0x268], eax
mov eax, dword [ecx + edx]
mov dword [edi + edx], eax
add edx, 4
cmp edx, dword [ebp - 0x268]
jb 0x10017af5
jmp 0x1001790b
mov edi, dword [ebp - 0x268]
mov edx, dword [edi]
mov dword [ebx + 0x24], edx
mov edx, dword [edi + ecx - 4]
mov dword [eax + ecx - 4], edx
lea edx, [ebx + 0x28]
and edx, 0xfffffffc
sub eax, edx
sub edi, eax
add eax, ecx
and eax, 0xfffffffc
cmp eax, 4
jb 0x100178d6
mov dword [ebp - 0x250], ecx
and eax, 0xfffffffc
mov dword [ebp - 0x268], eax
xor eax, eax
mov ecx, dword [edi + eax]
mov dword [edx + eax], ecx
add eax, 4
cmp eax, dword [ebp - 0x268]
jb 0x10017b47
mov ecx, dword [ebp - 0x250]
jmp 0x100178d6
mov eax, dword [ebx + 0x8c]
mov eax, dword [eax]
mov dword [esp + 0xc], str.Hash_algroithm__x_not_found._n
mov dword [esp + 8], str.init_hash
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x1001a028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
mov ebx, dword [ebp - 0x248]
lea ecx, [ebp - 0x238]
mov eax, dword [ebx + 0xc]
jmp 0x10016c20
mov edi, dword [ebp - 0x268]
movzx edx, word [edi + ecx - 2]
mov word [eax + ecx - 2], dx
jmp 0x100178d6
movzx edx, word [ebp + edi - 0x1fa]
mov word [eax + edi - 2], dx
jmp 0x10017804
test byte [0x1001a028], 2
je 0x1001761a
mov dword [esp + 0xc], str.No_memory._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x1001761a
movzx edx, word [ecx + esi - 2]
mov word [eax + esi - 2], dx
jmp 0x1001790b
movzx edx, word [ecx + edi - 2]
mov word [eax + edi - 2], dx
jmp 0x10017720
test byte [0x1001a028], 2
je 0x100175ff
mov dword [esp + 0xc], str.No_memory._n
mov dword [esp + 8], str.update_hash
mov dword [esp + 4], 0x1001a028
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x100175ff