Function at 0x45e950
Capabilities:
Check if file exists
Encode data using xor
Get file attributes

Disassembly:
push 0xffffffffffffffff
push 0x4db12b
mov eax, dword fs:[0]
push eax
mov eax, 0x4e8
call fcn.00468d20
mov eax, dword [0x5808f0]
xor eax, esp
mov dword [esp + 0x4e4], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5808f0]
xor eax, esp
push eax
lea eax, [esp + 0x4fc]
mov dword fs:[0], eax
mov esi, dword [esp + 0x50c]
mov eax, dword [esp + 0x510]
mov ebp, ecx
mov ebx, 7
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x478], ebx
mov dword [esp + 0x474], edi
mov word [esp + 0x464], cx
xor edx, edx
mov dword [esp + 0x504], edi
mov dword [esp + 0x494], ebx
mov dword [esp + 0x490], edi
mov word [esp + 0x480], dx
mov dword [esp + 0x4b0], ebx
mov dword [esp + 0x4ac], edi
mov word [esp + 0x49c], cx
mov byte [esp + 0x504], 2
cmp byte [ebp + 0xa9], dl
jne 0x45eaa5
mov edx, dword [esp + 0x514]
push edx
push eax
push esi
mov ecx, ebp
call fcn.0041ca10
mov esi, 8
cmp dword [esp + 0x4b0], esi
jb 0x45ea42
mov eax, dword [esp + 0x49c]
push eax
call fcn.004699ce
add esp, 4
xor ecx, ecx
mov dword [esp + 0x4b0], ebx
mov dword [esp + 0x4ac], edi
mov word [esp + 0x49c], cx
cmp dword [esp + 0x494], esi
jb 0x45ea73
mov edx, dword [esp + 0x480]
push edx
call fcn.004699ce
add esp, 4
xor eax, eax
mov dword [esp + 0x494], ebx
mov dword [esp + 0x490], edi
mov word [esp + 0x480], ax
cmp dword [esp + 0x478], esi
jb 0x45f1bb
mov ecx, dword [esp + 0x464]
push ecx
jmp 0x45f1b3
mov eax, esi
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x45eab0
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [esp + 0x468]
call fcn.0041c510
lea ecx, [ecx]
mov ecx, dword [ebp + 0x18]
mov ebx, 8
cmp dword [ebp + 0x1c], ebx
jb 0x45eae2
mov eax, dword [ebp + 8]
jmp 0x45eae5
lea eax, [ebp + 8]
push ecx
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x46c]
call fcn.0041b940
cmp eax, 0xffffffff
je 0x45ef79
push eax
push edi
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x46c]
call fcn.0041c930
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0x46c]
mov byte [esp + 0x510], 3
call fcn.0041c410
mov byte [esp + 0x504], 2
cmp dword [esp + 0x38], ebx
jb 0x45eb44
mov eax, dword [esp + 0x24]
push eax
call fcn.004699ce
add esp, 4
push 1
push 0xffffffffffffffff
push 0x4e174c
lea ecx, [esp + 0x46c]
call fcn.0041b940
mov esi, eax
cmp esi, 0xffffffff
je 0x45ebf6
push 0xffffffffffffffff
lea ecx, [esi + 1]
push ecx
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x46c]
call fcn.0041c930
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0x488]
mov byte [esp + 0x510], 4
call fcn.0041c410
mov byte [esp + 0x504], 2
cmp dword [esp + 0x38], ebx
jb 0x45ebae
mov eax, dword [esp + 0x24]
push eax
call fcn.004699ce
add esp, 4
push esi
push edi
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x46c]
call fcn.0041c930
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0x46c]
mov byte [esp + 0x510], 5
call fcn.0041c410
mov byte [esp + 0x504], 2
cmp dword [esp + 0x38], ebx
jb 0x45ec19
mov edx, dword [esp + 0x24]
push edx
call fcn.004699ce
add esp, 4
jmp 0x45ec19
lea ecx, [esp + 0x460]
call fcn.0041c620
push 0xffffffffffffffff
push edi
lea eax, [esp + 0x468]
push eax
lea ecx, [esp + 0x488]
call fcn.0041c410
mov ecx, dword [esp + 0x490]
inc ecx
push ecx
call fcn.004691cd
mov edi, eax
add esp, 4
test edi, edi
je 0x45eff3
mov ecx, dword [esp + 0x480]
cmp dword [esp + 0x494], ebx
jae 0x45ec4b
lea ecx, [esp + 0x480]
mov eax, dword [esp + 0x490]
push eax
push edi
push eax
push ecx
call fcn.0041a9c0
add esp, 0x10
push str.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_
lea ecx, [esp + 0x4b8]
call fcn.004034d0
mov edx, dword [esp + 0x490]
push edi
push edx
push edi
lea ecx, [esp + 0x4c0]
call fcn.00403570
mov esi, eax
test esi, esi
je 0x45f090
lea eax, [ebp + 0x24]
push eax
lea ecx, [esp + 0x5c]
push 0x80
push ecx
call fcn.004d0170
push edi
push edi
lea edx, [esp + 0x6c]
push esi
push edx
call fcn.004d0000
add esp, 0x1c
cmp byte [ebp + 0xa8], 0
je 0x45eccf
xor eax, eax
test esi, esi
jle 0x45eccf
mov cl, byte [ebp + 0xa8]
xor byte [eax + edi], cl
inc eax
cmp eax, esi
jl 0x45ecc1
lea edx, [esi + esi + 2]
push edx
mov byte [esi + edi], 0
call fcn.004691cd
add esp, 4
push esi
mov ebp, eax
push ebp
push esi
push edi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x4e174c
lea ecx, [esp + 0x464]
push ecx
lea edx, [esp + 0x44]
xor eax, eax
push edx
mov word [ebp + esi*2], ax
call fcn.0042cd00
push ebp
push eax
lea eax, [esp + 0x34]
push eax
mov byte [esp + 0x51c], 6
call fcn.0042cd00
add esp, 0x18
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x46c]
mov byte [esp + 0x510], 7
call fcn.0041c410
cmp dword [esp + 0x38], ebx
jb 0x45ed51
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004699ce
add esp, 4
xor edx, edx
mov dword [esp + 0x38], 7
mov dword [esp + 0x34], 0
mov word [esp + 0x24], dx
mov byte [esp + 0x504], 2
cmp dword [esp + 0x54], ebx
jb 0x45ed83
mov eax, dword [esp + 0x40]
push eax
call fcn.004699ce
add esp, 4
push 1
push 0xffffffffffffffff
push 0x4e1750
lea ecx, [esp + 0x46c]
call fcn.0041b940
push 1
push 0xffffffffffffffff
push 0x4e174c
lea ecx, [esp + 0x46c]
mov esi, eax
call fcn.0041b940
cmp dword [esp + 0x478], 8
mov ebx, eax
mov eax, dword [esp + 0x464]
jae 0x45edc9
lea eax, [esp + 0x464]
mov ecx, dword [esp + 0x514]
mov edx, dword [esp + 0x14]
push eax
push ecx
push edx
call fcn.0046a38b
add esp, 0xc
cmp esi, 0xffffffff
je 0x45ee85
cmp esi, ebx
jbe 0x45ee85
push 0xffffffffffffffff
push esi
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x46c]
call fcn.0041c930
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x4a4]
mov byte [esp + 0x510], 8
call fcn.0041c410
mov ebx, 8
mov byte [esp + 0x504], 2
cmp dword [esp + 0x54], ebx
jb 0x45ee3d
mov ecx, dword [esp + 0x40]
push ecx
call fcn.004699ce
add esp, 4
push esi
push 0
lea edx, [esp + 0x44]
push edx
lea ecx, [esp + 0x46c]
call fcn.0041c930
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x46c]
mov byte [esp + 0x510], 9
call fcn.0041c410
mov byte [esp + 0x504], 2
cmp dword [esp + 0x54], ebx
jb 0x45ee85
mov eax, dword [esp + 0x40]
push eax
call fcn.004699ce
add esp, 4
mov ebx, dword [esp + 0x14]
push ebx
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x45eef9
jmp 0x45eea0
mov ecx, dword [esp + 0x49c]
mov eax, 8
cmp dword [esp + 0x4b0], eax
jae 0x45eebc
lea ecx, [esp + 0x49c]
cmp dword [esp + 0x478], eax
mov eax, dword [esp + 0x464]
jae 0x45eed3
lea eax, [esp + 0x464]
push ecx
mov ecx, dword [esp + 0x518]
push esi
push eax
push str._s__d__s
push ecx
push ebx
call fcn.0046a2b8
add esp, 0x18
push ebx
inc esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x45eea0
push edi
call fcn.004690f0
push ebp
call fcn.004690f0
mov eax, ebx
add esp, 8
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x45ef10
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [esp + 0x468]
call fcn.0041c510
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x18]
mov edi, 8
cmp dword [esi + 0x1c], edi
jb 0x45ef43
mov ecx, dword [esi + 8]
jmp 0x45ef46
lea ecx, [esi + 8]
push eax
push 0
push ecx
lea ecx, [esp + 0x46c]
call fcn.0042c570
cmp eax, 0xffffffff
je 0x45f133
cmp byte [esi + 0xaa], 0
je 0x45f133
mov ebp, esi
mov esi, dword [esp + 0x18]
xor edi, edi
jmp 0x45ead0
mov edx, dword [esp + 0x514]
mov eax, dword [esp + 0x14]
push esi
push edx
push eax
call fcn.0046a38b
add esp, 0xc
cmp dword [esp + 0x4b0], ebx
jb 0x45efa8
mov ecx, dword [esp + 0x49c]
push ecx
call fcn.004699ce
add esp, 4
xor edx, edx
mov esi, 7
mov dword [esp + 0x4b0], esi
mov dword [esp + 0x4ac], edi
mov word [esp + 0x49c], dx
cmp dword [esp + 0x494], ebx
jb 0x45efde
mov eax, dword [esp + 0x480]
push eax
call fcn.004699ce
add esp, 4
xor ecx, ecx
cmp dword [esp + 0x478], ebx
mov dword [esp + 0x490], edi
jmp 0x45f19a
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x514]
mov edx, dword [esp + 0x14]
push eax
push ecx
push edx
call fcn.0046a38b
add esp, 0xc
cmp dword [esp + 0x4b0], ebx
jb 0x45f026
mov eax, dword [esp + 0x49c]
push eax
call fcn.004699ce
add esp, 4
xor edi, edi
xor ecx, ecx
mov esi, 7
mov dword [esp + 0x4b0], esi
mov dword [esp + 0x4ac], edi
mov word [esp + 0x49c], cx
cmp dword [esp + 0x494], ebx
jb 0x45f05e
mov edx, dword [esp + 0x480]
push edx
call fcn.004699ce
add esp, 4
xor eax, eax
mov dword [esp + 0x494], esi
mov dword [esp + 0x490], edi
mov word [esp + 0x480], ax
cmp dword [esp + 0x478], ebx
jb 0x45f1bb
mov ecx, dword [esp + 0x464]
push ecx
jmp 0x45f1b3
push edi
call fcn.004690f0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x518]
mov ecx, dword [esp + 0x18]
push edx
push eax
push ecx
call fcn.0046a38b
add esp, 0x10
cmp dword [esp + 0x4b0], ebx
jb 0x45f0c9
mov edx, dword [esp + 0x49c]
push edx
call fcn.004699ce
add esp, 4
xor esi, esi
xor eax, eax
mov edi, 7
mov dword [esp + 0x4b0], edi
mov dword [esp + 0x4ac], esi
mov word [esp + 0x49c], ax
cmp dword [esp + 0x494], ebx
jb 0x45f101
mov ecx, dword [esp + 0x480]
push ecx
call fcn.004699ce
add esp, 4
xor edx, edx
mov dword [esp + 0x494], edi
mov dword [esp + 0x490], esi
mov word [esp + 0x480], dx
cmp dword [esp + 0x478], ebx
jb 0x45f1bb
mov eax, dword [esp + 0x464]
push eax
jmp 0x45f1b3
cmp dword [esp + 0x4b0], edi
jb 0x45f14c
mov ecx, dword [esp + 0x49c]
push ecx
call fcn.004699ce
add esp, 4
xor edx, edx
mov esi, 7
mov dword [esp + 0x4b0], esi
mov dword [esp + 0x4ac], 0
mov word [esp + 0x49c], dx
cmp dword [esp + 0x494], edi
jb 0x45f186
mov eax, dword [esp + 0x480]
push eax
call fcn.004699ce
add esp, 4
xor ecx, ecx
cmp dword [esp + 0x478], edi
mov dword [esp + 0x490], 0
mov word [esp + 0x480], cx
mov dword [esp + 0x494], esi
jb 0x45f1bb
mov edx, dword [esp + 0x464]
push edx
call fcn.004699ce
add esp, 4
mov ecx, dword [esp + 0x4fc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x4e4]
xor ecx, esp
call fcn.004690b5
add esp, 0x4f4
ret 0xc