Function at 0x401040
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Encode data using xor
Encrypt data using rc4 ksa
Get file size
Read file on windows
Resolve function by parsing pe exports
Terminate process
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xe74
mov eax, dword [0x493004]
xor eax, esp
mov dword [esp + 0xe70], eax
push ebx
push esi
mov esi, dword [ebp + 0xc]
xor edx, edx
push edi
xor edi, edi
mov dword [esp + 0xa0], esi
xor ecx, ecx
mov dword [esp + 0x4c], edi
push edx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x94], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x58], edx
call fcn.0040e0a1
add esp, 4
mov dword [esp + 0x6c], eax
push 1
call fcn.0040e0a1
add esp, 4
mov dword [esp + 0x70], eax
xor ebx, ebx
mov dword [esp + 0xbc], edi
mov dword [esp + 0x94], edi
mov dword [esp + 0x64], edi
push ebx
push 0x3e8
push ebx
push ebx
mov dword [esp + 0x40], ebx
mov dword [0x494550], ebx
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
mov dword [0x494538], eax
xorps xmm0, xmm0
mov eax, dword fs:[0x2c]
push ebx
push ebx
push ebx
mov eax, dword [eax]
mov dword [0x494548], ebx
mov dword [0x49454c], ebx
mov dword [0x494544], ebx
mov dword [0x494554], ebx
movups xmmword [0x494558], xmm0
mov dword [eax + 4], 0x494538
mov dword [0x49453c], ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x494540], eax
test eax, eax
jne 0x401177
or eax, 0xffffffff
mov ecx, 0x49453c
xchg dword [ecx], eax
test eax, eax
je 0x401147
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_SwitchToThread]
or eax, 0xffffffff
xchg dword [esi], eax
test eax, eax
jne 0x401131
mov esi, dword [esp + 0xa0]
cmp dword [0x494540], ebx
jne 0x401160
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x494540], eax
xor eax, eax
mov ecx, 0x49453c
xchg dword [ecx], eax
cmp eax, 0xffffffff
jne 0x402bf9
mov eax, dword [0x494540]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x402cea
push eax
push eax
push eax
mov dword [0x494510], ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ecx, dword [ebp + 8]
mov edx, esi
push str.rcdp:xy
mov dword [0x494514], eax
call fcn.00403770
add esp, 4
cmp al, 0xff
je 0x401353
cmp al, 0x63
je 0x401353
cmp al, 0x70
je 0x401353
cmp al, 0x64
je 0x401353
cmp al, 0x72
jne 0x401276
mov ecx, dword [ebp + 8]
mov edx, esi
push 0x42dea4
mov dword [esp + 0x80], 1
call fcn.00403770
mov cl, al
add esp, 4
cmp cl, 0xff
je 0x401234
mov eax, 1
xor edi, edi
cmp cl, 0x63
mov edx, esi
mov ecx, dword [ebp + 8]
cmove edi, eax
lea eax, [ebx + 1]
push 0x42dea4
cmovne ebx, eax
call fcn.00403770
mov cl, al
add esp, 4
mov eax, 1
cmp cl, 0xff
jne 0x401201
mov dword [esp + 0x94], edi
xor edi, edi
mov ecx, dword [0x493960]
mov eax, dword [esi + ecx*4]
test eax, eax
je 0x40124e
inc ecx
mov dword [esp + 0x44], eax
mov dword [0x493960], ecx
jmp 0x40124f
inc ebx
mov edx, dword [esi + ecx*4]
test edx, edx
je 0x401261
inc ecx
mov dword [esp + 0x40], edx
mov dword [0x493960], ecx
cmp dword [esi + ecx*4], 0
lea eax, [ebx + 1]
cmove eax, ebx
mov ebx, eax
mov dword [esp + 0x30], ebx
jmp 0x4013ef
cmp al, 0x78
jne 0x4012ee
mov ecx, dword [ebp + 8]
mov edx, esi
push 0x42dea6
call fcn.00403770
add esp, 4
mov dword [esp + 0x7c], 2
cmp eax, 0xffffffff
mov ecx, 1
mov eax, dword [0x493960]
cmovne ebx, ecx
mov ecx, ebx
mov edx, dword [esi + eax*4]
test edx, edx
je 0x4012b9
inc eax
mov dword [esp + 0x44], edx
mov dword [0x493960], eax
jmp 0x4012ba
inc ecx
mov edx, dword [esi + eax*4]
test edx, edx
je 0x4012cb
inc eax
mov dword [esp + 0x54], edx
mov dword [0x493960], eax
mov edx, dword [esi + eax*4]
test edx, edx
je 0x4012dc
inc eax
mov dword [esp + 0x40], edx
mov dword [0x493960], eax
cmp dword [esi + eax*4], edi
lea ebx, [ecx + 1]
cmove ebx, ecx
mov dword [esp + 0x30], ebx
jmp 0x4013ef
cmp al, 0x79
jne 0x4025f7
mov ecx, dword [ebp + 8]
mov edx, esi
push 0x42dea6
call fcn.00403770
add esp, 4
mov dword [esp + 0x7c], 3
cmp eax, 0xffffffff
mov ecx, 1
mov eax, dword [0x493960]
cmovne ebx, ecx
mov dword [esp + 0x30], ebx
mov ecx, dword [esi + eax*4]
test ecx, ecx
je 0x401337
inc eax
mov dword [esp + 0x44], ecx
mov dword [0x493960], eax
jmp 0x40133c
inc ebx
mov dword [esp + 0x30], ebx
mov edx, dword [esi + eax*4]
test edx, edx
je 0x4013d0
inc eax
mov dword [esp + 0x54], edx
mov dword [0x493960], eax
jmp 0x4013d0
mov dword [esp + 0x7c], ebx
cmp al, 0xff
je 0x4013b3
nop dword [eax + eax]
cmp al, 0x70
jne 0x401372
mov eax, dword [0x49458c]
mov dword [esp + 0x90], eax
jmp 0x401392
cmp al, 0x63
jne 0x401383
mov dword [esp + 0x94], 1
jmp 0x401392
cmp al, 0x64
jne 0x4013aa
mov dword [esp + 0xbc], 1
mov ecx, dword [ebp + 8]
mov edx, esi
push 0x42dea0
call fcn.00403770
add esp, 4
cmp al, 0xff
jne 0x401360
jmp 0x4013b3
mov ebx, 1
mov dword [esp + 0x30], ebx
mov eax, dword [0x493960]
mov ecx, dword [esi + eax*4]
test ecx, ecx
je 0x4013cb
inc eax
mov dword [esp + 0x38], ecx
mov dword [0x493960], eax
jmp 0x4013d0
inc ebx
mov dword [esp + 0x30], ebx
mov edx, dword [esi + eax*4]
test edx, edx
je 0x4013e1
inc eax
mov dword [esp + 0x40], edx
mov dword [0x493960], eax
cmp dword [esi + eax*4], edi
je 0x4013eb
inc ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x30]
test ebx, ebx
jne 0x402c03
mov eax, dword [esp + 0x38]
test eax, eax
je 0x401436
mov ecx, eax
call fcn.00402f43
mov dword [esp + 0x68], eax
test eax, eax
jne 0x401436
mov ecx, dword [esp + 0x38]
push ecx
push dword [esi]
push str._s:__s_is_not_a_known_cipher._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
mov ebx, 1
add esp, 0x10
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x401478
push 0x42e19c
push eax
call fcn.0040dfc2
add esp, 8
mov dword [esp + 0x6c], eax
test eax, eax
jne 0x401478
mov edx, dword [esp + 0x54]
push edx
push dword [esi]
push str._s:_Cannot_open__s_for_reading._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0x10
inc ebx
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4014ba
push 0x42e1c4
push eax
call fcn.0040dfc2
add esp, 8
mov dword [esp + 0x70], eax
test eax, eax
jne 0x4014ba
mov edx, dword [esp + 0x40]
push edx
push dword [esi]
push str._s:_Cannot_open__s_for_writing._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0x10
inc ebx
mov dword [esp + 0x30], ebx
cmp dword [esp + 0x44], 0
je 0x4014ea
cmp dword [esp + 0x90], 0
je 0x40151a
push dword [esi]
push str._s:__k_and__p_are_mutual_exclusive._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
inc ebx
mov dword [esp + 0x30], ebx
cmp dword [esp + 0x90], 0
je 0x40151a
cmp dword [esp + 0x7c], 0
je 0x40151a
push dword [esi]
push str._s:__p_is_only_allowed_when_a_key_is_generated._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
inc ebx
mov dword [esp + 0x30], ebx
cmp dword [esp + 0x44], 0
je 0x40263c
mov edi, dword [esp + 0x44]
lea edx, [esp + 0xa78]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x54], ecx
sub edx, edi
mov dword [esp + 0x40], eax
mov ecx, edi
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x401540
push 0
push 0x10000080
push 3
push 0
push 7
push 0x80000000
lea eax, [esp + 0xa90]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [esp + 0x48], eax
cmp eax, 0xffffffff
je 0x401645
lea ecx, [esp + 0xdc]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [esp + 0x38], eax
mov eax, dword [0x494534]
mov dword [esp + 0x64], eax
test eax, eax
jne 0x4015a8
call fcn.00404534
mov dword [esp + 0x64], eax
mov dword [0x494534], eax
mov ecx, eax
call fcn.00402df5
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x64]
lea edx, [edx + 1]
call fcn.004049d8
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x64]
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402cea
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0x34]
mov eax, dword [esp + 0x40]
push 0
push edx
push ecx
push eax
push dword [esp + 0x58]
mov byte [eax + ecx], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
neg eax
sbb eax, eax
and eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x38]
je 0x40161e
mov eax, dword [esp + 0x40]
test eax, eax
je 0x401616
mov edx, eax
xor ecx, ecx
call fcn.00404dcf
mov dword [esp + 0x40], 0
push dword [esp + 0x48]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x401645
mov ecx, eax
call fcn.00402f92
test eax, eax
jne 0x401665
push edi
push dword [esi]
push str._s:_The_file__s_does_not_contain_a_valid_key._n
jmp 0x40164d
push edi
push dword [esi]
push str._s:_Cannot_read_key_from_file__s_n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0x10
inc ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x40]
xor edi, edi
mov ecx, ebx
mov dword [esp + 0x64], edi
mov esi, ebx
mov dword [esp + 0x38], edi
call fcn.00402f92
test eax, eax
je 0x401751
mov al, byte [ebx]
test al, al
je 0x40169c
nop word [eax + eax]
cmp al, 0x20
je 0x40169c
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x401690
lea eax, [esp + 0x38]
mov edi, 4
mov dword [esp + 0x48], eax
mov al, byte [esi]
nop dword [eax + eax]
dec edi
cmp al, 0x20
jne 0x4016bd
mov al, byte [esi + 1]
inc esi
cmp al, 0x20
je 0x4016b5
movsx ecx, al
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x4016e5
lea eax, [ecx - 0x41]
cmp eax, 5
ja 0x4016d5
add ecx, 0xffffffc9
jmp 0x4016e5
lea eax, [ecx - 0x61]
cmp eax, 5
ja 0x4016e2
add ecx, 0xffffffa9
jmp 0x4016e5
or ecx, 0xffffffff
movsx edx, byte [esi + 1]
lea ebx, [edx - 0x30]
cmp ebx, 9
jbe 0x40170e
lea eax, [edx - 0x41]
cmp eax, 5
ja 0x4016fe
lea ebx, [edx - 0x37]
jmp 0x40170e
lea eax, [edx - 0x61]
cmp eax, 5
ja 0x40170b
lea ebx, [edx - 0x57]
jmp 0x40170e
or ebx, 0xffffffff
mov al, byte [esi + 2]
add esi, 2
cmp al, 0x20
jne 0x401720
mov al, byte [esi + 1]
inc esi
cmp al, 0x20
je 0x401718
mov edx, dword [esp + 0x48]
shl cl, 4
add cl, bl
mov byte [edx], cl
inc edx
mov dword [esp + 0x48], edx
test edi, edi
jne 0x4016b0
push dword [esp + 0x38]
call dword [sym.imp.WS2_32.dll_ntohl]
mov edi, eax
xor eax, eax
cmp byte [esi + 8], 0x20
cmovne edi, eax
mov dword [esp + 0x64], edi
test edi, edi
je 0x401e00
movsd xmm1, qword [0x490c98]
lea edx, [esp + 0x278]
push ecx
mov ecx, str.Key_passphrase_
movsd qword [esp + 0xc4], xmm1
call fcn.0040394d
mov esi, eax
add esp, 4
mov dword [esp + 0x54], esi
test esi, esi
je 0x401dda
movsd xmm0, qword [0x490ca0]
mov ebx, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
movsd qword [esp + 0xc8], xmm0
xor edi, edi
cmp esi, 1
jb 0x401c90
mov esi, dword [0x494534]
test esi, esi
jne 0x4017c6
call fcn.00404534
mov esi, eax
mov dword [0x494534], esi
mov ecx, esi
call fcn.00402df5
mov edx, 0x50
mov ecx, esi
call fcn.004049d8
push dword [esi + 4]
mov ebx, eax
mov dword [esp + 0x38], ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402cea
mov esi, dword [esp + 0x54]
lea ecx, [ebx + 0x20]
lea eax, [ebx + 0x40]
mov dword [ebx], edi
mov dword [ebx + 0x1c], eax
lea edx, [ebx + 4]
mov dword [ebx + 0x10], 0x20
xorps xmm0, xmm0
mov dword [ebx + 0x14], 0x10
xor edi, edi
mov dword [ebx + 0x18], ecx
mov dword [edx], 1
mov dword [ebx + 0xc], 6
movups xmmword [ecx], xmm0
mov byte [esp + 0x4c], 0x8f
movups xmmword [ecx + 0x10], xmm0
mov eax, dword [ebx + 0x14]
add eax, dword [ebx + 0x10]
mov dword [esp + 0xb8], eax
lea eax, [esi + 0xff]
shr eax, 8
mov byte [esp + 0x44], 0xb9
mov byte [esp + 0x29], 0x5b
mov byte [esp + 0x2a], 0xd8
lea ecx, [eax*8 + 0x249f0]
mov byte [esp + 0x2b], 0x36
mov dword [esp + 0x98], ecx
mov al, 0xd5
mov dword [esp + 0x48], eax
mov byte [esp + 0x16c], al
mov al, 0xc0
mov dword [esp + 0x5c], eax
mov byte [esp + 0x16d], al
mov al, 0xcd
mov dword [esp + 0x58], eax
mov byte [esp + 0x16e], al
mov al, 0x8f
mov dword [esp + 0x60], eax
mov ah, 0x92
mov byte [esp + 0x16f], al
mov byte [esp + 0x2c], 0x65
mov byte [esp + 0x2d], 0x6d
mov byte [esp + 0x2e], 0x43
mov byte [esp + 0x2f], 0xac
mov dword [esp + 0x80], edi
test ecx, ecx
je 0x401c5e
mov cl, 0x67
mov dl, 0x83
mov dword [esp + 0x38], ecx
jmp 0x4018d4
mov esi, dword [esp + 0x54]
mov al, byte [esp + edi + 0x278]
mov bl, dl
xor al, cl
movzx ebx, bl
xor ah, al
lea ecx, [edi + 2]
mov byte [esp + 0x160], ah
lea eax, [esp + 0x279]
add eax, edi
cmp ecx, esi
mov dword [esp + 0xb0], eax
movzx eax, dl
cmovb ebx, eax
sbb edx, edx
and edx, ecx
mov dword [esp + 0xac], ebx
mov dword [esp + 0xa8], edx
mov al, byte [esp + edx + 0x278]
xor al, byte [esp + 0x29]
xor al, bl
mov byte [esp + 0x161], al
lea eax, [edx + 2]
cmp eax, esi
mov dl, byte [esp + 0x2a]
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0xa4], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x4c]
xor dl, al
lea eax, [ecx + 2]
cmp eax, esi
mov cl, byte [esp + 0x2b]
mov byte [esp + 0x162], dl
sbb ebx, ebx
mov dl, byte [esp + 0x2c]
and ebx, eax
mov al, byte [esp + ebx + 0x278]
xor al, byte [esp + 0x44]
xor cl, al
lea eax, [ebx + 2]
cmp eax, esi
mov byte [esp + 0x163], cl
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0x84], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x48]
xor dl, al
lea eax, [ecx + 2]
cmp eax, esi
mov byte [esp + 0x164], dl
mov dl, byte [esp + 0x2d]
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0xb4], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x5c]
xor dl, al
lea eax, [ecx + 2]
mov cl, byte [esp + 0x2e]
cmp eax, esi
mov byte [esp + 0x165], dl
sbb edi, edi
and edi, eax
mov al, byte [esp + edi + 0x278]
xor al, byte [esp + 0x58]
xor cl, al
lea eax, [edi + 2]
cmp eax, esi
mov byte [esp + 0x166], cl
mov cl, byte [esp + 0x2f]
sbb esi, esi
and esi, eax
mov al, byte [esp + esi + 0x278]
xor al, byte [esp + 0x60]
xor cl, al
lea eax, [esi + 2]
cmp eax, dword [esp + 0x54]
mov byte [esp + 0x167], cl
sbb ecx, ecx
and ecx, eax
lea edx, [esp + 0x178]
mov dword [esp + 0x88], ecx
lea ecx, [esp + 0x160]
call fcn.00404199
mov eax, dword [esp + 0x44]
movzx edx, byte [esp + ebx + 0x279]
movzx eax, al
xor edx, eax
mov eax, dword [esp + 0xa4]
shl edx, 8
push 1
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x50]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0xac]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0xb0]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0x3c]
or edx, ecx
movzx ecx, al
mov eax, dword [esp + 0xb4]
shl edx, 8
movzx eax, byte [eax]
xor ecx, eax
mov eax, dword [esp + 0x64]
or edx, ecx
movzx eax, al
movzx ecx, byte [esp + edi + 0x27d]
mov dword [esp + 0x174], edx
movzx edx, byte [esp + esi + 0x27d]
xor edx, eax
mov eax, dword [esp + 0x5c]
movzx eax, al
xor ecx, eax
shl edx, 8
mov eax, dword [esp + 0xb8]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x60]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0x88]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x4c]
movzx eax, al
xor ecx, eax
or edx, ecx
lea ecx, [esp + 0x174]
mov dword [esp + 0x178], edx
lea edx, [esp + 0x17c]
call fcn.00406766
mov eax, dword [esp + 0x174]
add esp, 4
mov ecx, eax
mov dword [esp + 0x38], eax
shr ecx, 8
mov dword [esp + 0x84], ecx
mov ecx, eax
shr eax, 0x18
shr ecx, 0x10
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x174]
mov eax, ecx
shr eax, 8
mov dword [esp + 0x5c], eax
mov byte [esp + 0x16d], al
mov eax, ecx
shr eax, 0x10
mov dword [esp + 0x48], ecx
mov byte [esp + 0x16c], cl
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x80]
xor edx, edx
mov byte [esp + 0x16e], al
mov eax, ecx
shr eax, 0x18
mov dword [esp + 0x60], eax
mov byte [esp + 0x16f], al
mov eax, esi
div dword [esp + 0xb8]
mov ebx, dword [esp + 0x34]
inc esi
mov edi, dword [esp + 0x88]
mov dword [esp + 0x174], 0
mov dword [esp + 0x170], 0
mov eax, dword [ebx + 0x18]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov byte [edx + eax], bl
mov dl, byte [esp + 0x160]
mov eax, dword [esp + 0x38]
xor dl, al
mov al, byte [esp + 0x161]
mov byte [esp + 0x53], dl
mov edx, dword [esp + 0x84]
xor al, dl
mov byte [esp + 0x29], al
mov al, byte [esp + 0x162]
xor al, byte [esp + 0x4c]
mov byte [esp + 0x2a], al
mov al, byte [esp + 0x163]
xor al, bl
mov ah, byte [esp + 0x53]
mov ebx, dword [esp + 0x34]
mov byte [esp + 0x2b], al
mov al, byte [esp + 0x164]
xor al, cl
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x2c], al
mov al, byte [esp + 0x165]
xor al, byte [esp + 0x5c]
mov byte [esp + 0x2d], al
mov al, byte [esp + 0x166]
xor al, byte [esp + 0x58]
mov byte [esp + 0x2e], al
mov al, byte [esp + 0x167]
xor al, byte [esp + 0x60]
mov byte [esp + 0x2f], al
cmp esi, dword [esp + 0x98]
jb 0x4018d0
lea edx, [ebx + 4]
mov eax, dword [esp + 0x16c]
mov edi, eax
mov dword [ebx + 8], eax
nop word [eax + eax]
or eax, 0xffffffff
xchg dword [edx], eax
cmp eax, 0xffffffff
je 0x401c70
sub eax, 1
xchg dword [edx], eax
jne 0x401c8a
mov ecx, dword [ebx]
mov edx, ebx
call fcn.00404dcf
mov ebx, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
cmp dword [esp + 0x64], edi
je 0x401e00
movsd xmm1, qword [esp + 0xc0]
lea eax, [esp + 0xd4]
movaps xmm0, xmm1
addsd xmm1, xmm0
push eax
movsd qword [esp + 0xc4], xmm1
call ebx
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
add ecx, 0xb1fac000
adc edx, 0xfe612f4f
call fcn.00427820
divsd xmm0, qword [esp + 0xc8]
lea eax, [esp + 0x74]
push eax
addsd xmm0, qword [esp + 0xc4]
movsd qword [esp + 0x8c], xmm0
call ebx
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
add ecx, 0xb1fac000
adc edx, 0xfe612f4f
call fcn.00427820
divsd xmm0, qword [esp + 0xc8]
movsd xmm1, qword [esp + 0x88]
comisd xmm0, xmm1
jae 0x401db7
nop dword [eax]
nop word [eax + eax]
subsd xmm1, xmm0
sub esp, 8
movsd qword [esp + 0xa0], xmm1
fld qword [esp + 0xa0]
fstp qword [esp]
call fcn.00425400
fstp qword [esp + 0xa0]
cvttsd2si eax, qword [esp + 0xa0]
add esp, 8
imul eax, eax, 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [esp + 0x74]
push eax
call ebx
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
add ecx, 0xb1fac000
adc edx, 0xfe612f4f
call fcn.00427820
divsd xmm0, qword [esp + 0xc8]
movsd xmm1, qword [esp + 0x88]
comisd xmm0, xmm1
jb 0x401d40
push ecx
lea edx, [esp + 0x27c]
mov ecx, str.Key_passphrase_
call fcn.0040394d
mov esi, eax
mov dword [esp + 0x58], eax
add esp, 4
test esi, esi
jne 0x4017a4
mov eax, dword [esp + 0xa0]
push dword [eax]
push str._s:_The_passphrase_for_decryption_was_not_provided._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
jmp 0x402cfe
cmp dword [esp + 0x30], 0
jne 0x402cfe
mov esi, dword [esp + 0x40]
xor edi, edi
mov ecx, esi
mov dword [esp + 0x4c], edi
call fcn.00402f92
mov dword [esp + 0x160], eax
test eax, eax
je 0x4025e4
movzx eax, byte [eax + 0x42e3dc]
lea ebx, [esi + 1]
add ebx, eax
mov dword [esp + 0x48], edi
cmp byte [eax + esi + 9], 0x20
mov esi, dword [esp + 0x54]
je 0x401e53
test esi, esi
jne 0x401e5b
mov dword [esp + 0x4c], edi
jmp 0x4025e4
test esi, esi
je 0x4024bb
lea eax, [esp + 0x98]
mov edi, 4
mov dword [esp + 0x34], eax
mov al, byte [ebx]
nop dword [eax]
dec edi
cmp al, 0x20
jne 0x401e7d
mov al, byte [ebx + 1]
inc ebx
cmp al, 0x20
je 0x401e75
movsx ecx, al
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x401ea5
lea eax, [ecx - 0x41]
cmp eax, 5
ja 0x401e95
add ecx, 0xffffffc9
jmp 0x401ea5
lea eax, [ecx - 0x61]
cmp eax, 5
ja 0x401ea2
add ecx, 0xffffffa9
jmp 0x401ea5
or ecx, 0xffffffff
movsx edx, byte [ebx + 1]
lea eax, [edx - 0x30]
mov dword [esp + 0x88], eax
cmp eax, 9
ja 0x401ebc
mov edx, eax
jmp 0x401ed9
lea eax, [edx - 0x41]
cmp eax, 5
ja 0x401ec9
add edx, 0xffffffc9
jmp 0x401ed9
lea eax, [edx - 0x61]
cmp eax, 5
ja 0x401ed6
add edx, 0xffffffa9
jmp 0x401ed9
or edx, 0xffffffff
mov al, byte [ebx + 2]
add ebx, 2
cmp al, 0x20
jne 0x401eeb
mov al, byte [ebx + 1]
inc ebx
cmp al, 0x20
je 0x401ee3
shl cl, 4
add cl, dl
mov edx, dword [esp + 0x34]
mov byte [edx], cl
inc edx
mov dword [esp + 0x34], edx
test edi, edi
jne 0x401e70
push dword [esp + 0x98]
mov dword [esp + 0x50], ebx
call dword [sym.imp.WS2_32.dll_ntohl]
mov ecx, eax
mov dword [esp + 0x30], ecx
cmp esi, 1
jb 0x4023e7
mov edi, dword [0x494534]
mov dword [esp + 0x34], edi
test edi, edi
jne 0x401f42
call fcn.00404534
mov edi, eax
mov dword [esp + 0x34], edi
mov dword [0x494534], edi
mov ecx, edi
call fcn.00402df5
mov edx, 0x50
mov ecx, edi
call fcn.004049d8
mov edi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xa8], edi
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402cf4
lea ecx, [edi + 0x20]
mov dword [edi + 0x10], 0x20
lea eax, [edi + 0x40]
mov dword [edi + 0x14], 0x10
mov dword [edi + 0x1c], eax
xorps xmm0, xmm0
mov dword [edi + 0x18], ecx
mov dword [edi], 0
mov dword [edi + 4], 1
mov dword [edi + 0xc], 6
movups xmmword [ecx], xmm0
mov byte [esp + 0x38], 0x8f
movups xmmword [ecx + 0x10], xmm0
mov eax, dword [edi + 0x14]
add eax, dword [edi + 0x10]
mov dword [esp + 0xac], eax
lea eax, [esi + 0xff]
shr eax, 8
mov byte [esp + 0x44], 0xb9
mov byte [esp + 0x2f], 0x5b
mov byte [esp + 0x2e], 0xd8
lea ecx, [eax*8 + 0x249f0]
mov byte [esp + 0x2d], 0x36
mov dword [esp + 0xa4], ecx
mov al, 0xd5
mov dword [esp + 0x48], eax
mov byte [esp + 0x174], al
mov al, 0xc0
mov dword [esp + 0x60], eax
mov byte [esp + 0x175], al
mov al, 0xcd
mov dword [esp + 0x58], eax
mov byte [esp + 0x176], al
mov al, 0x8f
mov dword [esp + 0x5c], eax
mov ah, 0x92
mov byte [esp + 0x177], al
mov byte [esp + 0x2c], 0x65
mov byte [esp + 0x2b], 0x6d
mov byte [esp + 0x2a], 0x43
mov byte [esp + 0x29], 0xac
mov dword [esp + 0x34], 0
mov dword [esp + 0x80], 0
test ecx, ecx
je 0x4023d9
mov cl, 0x67
mov dl, 0x83
mov dword [esp + 0x40], ecx
mov byte [esp + 0x3f], dl
nop dword [eax]
mov ebx, dword [esp + 0x34]
mov al, byte [esp + ebx + 0x278]
xor al, ah
xor al, cl
lea ecx, [ebx + 2]
mov byte [esp + 0x168], al
lea eax, [esp + 0x279]
add eax, ebx
movzx ebx, byte [esp + 0x3f]
cmp ecx, esi
mov dword [esp + 0x84], eax
movzx eax, dl
cmovb ebx, eax
sbb edx, edx
and edx, ecx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0x98], edx
mov al, byte [esp + edx + 0x278]
xor al, byte [esp + 0x2f]
xor al, bl
mov byte [esp + 0x169], al
lea eax, [edx + 2]
cmp eax, esi
mov dl, byte [esp + 0x2e]
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0x88], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x38]
xor dl, al
lea eax, [ecx + 2]
cmp eax, esi
mov cl, byte [esp + 0x2d]
mov byte [esp + 0x16a], dl
sbb ebx, ebx
mov dl, byte [esp + 0x2c]
and ebx, eax
mov al, byte [esp + ebx + 0x278]
xor al, byte [esp + 0x44]
xor cl, al
lea eax, [ebx + 2]
cmp eax, esi
mov byte [esp + 0x16b], cl
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0xb0], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x48]
xor dl, al
lea eax, [ecx + 2]
cmp eax, esi
mov byte [esp + 0x16c], dl
mov dl, byte [esp + 0x2b]
sbb ecx, ecx
and ecx, eax
mov dword [esp + 0xb4], ecx
mov al, byte [esp + ecx + 0x278]
xor al, byte [esp + 0x60]
xor dl, al
lea eax, [ecx + 2]
mov cl, byte [esp + 0x2a]
cmp eax, esi
mov byte [esp + 0x16d], dl
sbb edi, edi
and edi, eax
mov al, byte [esp + edi + 0x278]
xor al, byte [esp + 0x58]
xor cl, al
lea eax, [edi + 2]
cmp eax, esi
mov byte [esp + 0x16e], cl
mov cl, byte [esp + 0x29]
sbb esi, esi
and esi, eax
mov al, byte [esp + esi + 0x278]
xor al, byte [esp + 0x5c]
xor cl, al
lea eax, [esi + 2]
cmp eax, dword [esp + 0x54]
mov byte [esp + 0x16f], cl
sbb ecx, ecx
and ecx, eax
lea edx, [esp + 0x178]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x168]
call fcn.00404199
mov eax, dword [esp + 0x44]
movzx edx, byte [esp + ebx + 0x279]
movzx eax, al
xor edx, eax
mov eax, dword [esp + 0x88]
shl edx, 8
push 1
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x3c]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0x9c]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0xbc]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0x44]
or edx, ecx
movzx ecx, al
mov eax, dword [esp + 0x88]
shl edx, 8
movzx eax, byte [eax]
xor ecx, eax
mov eax, dword [esp + 0x60]
or edx, ecx
movzx eax, al
movzx ecx, byte [esp + edi + 0x27d]
mov dword [esp + 0x78], edx
movzx edx, byte [esp + esi + 0x27d]
xor edx, eax
mov eax, dword [esp + 0x5c]
movzx eax, al
xor ecx, eax
shl edx, 8
mov eax, dword [esp + 0xb8]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x64]
movzx eax, al
xor ecx, eax
mov eax, dword [esp + 0xb4]
or edx, ecx
shl edx, 8
movzx ecx, byte [esp + eax + 0x27d]
mov eax, dword [esp + 0x4c]
movzx eax, al
xor ecx, eax
or edx, ecx
lea ecx, [esp + 0x78]
mov dword [esp + 0x7c], edx
lea edx, [esp + 0x17c]
call fcn.00406766
mov eax, dword [esp + 0x78]
add esp, 4
mov ecx, eax
mov dword [esp + 0x40], eax
shr ecx, 8
mov dword [esp + 0x88], ecx
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x78]
mov ebx, ecx
mov dword [esp + 0x44], eax
mov eax, ecx
shr ebx, 8
shr eax, 0x10
mov dword [esp + 0x48], ecx
mov byte [esp + 0x174], cl
mov dword [esp + 0x60], ebx
mov byte [esp + 0x175], bl
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x80]
xor edx, edx
mov byte [esp + 0x176], al
mov eax, ecx
shr eax, 0x18
mov dword [esp + 0x5c], eax
mov byte [esp + 0x177], al
mov eax, esi
div dword [esp + 0xac]
mov edi, dword [esp + 0xa8]
inc esi
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x80], esi
mov dword [esp + 0x78], 0
mov eax, dword [edi + 0x18]
mov dword [esp + 0x74], 0
mov byte [edx + eax], bl
mov dl, byte [esp + 0x168]
mov eax, dword [esp + 0x40]
xor dl, al
mov al, byte [esp + 0x169]
mov byte [esp + 0x53], dl
mov edx, dword [esp + 0x88]
xor al, dl
mov byte [esp + 0x2f], al
mov al, byte [esp + 0x16a]
xor al, byte [esp + 0x38]
mov byte [esp + 0x2e], al
mov al, byte [esp + 0x16b]
xor al, bl
mov ah, byte [esp + 0x53]
mov ebx, dword [esp + 0x60]
mov byte [esp + 0x2d], al
mov al, byte [esp + 0x16c]
xor al, cl
mov byte [esp + 0x3f], dl
mov ecx, dword [esp + 0x40]
mov byte [esp + 0x2c], al
mov al, byte [esp + 0x16d]
xor al, bl
mov byte [esp + 0x2b], al
mov al, byte [esp + 0x16e]
xor al, byte [esp + 0x58]
mov byte [esp + 0x2a], al
mov al, byte [esp + 0x16f]
xor al, byte [esp + 0x5c]
cmp esi, dword [esp + 0xa4]
mov esi, dword [esp + 0x54]
mov byte [esp + 0x29], al
jb 0x402060
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x174]
mov ecx, dword [esp + 0x30]
mov dword [edi + 8], eax
xor eax, eax
test edi, edi
je 0x4023f0
mov eax, dword [edi + 8]
cmp ecx, eax
je 0x402406
mov ecx, edi
call fcn.0040327e
xor edi, edi
mov dword [esp + 0x4c], edi
jmp 0x4025e4
xor esi, esi
mov dword [esp + 0x48], esi
test edi, edi
je 0x402496
mov esi, dword [0x494534]
mov dword [esp + 0x34], esi
test esi, esi
jne 0x402433
call fcn.00404534
mov esi, eax
mov dword [esp + 0x34], esi
mov dword [0x494534], esi
mov ecx, esi
call fcn.00402df5
mov edx, 0x214
mov ecx, esi
call fcn.004049d8
mov esi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x48], esi
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402cf4
mov dword [esi], 0
lea ecx, [edi + 4]
mov dword [esi + 4], 1
or eax, 0xffffffff
xchg dword [ecx], eax
cmp eax, 0xffffffff
je 0x402471
inc eax
xchg dword [ecx], eax
mov dword [esi + 8], edi
mov eax, dword [edi + 0xc]
push esi
mov eax, dword [eax*4 + 0x42e348]
mov dword [esi + 0xc], eax
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0xe0], esi
lea ecx, [esp + 0xe0]
mov eax, dword [esi + 0xc]
push 0
push 0
push ecx
mov eax, dword [eax + 4]
call eax
add esp, 0xc
mov ecx, edi
call fcn.0040327e
mov edx, dword [esp + 0x160]
call fcn.00402eeb
mov edi, eax
mov esi, 4
mov dword [esp + 0x4c], edi
lea eax, [edi + 8]
mov dword [esp + 0x34], eax
nop dword [eax]
mov al, byte [ebx]
dec esi
cmp al, 0x20
jne 0x4024ef
mov al, byte [ebx + 1]
inc ebx
cmp al, 0x20
je 0x4024e7
movsx ecx, al
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x402517
lea eax, [ecx - 0x41]
cmp eax, 5
ja 0x402507
add ecx, 0xffffffc9
jmp 0x402517
lea eax, [ecx - 0x61]
cmp eax, 5
ja 0x402514
add ecx, 0xffffffa9
jmp 0x402517
or ecx, 0xffffffff
movsx edx, byte [ebx + 1]
lea eax, [edx - 0x30]
cmp eax, 9
jbe 0x402540
lea eax, [edx - 0x41]
cmp eax, 5
ja 0x402530
lea eax, [edx - 0x37]
jmp 0x402540
lea eax, [edx - 0x61]
cmp eax, 5
ja 0x40253d
lea eax, [edx - 0x57]
jmp 0x402540
or eax, 0xffffffff
add ebx, 2
cmp byte [ebx], 0x20
jne 0x40254e
inc ebx
cmp byte [ebx], 0x20
je 0x402548
mov edx, dword [esp + 0x34]
shl cl, 4
add cl, al
mov byte [edx], cl
inc edx
mov dword [esp + 0x34], edx
test esi, esi
jne 0x4024e0
push dword [edi + 8]
lea esi, [edi + 8]
call dword [sym.imp.WS2_32.dll_ntohl]
push dword [edi + 0x10]
mov ecx, dword [edi + 0x18]
mov edx, ebx
mov dword [esi], eax
call fcn.00402ea1
mov ecx, dword [edi + 0x1c]
add esp, 4
mov edx, eax
push dword [edi + 0x14]
call fcn.00402ea1
mov ebx, dword [esp + 0x4c]
add esp, 4
test ebx, ebx
je 0x4025e4
mov eax, dword [esp + 0xe0]
lea ecx, [esp + 0xe0]
push 4
push esi
push esi
mov eax, dword [eax + 0xc]
push ecx
mov eax, dword [eax + 0xc]
call eax
mov eax, dword [esp + 0xf0]
mov edx, dword [edi + 0x18]
mov esi, dword [eax + 0xc]
mov eax, dword [edi + 0x14]
add eax, dword [edi + 0x10]
push eax
push edx
push edx
lea eax, [esp + 0xfc]
push eax
mov eax, dword [esi + 0xc]
call eax
add esp, 0x20
mov ecx, ebx
call fcn.00402dc6
mov esi, dword [esp + 0xa0]
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x402961
cmp dword [esp + 0x94], 0
mov dword [esp + 0x34], 0
je 0x402646
push ecx
lea edx, [esp + 0x27c]
mov ecx, str.Output_pasephrase_
call fcn.0040394d
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
jne 0x402646
mov esi, dword [esi]
push 2
call fcn.0040e0a1
add esp, 4
mov ecx, str._s:_The_passphrase_required_for_encryption_was_not_provided._n
jmp 0x4028dc
test ebx, ebx
jne 0x402cfe
jmp 0x4025eb
cmp dword [esp + 0xbc], 0
je 0x402725
mov ecx, dword [esp + 0x68]
xor edi, edi
lea eax, [ecx - 1]
cmp eax, 7
ja 0x4028a5
movzx edi, byte [ecx + 0x42e3a0]
mov esi, dword [0x494534]
movzx ebx, byte [ecx + 0x42e394]
mov dword [esp + 0x160], edi
test esi, esi
jne 0x402692
call fcn.00404534
mov esi, eax
mov dword [0x494534], esi
mov ecx, esi
call fcn.00402df5
lea edx, [edi + 0x20]
mov ecx, esi
add edx, ebx
call fcn.004049d8
push dword [esi + 4]
mov edi, eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402d05
mov ecx, dword [esp + 0x160]
lea eax, [edi + 0x20]
mov edx, dword [esp + 0x68]
mov dword [edi], 0
mov dword [edi + 4], 1
mov dword [edi + 0xc], edx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], eax
test ecx, ecx
je 0x4026ea
lea eax, [ebx + 0x20]
add eax, edi
jmp 0x4026ec
xor eax, eax
push ebx
mov dword [edi + 0x1c], eax
shl edx, 0x1c
push 0x42e3ac
push dword [edi + 0x18]
or edx, 1
mov dword [edi + 8], edx
call fcn.0040d060
mov eax, dword [edi + 0x10]
add esp, 0xc
add eax, 0x42e3ac
push dword [edi + 0x14]
push eax
push dword [edi + 0x1c]
call fcn.0040d060
add esp, 0xc
jmp 0x4028a5
mov edx, dword [esp + 0x90]
test edx, edx
je 0x402752
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402735
sub ecx, esi
push ecx
mov ecx, dword [esp + 0x6c]
call fcn.0040323d
add esp, 4
mov edi, eax
jmp 0x4028a5
mov ecx, dword [esp + 0x68]
xor edi, edi
lea eax, [ecx - 1]
cmp eax, 7
ja 0x4028a5
movzx edi, byte [ecx + 0x42e3a0]
mov esi, dword [0x494534]
movzx ebx, byte [ecx + 0x42e394]
mov dword [esp + 0x160], edi
test esi, esi
jne 0x402790
call fcn.00404534
mov esi, eax
mov dword [0x494534], esi
mov ecx, esi
call fcn.00402df5
lea edx, [edi + 0x20]
mov ecx, esi
add edx, ebx
call fcn.004049d8
push dword [esi + 4]
mov edi, eax
mov dword [esp + 0x50], edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402d05
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x160]
mov dword [edi + 0xc], eax
lea eax, [edi + 0x20]
mov dword [edi], 0
mov dword [edi + 4], 1
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], eax
test ecx, ecx
je 0x4027ec
lea eax, [ebx + 0x20]
add eax, edi
jmp 0x4027ee
xor eax, eax
push 0
mov dword [edi + 0x1c], eax
call fcn.004124a8
add esp, 4
push eax
call fcn.00412411
add esp, 4
xor esi, esi
call fcn.004123f0
mov byte [esi + edi + 8], al
inc esi
cmp esi, 4
jb 0x402806
mov eax, dword [edi + 8]
mov ecx, dword [esp + 0x68]
and eax, 0xfffffff
mov ebx, dword [edi + 0x10]
shl ecx, 0x1c
or eax, ecx
mov dword [edi + 8], eax
mov eax, dword [edi + 0x18]
push 0
mov dword [esp + 0x164], eax
call fcn.004124a8
add esp, 4
push eax
call fcn.00412411
add esp, 4
xor esi, esi
test ebx, ebx
je 0x402867
mov edi, dword [esp + 0x160]
call fcn.004123f0
mov byte [esi + edi], al
inc esi
cmp esi, ebx
jb 0x402856
mov edi, dword [esp + 0x4c]
mov eax, dword [edi + 0x1c]
mov ebx, dword [edi + 0x14]
push 0
mov dword [esp + 0x164], eax
call fcn.004124a8
add esp, 4
push eax
call fcn.00412411
add esp, 4
xor esi, esi
test ebx, ebx
je 0x4028a5
mov edi, dword [esp + 0x160]
call fcn.004123f0
mov byte [esi + edi], al
inc esi
cmp esi, ebx
jb 0x402894
mov edi, dword [esp + 0x4c]
push ecx
lea eax, [esp + 0x17c]
push eax
push dword [esp + 0x3c]
xor eax, eax
lea edx, [esp + 0x284]
cmp dword [esp + 0x70], eax
cmovne edx, eax
mov ecx, edi
call fcn.00403315
mov eax, dword [esp + 0x7c]
lea esi, [esp + 0x184]
add esp, 0xc
mov ecx, 0x42e340
push esi
push ecx
push eax
call fcn.00401010
add esp, 0xc
mov ebx, dword [esp + 0x6c]
test ebx, ebx
je 0x402906
push 0
call fcn.0040e0a1
add esp, 4
cmp ebx, eax
je 0x402906
push ebx
call fcn.0040e19c
add esp, 4
mov ebx, dword [esp + 0x70]
test ebx, ebx
je 0x402925
push 1
call fcn.0040e0a1
add esp, 4
cmp ebx, eax
je 0x402925
push ebx
call fcn.0040e19c
add esp, 4
test edi, edi
je 0x40294a
lea ecx, [edi + 4]
nop dword [eax]
or eax, 0xffffffff
xchg dword [ecx], eax
cmp eax, 0xffffffff
je 0x402930
sub eax, 1
xchg dword [ecx], eax
jne 0x40294a
mov ecx, dword [edi]
mov edx, edi
call fcn.00404dcf
mov ecx, dword [esp + 0xe7c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040b964
mov esp, ebp
pop ebp
ret
cmp eax, 1
jne 0x4029a4
xor eax, eax
cmp dword [esp + 0x94], eax
je 0x40298e
push ecx
lea edx, [esp + 0x27c]
mov ecx, str.Output_pasephrase_
call fcn.0040394d
add esp, 4
test eax, eax
je 0x402626
push ecx
lea ecx, [esp + 0x17c]
push ecx
push eax
lea edx, [esp + 0x284]
jmp 0x4028c2
cmp eax, 2
jne 0x402ac9
xor esi, esi
test edi, edi
je 0x402a25
mov ebx, dword [0x494534]
test ebx, ebx
jne 0x4029ca
call fcn.00404534
mov ebx, eax
mov dword [0x494534], ebx
mov ecx, ebx
call fcn.00402df5
mov edx, 0x214
mov ecx, ebx
call fcn.004049d8
push dword [ebx + 4]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402d0f
mov dword [esi], 0
lea ecx, [edi + 4]
mov dword [esi + 4], 1
or eax, 0xffffffff
xchg dword [ecx], eax
cmp eax, 0xffffffff
je 0x402a00
inc eax
xchg dword [ecx], eax
mov dword [esi + 8], edi
mov eax, dword [edi + 0xc]
push esi
mov eax, dword [eax*4 + 0x42e348]
mov dword [esi + 0xc], eax
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x178], esi
lea ecx, [esp + 0x178]
mov eax, dword [esi + 0xc]
push 0
push 0
push ecx
mov eax, dword [eax + 4]
call eax
mov ebx, dword [esp + 0x78]
lea eax, [esp + 0xa84]
add esp, 0xc
push ebx
push 0x400
push 1
push eax
call fcn.004102d5
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4028eb
mov edi, dword [esp + 0x70]
nop dword [eax]
mov ecx, dword [esp + 0x178]
push esi
mov eax, dword [ecx + 0xc]
lea ecx, [esp + 0xa7c]
push ecx
push ecx
lea ecx, [esp + 0x184]
mov eax, dword [eax + 8]
push ecx
call eax
push edi
push esi
lea eax, [esp + 0xa90]
push 1
push eax
call fcn.00410088
push ebx
push 0x400
lea eax, [esp + 0xaa0]
push 1
push eax
call fcn.004102d5
mov esi, eax
add esp, 0x30
test esi, esi
jne 0x402a70
mov edi, dword [esp + 0x4c]
jmp 0x4028eb
cmp eax, 3
jne 0x4028e7
xor esi, esi
test edi, edi
je 0x402b55
mov ebx, dword [0x494534]
test ebx, ebx
jne 0x402af3
call fcn.00404534
mov ebx, eax
mov dword [0x494534], ebx
mov ecx, ebx
call fcn.00402df5
mov edx, 0x214
mov ecx, ebx
call fcn.004049d8
push dword [ebx + 4]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test eax, eax
je 0x402d19
mov dword [esi], 0
lea ecx, [edi + 4]
mov dword [esi + 4], 1
nop dword [eax]
or eax, 0xffffffff
xchg dword [ecx], eax
cmp eax, 0xffffffff
je 0x402b30
inc eax
xchg dword [ecx], eax
mov dword [esi + 8], edi
mov eax, dword [edi + 0xc]
push esi
mov eax, dword [eax*4 + 0x42e348]
mov dword [esi + 0xc], eax
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x178], esi
lea ecx, [esp + 0x178]
mov eax, dword [esi + 0xc]
push 0
push 0
push ecx
mov eax, dword [eax + 4]
call eax
mov ebx, dword [esp + 0x78]
lea eax, [esp + 0xa84]
add esp, 0xc
push ebx
push 0x400
push 1
push eax
call fcn.004102d5
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4028eb
mov edi, dword [esp + 0x70]
nop dword [eax]
mov ecx, dword [esp + 0x178]
push esi
mov eax, dword [ecx + 0xc]
lea ecx, [esp + 0xa7c]
push ecx
push ecx
lea ecx, [esp + 0x184]
mov eax, dword [eax + 0xc]
push ecx
call eax
push edi
push esi
lea eax, [esp + 0xa90]
push 1
push eax
call fcn.00410088
push ebx
push 0x400
lea eax, [esp + 0xaa0]
push 1
push eax
call fcn.004102d5
mov esi, eax
add esp, 0x30
test esi, esi
jne 0x402ba0
mov edi, dword [esp + 0x4c]
jmp 0x4028eb
push str.fssmpslUnlock:_Broken_lock
call fcn.00403ec8
push dword [esi]
push str.Usage:__s______c____p__pincode____ccsc__des__xor__aes128_aes192__aes256____key_filename___n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
push dword [esi]
push str.________s__r___c_____key_filename____key_filename____n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
push dword [esi]
push str.________s__x___key_filename______input_filename____output_filename___n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
push dword [esi]
push str.________s__y___key_filename______input_filename____output_filename___n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
push str.The_first_form_generates_a_key_for_the_cipher_provided._If_the__key_filename__n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 8
push str.is_provided_the_key_is_written_to_that_file__otherwise_it_is_written_to_stdout._n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 8
push str.If_the__c_option_is_provided__the_key_is_encrypted_before_it_is_written._You_will_n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 8
push str.prompted_for_the_pass_phrase_used_to_protect_the_generated_key._The_second_form__n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 8
push str.ecrypts_or_decrypts_a_key._The_third_and_fourth_form_encrypts_or_decrypts_a_file.__n
push 2
call fcn.0040e0a1
add esp, 4
push eax
call fcn.00401010
add esp, 8
push 1
call fcn.0040deff
push str.fstLockSystemMutex:_Mutex_was_abadoned
call fcn.00403ec8
push str.fstLockSystemMutex:_Mutex_was_abadoned
call fcn.00403ec8
push 1
call fcn.0040deff
push str.fstLockSystemMutex:_Mutex_was_abadoned
call fcn.00403ec8
push str.fstLockSystemMutex:_Mutex_was_abadoned
call fcn.00403ec8
push str.fstLockSystemMutex:_Mutex_was_abadoned
call fcn.00403ec8
int3