Function at 0x4022e0
Capabilities:
Create new key via cryptacquirecontext
Encode data using xor
Encrypt data using aes via winapi
Encrypt data using des via winapi
Encrypt or decrypt via wincrypt
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x449269
mov eax, dword fs:[0]
push eax
sub esp, 0xe0
push ebx
push esi
push edi
mov eax, dword [0x4531f0]
xor eax, esp
push eax
lea eax, [esp + 0xf0]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0xc]
xor edi, edi
xor eax, eax
mov dword [esp + 0x68], edi
cmp eax, eax
mov dword [esp + 0xf8], eax
ja 0x40233e
jb 0x40232f
cmp ebx, 0xffffffff
ja 0x40233e
push ebx
call fcn.00434a73
mov edi, eax
add esp, 4
mov dword [esp + 0x68], edi
mov eax, dword [ebp + 8]
push ebx
push eax
push ebx
push edi
call fcn.00434753
movzx eax, bh
add esp, 0x10
and eax, 0x80000007
mov cl, bl
jns 0x40235e
dec eax
or eax, 0xfffffff8
inc eax
test al, al
jne 0x402364
mov al, 3
test bl, bl
jne 0x40236a
mov cl, 1
xor esi, esi
test ebx, ebx
jbe 0x4023a8
movzx ecx, cl
mov dword [esp + 0x58], ecx
movzx ecx, al
lea ebx, [ebx]
xor edx, edx
mov eax, esi
div dword [esp + 0x58]
test edx, edx
jne 0x402396
mov dl, byte [esi + edi]
ror dl, cl
mov byte [esi + edi], dl
jmp 0x40239e
mov al, byte [esi + edi]
rol al, cl
mov byte [esi + edi], al
mov ebx, dword [ebp + 0xc]
add esi, 1
cmp esi, ebx
jb 0x402380
cmp ebx, 0xd
jbe 0x404161
mov eax, 0xd
mov ecx, 0x44dc58
mov edx, edi
lea ecx, [ecx]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x4023d8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x4023c0
test eax, eax
je 0x40243b
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402438
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402438
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402427
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402438
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x402438
test esi, esi
mov ebx, dword [ebp + 0xc]
mov eax, 1
jg 0x40243d
or eax, 0xffffffff
jmp 0x40243d
mov ebx, dword [ebp + 0xc]
xor eax, eax
test eax, eax
jne 0x404161
lea esi, [ebx - 0xd]
cmp esi, 1
jae 0x40247c
lea edx, [esp + 0xbc]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0xc8], 0xffffffff
call fcn.004380aa
mov al, byte [edi + 0xd]
movzx ecx, al
sub esi, 1
cmp ecx, esi
jbe 0x4024b8
lea ecx, [esp + 0xcc]
push ecx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea edx, [esp + 0xd0]
push edx
mov dword [esp + 0xd8], 0xffffffff
call fcn.004380aa
sub esi, ecx
cmp esi, 1
lea eax, [edi + ecx + 0xe]
jae 0x4024f2
lea eax, [esp + 0x8c]
push eax
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea ecx, [esp + 0x90]
push ecx
mov dword [esp + 0x98], 0xffffffff
call fcn.004380aa
mov cl, byte [eax]
add eax, 1
sub esi, 1
cmp cl, 1
jbe 0x402528
lea edx, [esp + 0x74]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x80], 0xfffffffe
call fcn.004380aa
cmp esi, 1
jae 0x40255c
lea ecx, [esp + 0x9c]
push ecx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea edx, [esp + 0xa0]
push edx
mov dword [esp + 0xa8], 0xffffffff
call fcn.004380aa
mov bl, byte [eax]
add eax, 1
sub esi, 1
cmp bl, 1
ja 0x404132
cmp esi, 4
jae 0x4025a1
lea eax, [esp + 0xdc]
push eax
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea ecx, [esp + 0xe0]
push ecx
mov dword [esp + 0xe8], 0xffffffff
call fcn.004380aa
mov ecx, dword [eax]
test ecx, ecx
mov dword [esp + 0x44], ecx
jne 0x4025da
lea edx, [esp + 0xac]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0xb0]
push eax
mov dword [esp + 0xb8], 0xfffffffe
call fcn.004380aa
lea ecx, [esp + 0x64]
add eax, 4
push ecx
mov ecx, str.Microsoft_Enhanced_RSA_and_AES_Cryptographic_Provider
mov dword [esp + 0x34], eax
sub esi, 4
call fcn.004045b0
test bl, bl
mov byte [esp + 0xf8], 1
mov edi, 0x18
mov dword [esp + 0x58], 0x6610
je 0x402630
cmp bl, 1
jne 0x404103
mov edx, str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
lea edi, [esp + 0x64]
call fcn.00404570
mov edi, 1
mov dword [esp + 0x58], 0x6603
mov dword [esp + 0x38], 0
push 0
mov byte [esp + 0xfc], 2
mov edx, dword [esp + 0x68]
mov ebx, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
push edi
push edx
push 0
lea eax, [esp + 0x48]
push eax
call ebx
test eax, eax
jne 0x40269b
call fcn.004044b0
test eax, eax
jge 0x40269d
push 0
push edi
push 0
push 0
lea ecx, [esp + 0x48]
push ecx
call ebx
test eax, eax
jne 0x40269b
call fcn.004044b0
cmp eax, 0x80090016
jne 0x40269d
push 8
push edi
push 0
push 0
lea edx, [esp + 0x48]
push edx
call ebx
test eax, eax
jne 0x40269b
call fcn.004044b0
jmp 0x40269d
xor eax, eax
mov ebx, eax
call fcn.00402180
mov ecx, dword [esp + 0x44]
cmp ecx, esi
jbe 0x4026b5
call fcn.004022b0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x54], 0
xor eax, eax
mov byte [esp + 0xf8], 3
ja 0x4026ce
cmp ecx, 0xffffffff
jbe 0x4026d2
xor al, al
jmp 0x4026e4
push ecx
call fcn.00434a73
add esp, 4
test eax, eax
mov dword [esp + 0x54], eax
setne al
movzx ebx, al
call fcn.00402180
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x30]
push eax
push ebx
push eax
mov eax, dword [esp + 0x60]
push eax
call fcn.00434753
mov eax, dword [esp + 0x54]
add ebx, eax
sub esi, eax
add esp, 0x10
cmp esi, 2
mov edi, ebx
jae 0x40273f
lea ecx, [esp + 0x7c]
push ecx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x88], 0xffffffff
call fcn.004380aa
mov al, byte [ebx]
mov cl, byte [ebx + 1]
sub esi, 2
add ebx, 2
cmp esi, 4
mov byte [esp + 0x1f], al
mov byte [esp + 0x25], cl
jae 0x402786
lea edx, [esp + 0x84]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0x88]
push eax
mov dword [esp + 0x90], 0xffffffff
call fcn.004380aa
mov ecx, dword [ebx]
sub esi, 4
add ebx, 4
cmp ecx, esi
mov dword [esp + 0x20], ecx
jbe 0x40279f
call fcn.004022b0
mov ecx, dword [esp + 0x20]
xor eax, eax
mov dword [esp + 0x50], eax
cmp eax, eax
mov byte [esp + 0xf8], 4
ja 0x4027c9
jb 0x4027b8
cmp ecx, 0xffffffff
ja 0x4027c9
mov ecx, dword [esp + 0x20]
push ecx
call fcn.00434a73
add esp, 4
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x50]
push eax
push ebx
push eax
push edx
call fcn.00434753
mov eax, dword [esp + 0x30]
sub esi, eax
add esp, 0x10
add ebx, eax
cmp esi, 4
jae 0x402819
lea eax, [esp + 0x94]
push eax
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea ecx, [esp + 0x98]
push ecx
mov dword [esp + 0xa0], 0xffffffff
call fcn.004380aa
mov ecx, dword [ebx]
sub esi, 4
add ebx, 4
cmp ecx, esi
mov dword [esp + 0x28], ecx
jbe 0x402832
call fcn.004022b0
mov ecx, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x60], eax
cmp eax, eax
mov byte [esp + 0xf8], 5
ja 0x40285c
jb 0x40284b
cmp ecx, 0xffffffff
ja 0x40285c
mov edx, dword [esp + 0x28]
push edx
call fcn.00434a73
add esp, 4
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
push eax
push ebx
push eax
mov eax, dword [esp + 0x6c]
push eax
call fcn.00434753
mov eax, dword [esp + 0x38]
sub esi, eax
add esp, 0x10
add ebx, eax
cmp esi, 4
jae 0x4028ac
lea ecx, [esp + 0xa4]
push ecx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea edx, [esp + 0xa8]
push edx
mov dword [esp + 0xb0], 0xffffffff
call fcn.004380aa
mov eax, dword [ebx]
sub esi, 4
add ebx, 4
cmp eax, esi
mov dword [esp + 0x40], eax
jbe 0x4028c5
call fcn.004022b0
mov eax, dword [esp + 0x40]
xor ecx, ecx
mov dword [esp + 0x3c], ecx
cmp ecx, ecx
ja 0x4028e7
jb 0x4028d6
cmp eax, 0xffffffff
ja 0x4028e7
push eax
call fcn.00434a73
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
add esp, 4
push eax
push ebx
push eax
mov eax, dword [esp + 0x48]
push eax
call fcn.00434753
xor esi, esi
add esp, 0x10
mov dword [esp + 0x5c], esi
mov ecx, dword [esp + 0x40]
xor eax, eax
cmp eax, esi
ja 0x40291b
jb 0x40290e
cmp ecx, 0xffffffff
ja 0x40291b
push ecx
call fcn.00434a73
add esp, 4
mov dword [esp + 0x5c], eax
mov dword [esp + 0x34], esi
lea ecx, [esp + 0x34]
push ecx
push esi
push esi
mov byte [esp + 0x104], 8
mov edx, dword [esp + 0x44]
push 0x8004
push edx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x402947
call fcn.004044b0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x34]
mov esi, dword [sym.imp.ADVAPI32.dll_CryptHashData]
push 0
push eax
push ecx
push edx
call esi
test eax, eax
jne 0x402969
call fcn.004044b0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
push 0
lea edx, [eax + ecx + 0xa]
mov eax, dword [esp + 0x38]
push edx
push edi
push eax
call esi
test eax, eax
jne 0x402989
call fcn.004044b0
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
push 0
lea ecx, [esp + 0x44]
push ecx
push edx
push 2
push eax
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x4029ab
call fcn.004044b0
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4029c2
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [esp + 0x34], 0
mov cl, byte [esp + 0x25]
mov al, byte [esp + 0x1f]
mov dl, cl
or dl, al
mov bl, cl
mov ecx, dword [esp + 0x40]
and bl, al
mov al, dl
or al, bl
test al, 8
mov byte [esp + 0x26], bl
mov byte [esp + 0x17], dl
mov dword [esp + 0x18], ecx
mov byte [esp + 0x27], al
je 0x402a52
movzx eax, dl
mov cl, bl
or eax, 8
or cl, 8
and eax, 0x80000007
jns 0x402a05
dec eax
or eax, 0xfffffff8
inc eax
test al, al
jne 0x402a0b
mov al, 3
test cl, cl
jne 0x402a11
mov cl, 1
xor esi, esi
cmp dword [esp + 0x40], esi
jbe 0x402a4e
movzx edx, cl
mov dword [esp + 0x30], edx
movzx edi, al
xor edx, edx
mov eax, esi
div dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
mov ecx, edi
test edx, edx
mov dl, byte [esi + eax]
jne 0x402a3c
ror dl, cl
jmp 0x402a3e
rol dl, cl
mov byte [esi + eax], dl
add esi, 1
cmp esi, dword [esp + 0x18]
jb 0x402a23
mov dl, byte [esp + 0x17]
mov al, byte [esp + 0x27]
test al, 4
je 0x402ab4
xor ecx, ecx
cmp dword [esp + 0x18], ecx
jbe 0x402ab4
mov edi, dword [esp + 0x3c]
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x402ab0
cmp al, 0x7a
ja 0x402ab0
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x402a9d
cmp al, 0x5a
ja 0x402a9d
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x402a9d
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, dword [esp + 0x18]
jb 0x402a62
mov bl, byte [esp + 0x26]
mov dl, byte [esp + 0x17]
jmp 0x402ab8
xor bl, bl
jmp 0x402a74
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x18]
mov cl, dl
and cl, bl
xor eax, eax
test esi, esi
jbe 0x402ad3
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x402ac6
mov eax, esi
and eax, 1
mov ecx, esi
mov dword [esp + 0x2c], eax
je 0x402ae3
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x402b04
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402af2
mov cl, byte [esp + 0x27]
xor eax, eax
test esi, esi
jbe 0x402b1d
mov edi, edi
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x402b10
movzx edx, byte [esp + 0x17]
and edx, 0x80000007
mov byte [esp + 0x1e], 0
jns 0x402b34
dec edx
or edx, 0xfffffff8
inc edx
test edx, edx
mov dword [esp + 0x30], edx
jle 0x402bd4
cmp dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x18]
je 0x402b4e
add ecx, 0xffffffff
test ecx, ecx
jbe 0x402b76
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea ecx, [ecx]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402b60
mov edx, dword [esp + 0x30]
mov cl, byte [esp + 0x26]
mov al, dl
test al, al
jne 0x402b82
mov al, 3
test cl, cl
jne 0x402b88
mov cl, 1
xor esi, esi
cmp dword [esp + 0x18], esi
jbe 0x402bbf
movzx ebx, cl
movzx ecx, al
xor edx, edx
mov eax, esi
div ebx
test edx, edx
jne 0x402baa
mov al, byte [esi + edi]
ror al, cl
mov byte [esi + edi], al
jmp 0x402bb2
mov dl, byte [esi + edi]
rol dl, cl
mov byte [esi + edi], dl
add esi, 1
cmp esi, dword [esp + 0x18]
jb 0x402b96
mov edx, dword [esp + 0x30]
mov al, byte [esp + 0x1e]
add al, 1
mov byte [esp + 0x1e], al
movzx eax, al
cmp eax, edx
jl 0x402b40
xor ecx, ecx
cmp dword [esp + 0x18], ecx
jbe 0x402c2c
lea esp, [esp]
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x402d75
cmp al, 0x7a
ja 0x402d75
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x402c23
cmp al, 0x5a
ja 0x402c23
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x402c23
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, dword [esp + 0x18]
jb 0x402be0
cmp dword [esp + 0x2c], 0
mov esi, dword [esp + 0x18]
mov ecx, esi
je 0x402c3c
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x402c62
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
jmp 0x402c50
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402c50
mov cl, byte [esp + 0x26]
xor eax, eax
test esi, esi
jbe 0x402c7d
lea esp, [esp]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x402c70
cmp dword [esp + 0x2c], 0
mov ecx, esi
je 0x402c89
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x402caa
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402c98
xor ecx, ecx
test esi, esi
jbe 0x402cfe
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x402d7c
cmp al, 0x7a
ja 0x402d7c
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x402cf7
cmp al, 0x5a
ja 0x402cf7
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
mov esi, dword [esp + 0x18]
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x402cf7
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, esi
jb 0x402cb0
cmp dword [esp + 0x2c], 0
mov ecx, esi
je 0x402d0a
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x402d32
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea esp, [esp]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402d20
movzx eax, byte [esp + 0x26]
and eax, 0x80000007
mov cl, byte [esp + 0x17]
jns 0x402d47
dec eax
or eax, 0xfffffff8
inc eax
test al, al
jne 0x402d4d
mov al, 3
test cl, cl
jne 0x402d53
mov cl, 1
xor esi, esi
cmp dword [esp + 0x18], esi
jbe 0x402d94
movzx ebx, cl
movzx ecx, al
xor edx, edx
mov eax, esi
div ebx
test edx, edx
jne 0x402d83
mov dl, byte [esi + edi]
ror dl, cl
mov byte [esi + edi], dl
jmp 0x402d8b
xor bl, bl
jmp 0x402bfa
xor bl, bl
jmp 0x402cca
mov al, byte [esi + edi]
rol al, cl
mov byte [esi + edi], al
add esi, 1
cmp esi, dword [esp + 0x18]
jb 0x402d61
cmp dword [esp + 0x2c], 0
mov edx, dword [esp + 0x18]
mov ecx, edx
je 0x402da4
lea ecx, [edx - 1]
test ecx, ecx
jbe 0x402dc9
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402db3
mov edx, dword [esp + 0x18]
mov cl, byte [esp + 0x17]
add cl, byte [esp + 0x26]
xor eax, eax
test edx, edx
jbe 0x402de4
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, edx
jb 0x402dd7
cmp dword [esp + 0x2c], 0
mov ecx, edx
je 0x402df0
lea ecx, [edx - 1]
test ecx, ecx
jbe 0x402e12
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
nop
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402e00
test byte [esp + 0x27], 2
je 0x402e48
cmp dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x18]
je 0x402e27
add ecx, 0xffffffff
test ecx, ecx
jbe 0x402e48
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402e36
test byte [esp + 0x27], 1
je 0x402e6d
mov cl, byte [esp + 0x26]
mov edx, dword [esp + 0x18]
or cl, 1
xor eax, eax
test edx, edx
jbe 0x402e6d
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, edx
jb 0x402e60
mov eax, dword [esp + 0x40]
cmp eax, 4
mov ecx, edi
mov edi, dword [esp + 0x5c]
mov edx, edi
jb 0x402e94
mov edi, edi
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x402e98
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x402e80
test eax, eax
je 0x402ef5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402ee7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402ef5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402ee7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402ef5
movzx esi, byte [edx]
movzx ebx, byte [ecx]
sub esi, ebx
jne 0x402ee7
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x402ef5
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x402ef5
test esi, esi
mov eax, 1
jg 0x402ef7
or eax, 0xffffffff
jmp 0x402ef7
xor eax, eax
test eax, eax
je 0x402f2a
lea edx, [esp + 0xb4]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0xb8]
push eax
mov dword [esp + 0xc0], 0xfffffffe
call fcn.004380aa
push edi
call fcn.00434c6c
mov edi, dword [esp + 0x54]
xor ecx, ecx
add esp, 4
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x5c], 0
jbe 0x402f9c
jmp 0x402f50
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x40306a
cmp al, 0x7a
ja 0x40306a
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x402f93
cmp al, 0x5a
ja 0x402f93
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x402f93
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, dword [esp + 0x20]
jb 0x402f50
mov esi, dword [esp + 0x20]
xor eax, eax
test esi, esi
mov cl, 0x40
jbe 0x402fbd
jmp 0x402fb0
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x402fb0
mov eax, esi
and eax, 1
mov ecx, esi
mov dword [esp + 0x18], eax
je 0x402fcd
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x402ff2
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea esp, [esp]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x402fe0
xor eax, eax
test esi, esi
mov cl, 0xf6
jbe 0x40300d
lea ebx, [ebx]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x403000
mov byte [esp + 0x1e], 0
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x40301e
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x403042
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea ecx, [ecx]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403030
xor ecx, ecx
test esi, esi
jbe 0x403081
jmp 0x403050
xor edx, edx
mov eax, ecx
mov ebx, 0xe0
div ebx
test edx, edx
jne 0x403071
mov dl, byte [ecx + edi]
ror dl, 6
mov byte [ecx + edi], dl
jmp 0x40307a
xor bl, bl
jmp 0x402f6a
mov al, byte [ecx + edi]
rol al, 6
mov byte [ecx + edi], al
add ecx, 1
cmp ecx, esi
jb 0x403050
mov al, byte [esp + 0x1e]
add al, 1
cmp al, 6
mov byte [esp + 0x1e], al
jb 0x403012
xor ecx, ecx
test esi, esi
jbe 0x4030e3
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x40320a
cmp al, 0x7a
ja 0x40320a
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x4030dc
cmp al, 0x5a
ja 0x4030dc
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
mov esi, dword [esp + 0x20]
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x4030dc
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, esi
jb 0x403095
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x4030ef
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x403112
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov edi, edi
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403100
xor eax, eax
test esi, esi
mov cl, 0xe0
jbe 0x40312d
lea ebx, [ebx]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x403120
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x403139
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x40315a
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403148
xor ecx, ecx
test esi, esi
jbe 0x4031ae
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x403211
cmp al, 0x7a
ja 0x403211
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x4031a7
cmp al, 0x5a
ja 0x4031a7
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
mov esi, dword [esp + 0x20]
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x4031a7
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, esi
jb 0x403160
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x4031ba
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x4031e2
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea esp, [esp]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x4031d0
xor ecx, ecx
test esi, esi
jbe 0x403228
jmp 0x4031f0
xor edx, edx
mov eax, ecx
mov ebx, 0x56
div ebx
test edx, edx
jne 0x403218
mov dl, byte [ecx + edi]
ror dl, 3
mov byte [ecx + edi], dl
jmp 0x403221
xor bl, bl
jmp 0x4030af
xor bl, bl
jmp 0x40317a
mov al, byte [ecx + edi]
rol al, 3
mov byte [ecx + edi], al
add ecx, 1
cmp ecx, esi
jb 0x4031f0
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x403234
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x403255
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403243
xor eax, eax
test esi, esi
mov cl, 0x36
jbe 0x40326d
lea ecx, [ecx]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x403260
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x403279
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x40329a
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403288
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x4032a6
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x4032c7
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x4032b5
test byte [esp + 0x17], 8
je 0x403328
movzx eax, byte [esp + 0x1f]
mov cl, byte [esp + 0x25]
or eax, 8
or cl, 8
and eax, 0x80000007
jns 0x4032e9
dec eax
or eax, 0xfffffff8
inc eax
test al, al
jne 0x4032ef
mov al, 3
test cl, cl
jne 0x4032f5
mov cl, 1
xor esi, esi
cmp dword [esp + 0x20], esi
jbe 0x403328
movzx ebx, cl
movzx ecx, al
xor edx, edx
mov eax, esi
div ebx
test edx, edx
jne 0x403317
mov dl, byte [esi + edi]
ror dl, cl
mov byte [esi + edi], dl
jmp 0x40331f
mov al, byte [esi + edi]
rol al, cl
mov byte [esi + edi], al
add esi, 1
cmp esi, dword [esp + 0x20]
jb 0x403303
test byte [esp + 0x17], 4
mov esi, dword [esp + 0x20]
je 0x40338e
xor ecx, ecx
test esi, esi
jbe 0x40338e
lea esp, [esp]
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x40347b
cmp al, 0x7a
ja 0x40347b
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x403387
cmp al, 0x5a
ja 0x403387
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
mov esi, dword [esp + 0x20]
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x403387
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, esi
jb 0x403340
mov cl, byte [esp + 0x26]
xor eax, eax
test esi, esi
jbe 0x4033ad
jmp 0x4033a0
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x4033a0
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x4033b9
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x4033da
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x4033c8
mov cl, byte [esp + 0x17]
xor eax, eax
test esi, esi
jbe 0x4033f1
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x4033e4
movzx edx, byte [esp + 0x1f]
and edx, 0x80000007
mov byte [esp + 0x1e], 0
jns 0x403408
dec edx
or edx, 0xfffffff8
inc edx
test edx, edx
mov dword [esp + 0x30], edx
jle 0x4034ac
cmp dword [esp + 0x18], 0
mov ecx, dword [esp + 0x20]
je 0x403422
add ecx, 0xffffffff
test ecx, ecx
jbe 0x403447
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403431
mov edx, dword [esp + 0x30]
mov cl, byte [esp + 0x25]
mov al, dl
test al, al
jne 0x403453
mov al, 3
test cl, cl
jne 0x403459
mov cl, 1
xor esi, esi
cmp dword [esp + 0x20], esi
jbe 0x403497
movzx ebx, cl
movzx ecx, al
xor edx, edx
mov eax, esi
div ebx
test edx, edx
jne 0x403482
mov dl, byte [esi + edi]
ror dl, cl
mov byte [esi + edi], dl
jmp 0x40348a
xor bl, bl
jmp 0x40335a
mov al, byte [esi + edi]
rol al, cl
mov byte [esi + edi], al
add esi, 1
cmp esi, dword [esp + 0x20]
jb 0x403467
mov edx, dword [esp + 0x30]
mov al, byte [esp + 0x1e]
add al, 1
movzx ecx, al
cmp ecx, edx
mov byte [esp + 0x1e], al
jl 0x403414
xor ecx, ecx
cmp dword [esp + 0x20], ecx
jbe 0x403500
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x403654
cmp al, 0x7a
ja 0x403654
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x4034f7
cmp al, 0x5a
ja 0x4034f7
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x4034f7
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, dword [esp + 0x20]
jb 0x4034b4
cmp dword [esp + 0x18], 0
mov esi, dword [esp + 0x20]
mov ecx, esi
je 0x403510
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x403532
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
nop
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403520
mov cl, byte [esp + 0x25]
xor eax, eax
test esi, esi
jbe 0x40354d
lea esp, [esp]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, esi
jb 0x403540
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x403559
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x40357a
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403568
xor ecx, ecx
test esi, esi
jbe 0x4035ce
mov al, byte [ecx + edi]
cmp al, 0x61
jb 0x40365b
cmp al, 0x7a
ja 0x40365b
sub al, 0x20
mov bl, 1
mov byte [ecx + edi], al
mov al, byte [ecx + edi]
cmp al, 0x41
jb 0x4035c7
cmp al, 0x5a
ja 0x4035c7
movzx eax, al
sub eax, 0x34
cdq
mov esi, 0x1a
idiv esi
mov esi, dword [esp + 0x20]
add dl, 0x41
test bl, bl
mov byte [ecx + edi], dl
je 0x4035c7
add dl, 0x20
mov byte [ecx + edi], dl
add ecx, 1
cmp ecx, esi
jb 0x403580
cmp dword [esp + 0x18], 0
mov ecx, esi
je 0x4035da
lea ecx, [esi - 1]
test ecx, ecx
jbe 0x403602
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
lea esp, [esp]
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x4035f0
movzx eax, byte [esp + 0x25]
mov cl, byte [esp + 0x1f]
mov dword [esp + 0x6c], eax
and eax, 0x80000007
jns 0x40361b
dec eax
or eax, 0xfffffff8
inc eax
test al, al
mov dword [esp + 0x2c], eax
jne 0x403625
mov al, 3
test cl, cl
jne 0x40362b
mov cl, 1
xor esi, esi
cmp dword [esp + 0x20], esi
jbe 0x403673
movzx ebx, cl
movzx ecx, al
lea esp, [esp]
xor edx, edx
mov eax, esi
div ebx
test edx, edx
jne 0x403662
mov dl, byte [esi + edi]
ror dl, cl
mov byte [esi + edi], dl
jmp 0x40366a
xor bl, bl
jmp 0x4034ce
xor bl, bl
jmp 0x40359a
mov al, byte [esi + edi]
rol al, cl
mov byte [esi + edi], al
add esi, 1
cmp esi, dword [esp + 0x20]
jb 0x403640
cmp dword [esp + 0x18], 0
mov edx, dword [esp + 0x20]
mov ecx, edx
je 0x403683
lea ecx, [edx - 1]
test ecx, ecx
jbe 0x4036a8
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403692
mov edx, dword [esp + 0x20]
mov cl, byte [esp + 0x25]
add cl, byte [esp + 0x1f]
xor eax, eax
test edx, edx
mov byte [esp + 0x27], cl
jbe 0x4036cd
lea ebx, [ebx]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, edx
jb 0x4036c0
cmp dword [esp + 0x18], 0
mov ecx, edx
je 0x4036d9
lea ecx, [edx - 1]
test ecx, ecx
jbe 0x4036fa
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x4036e8
test byte [esp + 0x17], 2
je 0x403732
cmp dword [esp + 0x18], 0
mov ecx, dword [esp + 0x20]
je 0x40370f
add ecx, 0xffffffff
test ecx, ecx
jbe 0x403732
add ecx, 0xffffffff
shr ecx, 1
lea eax, [edi + 1]
add ecx, 1
mov edi, edi
mov dl, byte [eax - 1]
mov bl, byte [eax]
mov byte [eax - 1], bl
mov byte [eax], dl
add eax, 2
sub ecx, 1
jne 0x403720
test byte [esp + 0x17], 1
je 0x40375d
mov cl, byte [esp + 0x25]
mov edx, dword [esp + 0x20]
or cl, 1
xor eax, eax
test edx, edx
jbe 0x40375d
lea ebx, [ebx]
xor byte [eax + edi], cl
add eax, 1
add cl, 0xc
cmp eax, edx
jb 0x403750
mov dword [esp + 0x4c], 0
lea eax, [esp + 0x38]
lea ecx, [esp + 0x4c]
call fcn.00404530
mov ebx, dword [esp + 0x20]
mov esi, 3
jmp 0x403780
mov eax, ebx
mov ecx, edi
lea edx, [esp + 0x4c]
call fcn.00404510
lea ecx, [esp + 0x4c]
push ecx
mov edx, str.Encryptor
call fcn.004044d0
sub esi, 1
jne 0x403780
test ebx, ebx
mov ecx, ebx
mov eax, edi
je 0x4037bb
lea esp, [esp]
mov byte [eax], 0
add eax, 1
sub ecx, 1
jne 0x4037b0
mov dword [esp + 0x48], 0
mov ecx, dword [esp + 0x58]
lea edx, [esp + 0x48]
push edx
mov byte [esp + 0xfc], 0xa
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x3c]
push 1
push eax
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x4037f2
call fcn.004044b0
jmp 0x4037f4
xor eax, eax
mov ebx, eax
call fcn.00402180
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp dword [esp + 0x28], ecx
jbe 0x40385c
lea eax, [esp + 0xc4]
push eax
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea ecx, [esp + 0xc8]
push ecx
mov dword [esp + 0xd0], 0xfffffffe
call fcn.004380aa
lea edx, [esp + 0xd4]
push edx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea eax, [esp + 0xd8]
push eax
mov dword [esp + 0xe0], 0xfffffffe
call fcn.004380aa
lea ecx, [esp + 0xe4]
push ecx
mov ecx, str.Unrecognized_data._n
call fcn.004045b0
push 0x44ef4c
lea edx, [esp + 0xe8]
push edx
mov dword [esp + 0xf0], 0xfffffffe
call fcn.004380aa
int3